1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
from rpython.flowspace.argument import Signature, CallSpec
class TestSignature(object):
def test_helpers(self):
sig = Signature(["a", "b", "c"], None, None)
assert sig.num_argnames() == 3
assert not sig.has_vararg()
assert not sig.has_kwarg()
assert sig.scope_length() == 3
assert sig.getallvarnames() == ["a", "b", "c"]
sig = Signature(["a", "b", "c"], "c", None)
assert sig.num_argnames() == 3
assert sig.has_vararg()
assert not sig.has_kwarg()
assert sig.scope_length() == 4
assert sig.getallvarnames() == ["a", "b", "c", "c"]
sig = Signature(["a", "b", "c"], None, "c")
assert sig.num_argnames() == 3
assert not sig.has_vararg()
assert sig.has_kwarg()
assert sig.scope_length() == 4
assert sig.getallvarnames() == ["a", "b", "c", "c"]
sig = Signature(["a", "b", "c"], "d", "c")
assert sig.num_argnames() == 3
assert sig.has_vararg()
assert sig.has_kwarg()
assert sig.scope_length() == 5
assert sig.getallvarnames() == ["a", "b", "c", "d", "c"]
def test_eq(self):
sig1 = Signature(["a", "b", "c"], "d", "c")
sig2 = Signature(["a", "b", "c"], "d", "c")
assert sig1 == sig2
def test_find_argname(self):
sig = Signature(["a", "b", "c"], None, None)
assert sig.find_argname("a") == 0
assert sig.find_argname("b") == 1
assert sig.find_argname("c") == 2
assert sig.find_argname("d") == -1
def test_tuply(self):
sig = Signature(["a", "b", "c"], "d", "e")
x, y, z = sig
assert x == ["a", "b", "c"]
assert y == "d"
assert z == "e"
def test_flatten_CallSpec():
args = CallSpec([1, 2, 3])
assert args.flatten() == ((3, (), False), [1, 2, 3])
args = CallSpec([1])
assert args.flatten() == ((1, (), False), [1])
args = CallSpec([1, 2, 3, 4, 5])
assert args.flatten() == ((5, (), False), [1, 2, 3, 4, 5])
args = CallSpec([1], {'c': 3, 'b': 2})
assert args.flatten() == ((1, ('b', 'c'), False), [1, 2, 3])
args = CallSpec([1], {'c': 5})
assert args.flatten() == ((1, ('c', ), False), [1, 5])
args = CallSpec([1], {'c': 5, 'd': 7})
assert args.flatten() == ((1, ('c', 'd'), False), [1, 5, 7])
args = CallSpec([1, 2, 3, 4, 5], {'e': 5, 'd': 7})
assert args.flatten() == ((5, ('d', 'e'), False), [1, 2, 3, 4, 5, 7, 5])
|