diff options
| author | Glenn Ruben Bakke <glennbakke@gmail.com> | 2017-02-07 22:27:32 +0100 |
|---|---|---|
| committer | Glenn Ruben Bakke <glennbakke@gmail.com> | 2017-02-07 22:27:32 +0100 |
| commit | 122d0430db4d103dfb8bc9958b7df4d9803038c8 (patch) | |
| tree | 856ac0d4950b0154cc6aae8cf022fd29b2402073 /tests/basics | |
| parent | 723943abde3e9de5e14ee40df5e0d5fe25352c97 (diff) | |
| parent | 4cf7fd151e98a3d842eb5c9428545cb67ddd57ee (diff) | |
Merge branch 'nrf52' into nrf5_no_sdk
Diffstat (limited to 'tests/basics')
| -rw-r--r-- | tests/basics/builtin_pow.py | 6 | ||||
| -rw-r--r-- | tests/basics/builtin_pow3.py | 39 | ||||
| -rw-r--r-- | tests/basics/set_binop.py | 19 | ||||
| -rw-r--r-- | tests/basics/string_format_modulo.py | 16 | ||||
| -rw-r--r-- | tests/basics/zip.py | 10 |
5 files changed, 84 insertions, 6 deletions
diff --git a/tests/basics/builtin_pow.py b/tests/basics/builtin_pow.py index a19ab8c84..5012a76be 100644 --- a/tests/basics/builtin_pow.py +++ b/tests/basics/builtin_pow.py @@ -1,11 +1,7 @@ # test builtin pow() with integral values - # 2 arg version + print(pow(0, 1)) print(pow(1, 0)) print(pow(-2, 3)) print(pow(3, 8)) - -# 3 arg version -print(pow(3, 4, 7)) - diff --git a/tests/basics/builtin_pow3.py b/tests/basics/builtin_pow3.py new file mode 100644 index 000000000..35e143a38 --- /dev/null +++ b/tests/basics/builtin_pow3.py @@ -0,0 +1,39 @@ +# test builtin pow() with integral values +# 3 arg version + +try: + print(pow(3, 4, 7)) +except NotImplementedError: + import sys + print("SKIP") + sys.exit() + +print(pow(555557, 1000002, 1000003)) + +# 3 arg pow is defined to only work on integers +try: + print(pow("x", 5, 6)) +except TypeError: + print("TypeError expected") + +try: + print(pow(4, "y", 6)) +except TypeError: + print("TypeError expected") + +try: + print(pow(4, 5, "z")) +except TypeError: + print("TypeError expected") + +# Tests for 3 arg pow with large values + +# This value happens to be prime +x = 0xd48a1e2a099b1395895527112937a391d02d4a208bce5d74b281cf35a57362502726f79a632f063a83c0eba66196712d963aa7279ab8a504110a668c0fc38a7983c51e6ee7a85cae87097686ccdc359ee4bbf2c583bce524e3f7836bded1c771a4efcb25c09460a862fc98e18f7303df46aaeb34da46b0c4d61d5cd78350f3edb60e6bc4befa712a849 +y = 0x3accf60bb1a5365e4250d1588eb0fe6cd81ad495e9063f90880229f2a625e98c59387238670936afb2cafc5b79448e4414d6cd5e9901aa845aa122db58ddd7b9f2b17414600a18c47494ed1f3d49d005a5 + +print(hex(pow(2, 200, x))) # Should not overflow, just 1 << 200 +print(hex(pow(2, x-1, x))) # Should be 1, since x is prime +print(hex(pow(y, x-1, x))) # Should be 1, since x is prime +print(hex(pow(y, y-1, x))) # Should be a 'big value' +print(hex(pow(y, y-1, y))) # Should be a 'big value' diff --git a/tests/basics/set_binop.py b/tests/basics/set_binop.py index a3657d84b..7848920b6 100644 --- a/tests/basics/set_binop.py +++ b/tests/basics/set_binop.py @@ -29,6 +29,25 @@ for s in sets: print(set('abc') == 1) +# make sure inplace operators modify the set + +s1 = s2 = set('abc') +s1 |= set('ad') +print(s1 is s2, len(s1)) + +s1 = s2 = set('abc') +s1 ^= set('ad') +print(s1 is s2, len(s1)) + +s1 = s2 = set('abc') +s1 &= set('ad') +print(s1 is s2, len(s1)) + +s1 = s2 = set('abc') +s1 -= set('ad') +print(s1 is s2, len(s1)) + +# unsupported operator try: set('abc') * 2 except TypeError: diff --git a/tests/basics/string_format_modulo.py b/tests/basics/string_format_modulo.py index 2e4909220..f00502457 100644 --- a/tests/basics/string_format_modulo.py +++ b/tests/basics/string_format_modulo.py @@ -66,6 +66,11 @@ print(">%-08.4d<" % -12) print(">%-+08.4d<" % -12) print(">%-+08.4d<" % 12) +# Should be able to print dicts; in this case they aren't used +# to lookup keywords in formats like %(foo)s +print('%s' % {}) +print('%s' % ({},)) + # Cases when "*" used and there's not enough values total try: print("%*s" % 5) @@ -77,6 +82,7 @@ except TypeError: print("TypeError") print("%(foo)s" % {"foo": "bar", "baz": False}) +print("%s %(foo)s %(foo)s" % {"foo": 1}) try: print("%(foo)s" % {}) except KeyError: @@ -87,6 +93,16 @@ try: except TypeError: print("TypeError") +# When using %(foo)s format the single argument must be a dict +try: + '%(foo)s' % 1 +except TypeError: + print('TypeError') +try: + '%(foo)s' % ({},) +except TypeError: + print('TypeError') + try: '%(a' % {'a':1} except ValueError: diff --git a/tests/basics/zip.py b/tests/basics/zip.py index c0109094f..958addb7a 100644 --- a/tests/basics/zip.py +++ b/tests/basics/zip.py @@ -1,2 +1,10 @@ +try: + zip + set +except NameError: + print("SKIP") + import sys + sys.exit() + print(list(zip())) -print(list(zip([1], {2,3}))) +print(list(zip([1], set([2, 3])))) |
