Commit e9404e5f authored by Damien George's avatar Damien George

tests: Improve coverage of array, range, dict, slice, exc, unicode.

parent 453c2e8f
...@@ -21,6 +21,10 @@ print(array.array('i')) ...@@ -21,6 +21,10 @@ print(array.array('i'))
print(bool(array.array('i'))) print(bool(array.array('i')))
print(bool(array.array('i', [1]))) print(bool(array.array('i', [1])))
# containment, with incorrect type
print('12' in array.array('B', b'12'))
print([] in array.array('B', b'12'))
# bad typecode # bad typecode
try: try:
array.array('X') array.array('X')
......
...@@ -50,3 +50,9 @@ try: ...@@ -50,3 +50,9 @@ try:
range(1)[0] = 1 range(1)[0] = 1
except TypeError: except TypeError:
print("TypeError") print("TypeError")
# bad attr (can't store)
try:
range(4).start = 0
except AttributeError:
print('AttributeError')
...@@ -16,3 +16,27 @@ while x < 100: ...@@ -16,3 +16,27 @@ while x < 100:
d[x] = x d[x] = x
x += 1 x += 1
print(d[50]) print(d[50])
# equality operator on dicts of different size
print({} == {1:1})
# equality operator on dicts of same size but with different keys
print({1:1} == {2:1})
# value not found
try:
{}[0]
except KeyError:
print('KeyError')
# unsupported unary op
try:
+{}
except TypeError:
print('TypeError')
# unsupported binary op
try:
{} + {}
except TypeError:
print('TypeError')
...@@ -3,4 +3,19 @@ for m in d.items, d.values, d.keys: ...@@ -3,4 +3,19 @@ for m in d.items, d.values, d.keys:
print(m()) print(m())
print(list(m())) print(list(m()))
# print a view with more than one item
print({1:1, 2:1}.values())
# unsupported binary op on a dict values view
try:
{1:1}.values() + 1
except TypeError:
print('TypeError')
# unsupported binary op on a dict keys view
try:
{1:1}.keys() + 1
except TypeError:
print('TypeError')
# set operations still to come # set operations still to come
...@@ -38,3 +38,8 @@ print(-123 // 7, -123 % 7) ...@@ -38,3 +38,8 @@ print(-123 // 7, -123 % 7)
print(123 // -7, 123 % -7) print(123 // -7, 123 % -7)
print(-123 // -7, -123 % -7) print(-123 // -7, -123 % -7)
# zero big-num on rhs
print(1 + ((1 << 65) - (1 << 65)))
# negative big-num on rhs
print(1 + (-(1 << 65)))
...@@ -14,3 +14,12 @@ except: ...@@ -14,3 +14,12 @@ except:
A()[1:2:3] A()[1:2:3]
# test storing to attr (shouldn't be allowed)
class B:
def __getitem__(self, idx):
try:
idx.start = 0
except AttributeError:
print('AttributeError')
B()[:]
...@@ -9,6 +9,12 @@ try: ...@@ -9,6 +9,12 @@ try:
except SyntaxError: except SyntaxError:
print('SyntaxError') print('SyntaxError')
# store to exception attribute is not allowed
try:
ValueError().x = 0
except AttributeError:
print('AttributeError')
# array deletion not implemented # array deletion not implemented
try: try:
a = array.array('b', (1, 2, 3)) a = array.array('b', (1, 2, 3))
...@@ -23,6 +29,12 @@ try: ...@@ -23,6 +29,12 @@ try:
except NotImplementedError: except NotImplementedError:
print('NotImplementedError') print('NotImplementedError')
# containment, looking for integer not implemented
try:
print(1 in array.array('B', b'12'))
except NotImplementedError:
print('NotImplementedError')
# should raise type error # should raise type error
try: try:
print(set('12') >= '1') print(set('12') >= '1')
...@@ -65,6 +77,12 @@ try: ...@@ -65,6 +77,12 @@ try:
except NotImplementedError: except NotImplementedError:
print('NotImplementedError') print('NotImplementedError')
# str subscr with step!=1 not implemented
try:
print('abc'[1:2:3])
except NotImplementedError:
print('NotImplementedError')
# bytes(...) with keywords not implemented # bytes(...) with keywords not implemented
try: try:
bytes('abc', encoding='utf8') bytes('abc', encoding='utf8')
......
SyntaxError SyntaxError
AttributeError
TypeError TypeError
NotImplementedError NotImplementedError
NotImplementedError
True True
True True
TypeError, ValueError TypeError, ValueError
...@@ -13,5 +15,6 @@ NotImplementedError ...@@ -13,5 +15,6 @@ NotImplementedError
NotImplementedError NotImplementedError
NotImplementedError NotImplementedError
NotImplementedError NotImplementedError
NotImplementedError
b'\x01\x02' b'\x01\x02'
b'\x01\x00' b'\x01\x00'
...@@ -18,8 +18,9 @@ enc = s.encode() ...@@ -18,8 +18,9 @@ enc = s.encode()
print(enc, enc.decode() == s) print(enc, enc.decode() == s)
# printing of unicode chars using repr # printing of unicode chars using repr
# TODO we don't do this correctly # NOTE: for some characters (eg \u10ff) we differ to CPython
#print(repr(s)) print(repr('a\uffff'))
print(repr('a\U0001ffff'))
# test invalid escape code # test invalid escape code
try: try:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment