12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import unittest
- from test import test_support
- class Empty:
- def __repr__(self):
- return '<Empty>'
- class Coerce:
- def __init__(self, arg):
- self.arg = arg
- def __repr__(self):
- return '<Coerce %s>' % self.arg
- def __coerce__(self, other):
- if isinstance(other, Coerce):
- return self.arg, other.arg
- else:
- return self.arg, other
- class Cmp:
- def __init__(self,arg):
- self.arg = arg
- def __repr__(self):
- return '<Cmp %s>' % self.arg
- def __cmp__(self, other):
- return cmp(self.arg, other)
- class ComparisonTest(unittest.TestCase):
- set1 = [2, 2.0, 2L, 2+0j, Coerce(2), Cmp(2.0)]
- set2 = [[1], (3,), None, Empty()]
- candidates = set1 + set2
- def test_comparisons(self):
- for a in self.candidates:
- for b in self.candidates:
- if ((a in self.set1) and (b in self.set1)) or a is b:
- self.assertEqual(a, b)
- else:
- self.assertNotEqual(a, b)
- def test_id_comparisons(self):
- # Ensure default comparison compares id() of args
- L = []
- for i in range(10):
- L.insert(len(L)//2, Empty())
- for a in L:
- for b in L:
- self.assertEqual(cmp(a, b), cmp(id(a), id(b)),
- 'a=%r, b=%r' % (a, b))
- def test_main():
- test_support.run_unittest(ComparisonTest)
- if __name__ == '__main__':
- test_main()
|