summaryrefslogtreecommitdiffstatshomepage
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/basics/bytes_compare.py2
-rw-r--r--tests/basics/bytes_compare2.py7
-rw-r--r--tests/basics/int-big-and.py8
-rw-r--r--tests/basics/int-long.py12
-rw-r--r--tests/basics/string_rsplit.py42
-rw-r--r--tests/basics/string_startswith.py6
-rw-r--r--tests/basics/struct1.py5
-rw-r--r--tests/basics/subclass-native2-list.py26
-rw-r--r--tests/basics/subclass-native2-tuple.py21
-rw-r--r--tests/basics/subclass-native2.py37
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))