diff options
author | laurentlb <laurentlb@google.com> | 2018-03-28 13:27:12 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-03-28 13:28:34 -0700 |
commit | ab0ada9ebbc63785fe6ceb80a5be2a44bee6eef5 (patch) | |
tree | d491c813c15255af44017d407e1c80d2ced7cbd8 /src/test/skylark/testdata | |
parent | c45e182028c75bb78b7a12cb5cb3ca93c6b82c4a (diff) |
Move more tests to test suite (int function, list index, list mutation)
RELNOTES: None.
PiperOrigin-RevId: 190823566
Diffstat (limited to 'src/test/skylark/testdata')
-rw-r--r-- | src/test/skylark/testdata/int_function.sky | 95 | ||||
-rw-r--r-- | src/test/skylark/testdata/list_mutation.sky | 87 | ||||
-rw-r--r-- | src/test/skylark/testdata/list_slices.sky | 22 | ||||
-rw-r--r-- | src/test/skylark/testdata/range.sky | 18 | ||||
-rw-r--r-- | src/test/skylark/testdata/reversed.sky | 30 |
5 files changed, 252 insertions, 0 deletions
diff --git a/src/test/skylark/testdata/int_function.sky b/src/test/skylark/testdata/int_function.sky new file mode 100644 index 0000000000..7d6a382a65 --- /dev/null +++ b/src/test/skylark/testdata/int_function.sky @@ -0,0 +1,95 @@ +# int +assert_eq(int(0), 0) +assert_eq(int(42), 42) +assert_eq(int(-1), -1) +assert_eq(int(2147483647), 2147483647) +# -2147483648 is not actually a valid int literal even though it's a +# valid int value, hence the -1 expression. +assert_eq(int(-2147483647 - 1), -2147483647 - 1) +assert_eq(int(True), 1) +assert_eq(int(False), 0) + +--- +int(None) ### None is not of type string or int or bool +--- +# This case is allowed in Python but not Skylark +int() ### insufficient arguments received +--- + +# string, no base +# Includes same numbers as integer test cases above. +assert_eq(int('0'), 0) +assert_eq(int('42'), 42) +assert_eq(int('-1'), -1) +assert_eq(int('2147483647'), 2147483647) +assert_eq(int('-2147483648'), -2147483647 - 1) +# Leading zero allowed when not using base = 0. +assert_eq(int('016'), 16) +# Leading plus sign allowed for strings. +assert_eq(int('+42'), 42) + +--- +int(2147483648) ### invalid base-10 integer constant: 2147483648 +--- +int(-2147483649) ### invalid base-10 integer constant: 2147483649 +--- +int('') ### cannot be empty +--- +# Surrounding whitespace is not allowed +int(' 42 ') ### invalid literal for int() with base 10: " 42 " +--- +int('-') ### invalid literal for int() with base 10: "-" +--- +int('0x') ### invalid literal for int() with base 10: "0x" +--- +int('1.5') ### invalid literal for int() with base 10: "1.5" +--- +int('ab') ### invalid literal for int() with base 10: "ab" +--- + +assert_eq(int('11', 2), 3) +assert_eq(int('-11', 2), -3) +assert_eq(int('11', 9), 10) +assert_eq(int('AF', 16), 175) +assert_eq(int('11', 36), 37) +assert_eq(int('az', 36), 395) +assert_eq(int('11', 10), 11) +assert_eq(int('11', 0), 11) +assert_eq(int('016', 8), 14) +assert_eq(int('016', 16), 22) + +--- +# invalid base +int('016', 0) ### cannot infer base for int() when value begins with a 0: "016" +--- +int('123', 3) ### invalid literal for int() with base 3: "123" +--- +int('FF', 15) ### invalid literal for int() with base 15: "FF" +--- +int('123', -1) ### int() base must be >= 2 and <= 36 +--- +int('123', 1) ### int() base must be >= 2 and <= 36 +--- +int('123', 37) ### int() base must be >= 2 and <= 36 +--- +int('123', 'x') ### base must be an integer (got 'string') +--- + +# base with prefix +assert_eq(int('0b11', 0), 3) +assert_eq(int('-0b11', 0), -3) +assert_eq(int('+0b11', 0), 3) +assert_eq(int('0B11', 2), 3) +assert_eq(int('0o11', 0), 9) +assert_eq(int('0O11', 8), 9) +assert_eq(int('0XFF', 0), 255) +assert_eq(int('0xFF', 16), 255) + +--- +int('0xFF', 8) ### invalid literal for int() with base 8: "0xFF" +--- +int(True, 2) ### int() can't convert non-string with explicit base +--- +int(1, 2) ### int() can't convert non-string with explicit base +--- +int(True, 10) ### int() can't convert non-string with explicit base diff --git a/src/test/skylark/testdata/list_mutation.sky b/src/test/skylark/testdata/list_mutation.sky new file mode 100644 index 0000000000..24d5425952 --- /dev/null +++ b/src/test/skylark/testdata/list_mutation.sky @@ -0,0 +1,87 @@ +# insert + +foo = ['a', 'b'] + +foo.insert(0, 'c') +assert_eq(foo, ['c', 'a', 'b']) + +foo.insert(1, 'd') +assert_eq(foo, ['c', 'd', 'a', 'b']) + +foo.insert(4, 'e') +assert_eq(foo, ['c', 'd', 'a', 'b', 'e']) + +foo.insert(-10, 'f') +assert_eq(foo, ['f', 'c', 'd', 'a', 'b', 'e']) + +foo.insert(10, 'g') +assert_eq(foo, ['f', 'c', 'd', 'a', 'b', 'e', 'g']) + +--- +(1, 2).insert(3) ### type 'tuple' has no method insert\(int\) +--- + +# append + +foo = ['a', 'b'] +foo.append('c') +assert_eq(foo, ['a', 'b', 'c']) +foo.append('d') +assert_eq(foo, ['a', 'b', 'c', 'd']) + +--- +(1, 2).append(3) ### type 'tuple' has no method append\(int\) +--- + +# extend + +foo = ['a', 'b'] +foo.extend(['c', 'd']) +foo.extend(('e', 'f')) +assert_eq(foo, ['a', 'b', 'c', 'd', 'e', 'f']) + +--- +(1, 2).extend([3, 4]) ### type 'tuple' has no method extend(list) +--- +[1, 2].extend(3) ### argument 'items' has type 'int', but should be 'sequence' + +# remove + +foo = ['a', 'b', 'c', 'b'] + +foo.remove('b') +assert_eq(foo, ['a', 'c', 'b']) + +foo.remove('c') +assert_eq(foo, ['a', 'b']) + +foo.remove('a') +assert_eq(foo, ['b']) + +foo.remove('b') +assert_eq(foo, []) + +--- +(1, 2).remove(3) ### type 'tuple' has no method remove\(int\) +--- +[1, 2].remove(3) ### item 3 not found in list +--- + +# pop + +li1 = [2, 3, 4] +assert_eq(li1.pop(), 4) +assert_eq(li1, [2, 3]) + +li2 = [2, 3, 4] +assert_eq(li2.pop(-2), 3) +assert_eq(li2, [2, 4]) + +li3 = [2, 3, 4] +assert_eq(li3.pop(1), 3) +assert_eq(li3, [2, 4]) + +--- +[1, 2].pop(3) ### index out of range (index is 3, but sequence has 2 elements) +--- +(1, 2).pop() ### type 'tuple' has no method pop() diff --git a/src/test/skylark/testdata/list_slices.sky b/src/test/skylark/testdata/list_slices.sky index 3ec2999cba..b79661e23c 100644 --- a/src/test/skylark/testdata/list_slices.sky +++ b/src/test/skylark/testdata/list_slices.sky @@ -46,6 +46,16 @@ assert_eq((1, 2, 3, 4, 5)[3:1:-1], (4, 3)) assert_eq((1, 2, 3, 4, 5)[::-2], (5, 3, 1)) assert_eq((1, 2, 3, 4, 5)[::-10], (5,)) +# index +assert_eq(['a', 'b', 'c', 'd'][0], 'a') +assert_eq(['a', 'b', 'c', 'd'][1], 'b') +assert_eq(['a', 'b', 'c', 'd'][-1], 'd') +assert_eq(['a', 'b', 'c', 'd'][-2], 'c') +assert_eq([0, 1, 2][-3], 0) +assert_eq([0, 1, 2][-2], 1) +assert_eq([0, 1, 2][-1], 2) +assert_eq([0, 1, 2][0], 0) + --- '123'['a'::] ### slice start must be an integer, not 'a' --- @@ -60,3 +70,15 @@ assert_eq((1, 2, 3, 4, 5)[::-10], (5,)) [1, 2, 3][:3:0] ### slice step cannot be zero --- [1, 2, 3][1:3:0] ### slice step cannot be zero +--- +[[1], [2]]['a'] ### indices must be integers, not string +--- +[0, 1, 2][3] ### index out of range (index is 3, but sequence has 3 elements) +--- +[0, 1, 2][-4] ### index out of range (index is -4, but sequence has 3 elements) +--- +[0][-2] ### index out of range (index is -2, but sequence has 1 elements) +--- +[0][1] ### index out of range (index is 1, but sequence has 1 elements) +--- +[][1] ### index out of range (index is 1, but sequence has 0 elements) diff --git a/src/test/skylark/testdata/range.sky b/src/test/skylark/testdata/range.sky new file mode 100644 index 0000000000..75d9be441b --- /dev/null +++ b/src/test/skylark/testdata/range.sky @@ -0,0 +1,18 @@ +assert_eq(range(5), [0, 1, 2, 3, 4]) +assert_eq(range(0), []) +assert_eq(range(1), [0]) +assert_eq(range(-2), []) +assert_eq(range(-3, 2), [-3, -2, -1, 0, 1]) +assert_eq(range(3, 2), []) +assert_eq(range(3, 3), []) +assert_eq(range(3, 4), [3]) +assert_eq(range(3, 5), [3, 4]) +assert_eq(range(-3, 5, 2), [-3, -1, 1, 3]) +assert_eq(range(-3, 6, 2), [-3, -1, 1, 3, 5]) +assert_eq(range(5, 0, -1), [5, 4, 3, 2, 1]) +assert_eq(range(5, 0, -10), [5]) +assert_eq(range(0, -3, -2), [0, -2]) + +--- +range(2, 3, 0) ### step cannot be 0 + diff --git a/src/test/skylark/testdata/reversed.sky b/src/test/skylark/testdata/reversed.sky new file mode 100644 index 0000000000..91ce565687 --- /dev/null +++ b/src/test/skylark/testdata/reversed.sky @@ -0,0 +1,30 @@ +# lists + +assert_eq(reversed(''), []) +assert_eq(reversed('a'), ['a']) +assert_eq(reversed('abc'), ['c', 'b', 'a']) +assert_eq(reversed('__test '), [' ', ' ', 't', 's', 'e', 't', '_', '_']) +assert_eq(reversed('bbb'), ['b', 'b', 'b']) + +--- +reversed(None) ### type 'NoneType' is not iterable +--- +reversed(1) ### type 'int' is not iterable +--- +reversed({1: 3}) ### Argument to reversed() must be a sequence, not a dictionary +--- + +x = ['a', 'b'] +y = reversed(x) +y.append('c') +assert_eq(y, ['b', 'a', 'c']) +assert_eq(x, ['a', 'b']) + +def reverse_equivalence(inp): + assert_eq(reversed(inp), inp[::-1]) + assert_eq(reversed(reversed(inp)), inp) + +reverse_equivalence([]) +reverse_equivalence([1]) +reverse_equivalence(["a", "b"]) + |