summaryrefslogtreecommitdiff
path: root/tests/run/exttype_total_ordering.pyx
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run/exttype_total_ordering.pyx')
-rw-r--r--tests/run/exttype_total_ordering.pyx1020
1 files changed, 1020 insertions, 0 deletions
diff --git a/tests/run/exttype_total_ordering.pyx b/tests/run/exttype_total_ordering.pyx
new file mode 100644
index 000000000..c5f71b8b7
--- /dev/null
+++ b/tests/run/exttype_total_ordering.pyx
@@ -0,0 +1,1020 @@
+# mode: run
+# tag: total_ordering
+
+from __future__ import print_function
+
+"""
+ >>> class PyTotalOrdering:
+ ... def __init__(self, value):
+ ... self.value = value
+ ... def __eq__(self, other):
+ ... return self.value == other.value
+ ... def __lt__(self, other):
+ ... return self.value < other.value
+ >>> test_all_comp(functools.total_ordering(PyTotalOrdering))
+ True
+"""
+
+cimport cython
+import functools
+import operator
+
+COMPARISONS = [
+ # Don't test equals, the directive doesn't add that.
+ # ('==', operator.__eq__),
+ ('!=', operator.__ne__),
+ ('<', operator.__lt__),
+ ('>', operator.__gt__),
+ ('<=', operator.__le__),
+ ('>=', operator.__ge__),
+]
+
+def test_all_comp(cls):
+ """Check every combination of comparison operators."""
+ a, b, c = 10, 15, 20
+ succeeded = True
+ for comp, func in COMPARISONS:
+ for left in [cls(a), cls(b), cls(c)]:
+ for right in [ValueHolder(a), ValueHolder(b), ValueHolder(c)]:
+ expected = func(left.value, right.value)
+ try:
+ result = func(left, right)
+ # repeat to rule out deallocation bugs (and assert determinism)
+ for _ in range(10):
+ assert result == func(left, right)
+ except TypeError:
+ print("TypeError:", left.value, comp, right.value)
+ succeeded = False
+ else:
+ if expected != result:
+ print(
+ left.value, comp, right.value,
+ "expected:", expected, "got:", result
+ )
+ succeeded = False
+ return succeeded
+
+class ValueHolder:
+ """Has a value, but can't compare."""
+ def __init__(self, value):
+ self.value = value
+
+
+
+cdef class ExtTypeNoTotalOrdering:
+ """
+ >>> a = ExtTypeNoTotalOrdering(5)
+ >>> b = ExtTypeNoTotalOrdering(10)
+ >>> a == b
+ False
+ >>> a != b # Added in Python 3, but Cython backports
+ True
+ >>> a < b
+ True
+ >>> b < a
+ False
+ >>> a > b
+ False
+ >>> b > a
+ True
+ >>> import sys
+ >>> try: _ = a >= b
+ ... except TypeError:
+ ... assert sys.version_info[0] >= 3
+ ... else:
+ ... assert sys.version_info[0] < 3
+ >>> try: _ = a <= b
+ ... except TypeError:
+ ... assert sys.version_info[0] >= 3
+ ... else:
+ ... assert sys.version_info[0] < 3
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+# Every combination of methods which is valid.
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingNeGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingNeGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingNeLe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingNeLe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingNeLeGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingNeLeGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingNeGt:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingNeGt)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingNeGtGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingNeGtGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingNeGtLe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingNeGtLe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingNeGtLeGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingNeGtLeGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingNeLt:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingNeLt)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingNeLtGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingNeLtGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingNeLtLe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingNeLtLe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingNeLtLeGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingNeLtLeGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingNeLtGt:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingNeLtGt)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingNeLtGtGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingNeLtGtGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingNeLtGtLe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingNeLtGtLe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingNeLtGtLeGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingNeLtGtLeGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqLe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqLe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqLeGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqLeGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqGt:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqGt)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqGtGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqGtGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqGtLe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqGtLe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqGtLeGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqGtLeGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqLt:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqLt)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqLtGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqLtGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqLtLe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqLtLe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqLtLeGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqLtLeGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqLtGt:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqLtGt)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqLtGtGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqLtGtGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqLtGtLe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqLtGtLe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqLtGtLeGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqLtGtLeGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqNeGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqNeGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqNeLe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqNeLe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqNeLeGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqNeLeGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqNeGt:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqNeGt)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqNeGtGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqNeGtGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqNeGtLe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqNeGtLe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqNeGtLeGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqNeGtLeGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqNeLt:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqNeLt)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqNeLtGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqNeLtGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqNeLtLe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqNeLtLe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqNeLtLeGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqNeLtLeGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqNeLtGt:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqNeLtGt)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqNeLtGtGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqNeLtGtGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqNeLtGtLe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqNeLtGtLe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+@cython.total_ordering
+cdef class ExtTypeTotalOrderingEqNeLtGtLeGe:
+ """
+ >>> test_all_comp(ExtTypeTotalOrderingEqNeLtGtLeGe)
+ True
+ """
+ cdef public int value
+ def __init__(self, val):
+ self.value = val
+
+ def __eq__(self, other):
+ return self.value == other.value
+
+ def __ne__(self, other):
+ return self.value != other.value
+
+ def __lt__(self, other):
+ return self.value < other.value
+
+ def __gt__(self, other):
+ return self.value > other.value
+
+ def __le__(self, other):
+ return self.value <= other.value
+
+ def __ge__(self, other):
+ return self.value >= other.value