update swig on windows
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
import python_richcompare
|
||||
import sys
|
||||
|
||||
def check_unorderable_types(exception):
|
||||
# if str(exception).find("unorderable types") == -1:
|
||||
# raise RuntimeError("A TypeError 'unorderable types' exception was expected"), None, sys.exc_info()[2]
|
||||
pass # Exception message seems to vary from one version of Python to another
|
||||
|
||||
base1 = python_richcompare.BaseClass(1)
|
||||
base2 = python_richcompare.BaseClass(2)
|
||||
base3 = python_richcompare.BaseClass(3)
|
||||
a1 = python_richcompare.SubClassA(1)
|
||||
a2 = python_richcompare.SubClassA(2)
|
||||
a3 = python_richcompare.SubClassA(3)
|
||||
b1 = python_richcompare.SubClassB(1)
|
||||
b2 = python_richcompare.SubClassB(2)
|
||||
b3 = python_richcompare.SubClassB(3)
|
||||
|
||||
# Check == and != within a single type
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
if not (base1 == base1):
|
||||
raise RuntimeError("Object not == to itself")
|
||||
|
||||
if not (base1 == python_richcompare.BaseClass(1)):
|
||||
raise RuntimeError("Object not == to an equivalent object")
|
||||
|
||||
if (base1 == base2):
|
||||
raise RuntimeError(
|
||||
"Comparing non-equivalent objects of the same type, == returned True")
|
||||
|
||||
if (base1 != base1):
|
||||
raise RuntimeError("Object is != itself")
|
||||
|
||||
if (base1 != python_richcompare.BaseClass(1)):
|
||||
raise RuntimeError("Object is != an equivalent object")
|
||||
|
||||
if not (base1 != base2):
|
||||
raise RuntimeError(
|
||||
"Comparing non-equivalent objects of the same type, != returned False")
|
||||
|
||||
|
||||
# Check redefined operator== in SubClassA
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
if (a2 == base2):
|
||||
raise RuntimeError("Redefined operator== in SubClassA failed")
|
||||
|
||||
if (a2 == b2):
|
||||
raise RuntimeError("Redefined operator== in SubClassA failed")
|
||||
|
||||
if not (a1 == a2):
|
||||
raise RuntimeError("Redefined operator== in SubClassA failed")
|
||||
|
||||
# Check up-casting of subclasses
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
if (base2 != a2):
|
||||
raise RuntimeError(
|
||||
"Comparing equivalent base and subclass instances, != returned True")
|
||||
|
||||
if (a2 == base2):
|
||||
raise RuntimeError(
|
||||
"Comparing non-equivalent base and subclass instances, == returned True")
|
||||
|
||||
if (a1 == b1):
|
||||
raise RuntimeError(
|
||||
"Comparing equivalent instances of different subclasses, == returned True")
|
||||
|
||||
if (b1 == a1):
|
||||
raise RuntimeError(
|
||||
"Comparing equivalent instances of different subclasses, == returned True")
|
||||
|
||||
# Check comparison to other objects
|
||||
#-------------------------------------------------------------------------------
|
||||
if (base1 == 42) :
|
||||
raise RuntimeError("Comparing class to incompatible type, == returned True")
|
||||
if not (base1 != 42) :
|
||||
raise RuntimeError("Comparing class to incompatible type, != returned False")
|
||||
|
||||
if (a1 == 42) :
|
||||
raise RuntimeError("Comparing class (with overloaded operator ==) to incompatible type, == returned True")
|
||||
if not (a1 != 42) :
|
||||
raise RuntimeError("Comparing class (with overloaded operator ==) to incompatible type, != returned False")
|
||||
|
||||
# Check inequalities
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
if (a2 > b2):
|
||||
raise RuntimeError("operator> failed")
|
||||
|
||||
if (a2 < b2):
|
||||
raise RuntimeError("operator< failed")
|
||||
|
||||
if not (a2 >= b2):
|
||||
raise RuntimeError("operator>= failed")
|
||||
|
||||
if not (a2 <= b2):
|
||||
raise RuntimeError("operator<= failed")
|
||||
|
||||
# Check inequalities to other objects
|
||||
#-------------------------------------------------------------------------------
|
||||
if sys.version_info[0:2] < (3, 0):
|
||||
if (base1 < 42):
|
||||
raise RuntimeError("Comparing class to incompatible type, < returned True")
|
||||
if (base1 <= 42):
|
||||
raise RuntimeError("Comparing class to incompatible type, <= returned True")
|
||||
if not (base1 > 42):
|
||||
raise RuntimeError("Comparing class to incompatible type, > returned False")
|
||||
if not (base1 >= 42):
|
||||
raise RuntimeError("Comparing class to incompatible type, >= returned False")
|
||||
else:
|
||||
# Python 3 throws: TypeError: unorderable types
|
||||
try:
|
||||
res = base1 < 42
|
||||
raise RuntimeError("Failed to throw")
|
||||
except TypeError,e:
|
||||
check_unorderable_types(e)
|
||||
try:
|
||||
res = base1 <= 42
|
||||
raise RuntimeError("Failed to throw")
|
||||
except TypeError,e:
|
||||
check_unorderable_types(e)
|
||||
try:
|
||||
res = base1 > 42
|
||||
raise RuntimeError("Failed to throw")
|
||||
except TypeError,e:
|
||||
check_unorderable_types(e)
|
||||
try:
|
||||
res = base1 >= 42
|
||||
raise RuntimeError("Failed to throw")
|
||||
except TypeError,e:
|
||||
check_unorderable_types(e)
|
||||
|
||||
# Check inequalities used for ordering
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
x = sorted([a2, a3, a1])
|
||||
|
||||
if not (x[0] is a1):
|
||||
raise RuntimeError("Ordering failed")
|
||||
|
||||
if not (x[1] is a2):
|
||||
raise RuntimeError("Ordering failed")
|
||||
|
||||
if not (x[2] is a3):
|
||||
raise RuntimeError("Ordering failed")
|
||||
|
||||
x = sorted([base2, a3, b1])
|
||||
|
||||
if not (x[0] is b1):
|
||||
raise RuntimeError("Ordering failed")
|
||||
|
||||
if not (x[1] is base2):
|
||||
raise RuntimeError("Ordering failed")
|
||||
|
||||
if not (x[2] is a3):
|
||||
raise RuntimeError("Ordering failed")
|
||||
Reference in New Issue
Block a user