| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- # tests for things that are not implemented, or have non-compliant behaviour
- try:
- import array
- import ustruct
- except ImportError:
- print("SKIP")
- raise SystemExit
- # when super can't find self
- try:
- exec('def f(): super()')
- except SyntaxError:
- print('SyntaxError')
- # store to exception attribute is not allowed
- try:
- ValueError().x = 0
- except AttributeError:
- print('AttributeError')
- # array deletion not implemented
- try:
- a = array.array('b', (1, 2, 3))
- del a[1]
- except TypeError:
- print('TypeError')
- # slice with step!=1 not implemented
- try:
- a = array.array('b', (1, 2, 3))
- print(a[3:2:2])
- except NotImplementedError:
- print('NotImplementedError')
- # containment, looking for integer not implemented
- try:
- print(1 in array.array('B', b'12'))
- except NotImplementedError:
- print('NotImplementedError')
- # uPy raises TypeError, shold be ValueError
- try:
- '%c' % b'\x01\x02'
- except (TypeError, ValueError):
- print('TypeError, ValueError')
- # attributes/subscr not implemented
- try:
- print('{a[0]}'.format(a=[1, 2]))
- except NotImplementedError:
- print('NotImplementedError')
- # str(...) with keywords not implemented
- try:
- str(b'abc', encoding='utf8')
- except NotImplementedError:
- print('NotImplementedError')
- # str.rsplit(None, n) not implemented
- try:
- 'a a a'.rsplit(None, 1)
- except NotImplementedError:
- print('NotImplementedError')
- # str.endswith(s, start) not implemented
- try:
- 'abc'.endswith('c', 1)
- except 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
- try:
- bytes('abc', encoding='utf8')
- except NotImplementedError:
- print('NotImplementedError')
- # bytes subscr with step!=1 not implemented
- try:
- b'123'[0:3:2]
- except NotImplementedError:
- print('NotImplementedError')
- # tuple load with step!=1 not implemented
- try:
- ()[2:3:4]
- except NotImplementedError:
- print('NotImplementedError')
- # list store with step!=1 not implemented
- try:
- [][2:3:4] = []
- except NotImplementedError:
- print('NotImplementedError')
- # list delete with step!=1 not implemented
- try:
- del [][2:3:4]
- except NotImplementedError:
- print('NotImplementedError')
- # struct pack with too many args, not checked by uPy
- print(ustruct.pack('bb', 1, 2, 3))
- # struct pack with too few args, not checked by uPy
- print(ustruct.pack('bb', 1))
- # array slice assignment with unsupported RHS
- try:
- bytearray(4)[0:1] = [1, 2]
- except NotImplementedError:
- print('NotImplementedError')
- # can't assign attributes to a function
- def f():
- pass
- try:
- f.x = 1
- except AttributeError:
- print('AttributeError')
- # can't call a function type (ie make new instances of a function)
- try:
- type(f)()
- except TypeError:
- print('TypeError')
- # test when object explicitly listed at not-last position in parent tuple
- # this is not compliant with CPython because of illegal MRO
- class A:
- def foo(self):
- print('A.foo')
- class B(object, A):
- pass
- B().foo()
- # can't assign property (or other special accessors) to already-subclassed class
- class A:
- pass
- class B(A):
- pass
- try:
- A.bar = property()
- except AttributeError:
- print('AttributeError')
|