diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/basics/bytes_compare.py | 2 | ||||
-rw-r--r-- | tests/basics/bytes_compare2.py | 7 | ||||
-rw-r--r-- | tests/basics/int-big-and.py | 8 | ||||
-rw-r--r-- | tests/basics/int-long.py | 12 | ||||
-rw-r--r-- | tests/basics/string_rsplit.py | 42 | ||||
-rw-r--r-- | tests/basics/string_startswith.py | 6 | ||||
-rw-r--r-- | tests/basics/struct1.py | 5 | ||||
-rw-r--r-- | tests/basics/subclass-native2-list.py | 26 | ||||
-rw-r--r-- | tests/basics/subclass-native2-tuple.py | 21 | ||||
-rw-r--r-- | tests/basics/subclass-native2.py | 37 |
10 files changed, 127 insertions, 39 deletions
diff --git a/tests/basics/bytes_compare.py b/tests/basics/bytes_compare.py index 3804844feb..292267ba75 100644 --- a/tests/basics/bytes_compare.py +++ b/tests/basics/bytes_compare.py @@ -49,3 +49,5 @@ print(b"1" <= b"10") print(b"1" <= b"1/") print(b"10" <= b"1") print(b"1/" <= b"1") + +print(b'o' == b'\n') diff --git a/tests/basics/bytes_compare2.py b/tests/basics/bytes_compare2.py new file mode 100644 index 0000000000..769d76b119 --- /dev/null +++ b/tests/basics/bytes_compare2.py @@ -0,0 +1,7 @@ +import array + +print(b"1" == 1) +print(b"123" == bytearray(b"123")) +print(b"123" == "123") +# CPyhon gives False here +#print(b"\x01\x02\x03" == array.array("B", [1, 2, 3])) diff --git a/tests/basics/int-big-and.py b/tests/basics/int-big-and.py new file mode 100644 index 0000000000..75fbd52884 --- /dev/null +++ b/tests/basics/int-big-and.py @@ -0,0 +1,8 @@ +print(0 & (1 << 80)) +print(0 & (1 << 80) == 0) +print(bool(0 & (1 << 80))) + +#a = 0xfffffffffffffffffffffffffffff +#print(a & (1 << 80)) +#print((a & (1 << 80)) >> 80) +#print((a & (1 << 80)) >> 80 == 1) diff --git a/tests/basics/int-long.py b/tests/basics/int-long.py index 3567e08b2d..a22075d1f9 100644 --- a/tests/basics/int-long.py +++ b/tests/basics/int-long.py @@ -11,7 +11,7 @@ print(b - a) #print(a * b) print(a // b) print(a % b) -print(a & b) +print("&", a & b) print(a | b) print(a ^ b) print(a << 3) @@ -32,7 +32,7 @@ print(a) a |= b print(a) a &= b -print(a) +print("&=", a) a <<= 5 print(a) a >>= 1 @@ -44,3 +44,11 @@ b = a a += 1 print(a) print(b) + +# Bitwise ops on 64-bit + +a = 0x1ffffffffffffffff +b = 0x10000000000000000 +print("&", a & b) +print(a | b) +print(a ^ b) diff --git a/tests/basics/string_rsplit.py b/tests/basics/string_rsplit.py new file mode 100644 index 0000000000..cc6c0fd062 --- /dev/null +++ b/tests/basics/string_rsplit.py @@ -0,0 +1,42 @@ +# default separator (whitespace) +print("a b".rsplit()) +#print(" a b ".rsplit(None)) +#print(" a b ".rsplit(None, 1)) +#print(" a b ".rsplit(None, 2)) +#print(" a b c ".rsplit(None, 1)) +#print(" a b c ".rsplit(None, 0)) +#print(" a b c ".rsplit(None, -1)) + +# empty separator should fail +try: + "abc".rsplit('') +except ValueError: + print("ValueError") + +# non-empty separator +print("abc".rsplit("a")) +print("abc".rsplit("b")) +print("abc".rsplit("c")) +print("abc".rsplit("z")) +print("abc".rsplit("ab")) +print("abc".rsplit("bc")) +print("abc".rsplit("abc")) +print("abc".rsplit("abcd")) +print("abcabc".rsplit("bc")) +print("abcabc".rsplit("bc", 0)) +print("abcabc".rsplit("bc", 1)) +print("abcabc".rsplit("bc", 2)) + +print("10/11/12".rsplit("/", 1)) +print("10/11/12".rsplit("/", 2)) +print("10/11/12".rsplit("/", 3)) +print("10/11/12".rsplit("/", 4)) +print("10/11/12".rsplit("/", 5)) + +print("/*10/*11/*12/*".rsplit("/*", 1)) +print("/*10/*11/*12/*".rsplit("/*", 2)) +print("/*10/*11/*12/*".rsplit("/*", 3)) +print("/*10/*11/*12/*".rsplit("/*", 4)) +print("/*10/*11/*12/*".rsplit("/*", 5)) + +print(b"abcabc".rsplit(b"bc", 2)) diff --git a/tests/basics/string_startswith.py b/tests/basics/string_startswith.py index 99d653efbb..5cf730c03c 100644 --- a/tests/basics/string_startswith.py +++ b/tests/basics/string_startswith.py @@ -3,3 +3,9 @@ print("foobar".startswith("Foo")) print("foobar".startswith("foo1")) print("foobar".startswith("foobar")) print("foobar".startswith("")) + +print("1foobar".startswith("foo", 1)) +print("1foo".startswith("foo", 1)) +print("1foo".startswith("1foo", 1)) +print("1fo".startswith("foo", 1)) +print("1fo".startswith("foo", 10)) diff --git a/tests/basics/struct1.py b/tests/basics/struct1.py index 3a05c85f0b..b114a789b5 100644 --- a/tests/basics/struct1.py +++ b/tests/basics/struct1.py @@ -16,3 +16,8 @@ print(struct.pack(">b", 1)) print(struct.pack("<bI", -128, 256)) print(struct.pack(">bI", -128, 256)) + +print(struct.calcsize("100sI")) +print(struct.calcsize("97sI")) +print(struct.unpack("<6sH", b"foo\0\0\0\x12\x34")) +print(struct.pack("<6sH", b"foo", 10000)) diff --git a/tests/basics/subclass-native2-list.py b/tests/basics/subclass-native2-list.py new file mode 100644 index 0000000000..9ad0b77ef6 --- /dev/null +++ b/tests/basics/subclass-native2-list.py @@ -0,0 +1,26 @@ +class Base1: + def __init__(self, *args): + print("Base1.__init__", args) + +class Clist1(Base1, list): + pass + +a = Clist1() +print(len(a)) +# Not compliant - list assignment should happen in list.__init__, which is not called +# because there's Base1.__init__, but we assign in list.__new__ +#a = Clist1([1, 2, 3]) +#print(len(a)) + +print("---") + +class Clist2(list, Base1): + pass + +# Not compliant - should call list.__init__, but we don't have it +#a = Clist2() +#print(len(a)) + +# Not compliant - should call list.__init__, but we don't have it +#a = Clist2([1, 2, 3]) +#print(len(a)) diff --git a/tests/basics/subclass-native2-tuple.py b/tests/basics/subclass-native2-tuple.py new file mode 100644 index 0000000000..9eb69e1575 --- /dev/null +++ b/tests/basics/subclass-native2-tuple.py @@ -0,0 +1,21 @@ +class Base1: + def __init__(self, *args): + print("Base1.__init__", args) + +class Ctuple1(Base1, tuple): + pass + +a = Ctuple1() +print(len(a)) +a = Ctuple1([1, 2, 3]) +print(len(a)) + +print("---") + +class Ctuple2(tuple, Base1): + pass + +a = Ctuple2() +print(len(a)) +a = Ctuple2([1, 2, 3]) +print(len(a)) diff --git a/tests/basics/subclass-native2.py b/tests/basics/subclass-native2.py deleted file mode 100644 index 749bf969cf..0000000000 --- a/tests/basics/subclass-native2.py +++ /dev/null @@ -1,37 +0,0 @@ -class Base1: - def __init__(self, *args): - print("Base1.__init__",args) - -class Clist1(Base1, list): - pass - -class Ctuple1(Base1, tuple): - pass - -a = Clist1() -print(len(a)) -a = Clist1([1, 2, 3]) -print(len(a)) - -a = Ctuple1() -print(len(a)) -a = Ctuple1([1, 2, 3]) -# TODO: Faults -#print(len(a)) - -print("---") - -class Clist2(list, Base1): - pass - -class Ctuple2(tuple, Base1): - pass -a = Clist2() -print(len(a)) -a = Clist2([1, 2, 3]) -print(len(a)) - -#a = Ctuple2() -#print(len(a)) -#a = Ctuple2([1, 2, 3]) -#print(len(a)) |