symbian-qemu-0.9.1-12/python-2.6.1/Lib/test/test_compare.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 import unittest
       
     2 from test import test_support
       
     3 
       
     4 class Empty:
       
     5     def __repr__(self):
       
     6         return '<Empty>'
       
     7 
       
     8 class Coerce:
       
     9     def __init__(self, arg):
       
    10         self.arg = arg
       
    11 
       
    12     def __repr__(self):
       
    13         return '<Coerce %s>' % self.arg
       
    14 
       
    15     def __coerce__(self, other):
       
    16         if isinstance(other, Coerce):
       
    17             return self.arg, other.arg
       
    18         else:
       
    19             return self.arg, other
       
    20 
       
    21 class Cmp:
       
    22     def __init__(self,arg):
       
    23         self.arg = arg
       
    24 
       
    25     def __repr__(self):
       
    26         return '<Cmp %s>' % self.arg
       
    27 
       
    28     def __cmp__(self, other):
       
    29         return cmp(self.arg, other)
       
    30 
       
    31 class ComparisonTest(unittest.TestCase):
       
    32     set1 = [2, 2.0, 2L, 2+0j, Coerce(2), Cmp(2.0)]
       
    33     set2 = [[1], (3,), None, Empty()]
       
    34     candidates = set1 + set2
       
    35 
       
    36     def test_comparisons(self):
       
    37         for a in self.candidates:
       
    38             for b in self.candidates:
       
    39                 if ((a in self.set1) and (b in self.set1)) or a is b:
       
    40                     self.assertEqual(a, b)
       
    41                 else:
       
    42                     self.assertNotEqual(a, b)
       
    43 
       
    44     def test_id_comparisons(self):
       
    45         # Ensure default comparison compares id() of args
       
    46         L = []
       
    47         for i in range(10):
       
    48             L.insert(len(L)//2, Empty())
       
    49         for a in L:
       
    50             for b in L:
       
    51                 self.assertEqual(cmp(a, b), cmp(id(a), id(b)),
       
    52                                  'a=%r, b=%r' % (a, b))
       
    53 
       
    54 def test_main():
       
    55     test_support.run_unittest(ComparisonTest)
       
    56 
       
    57 if __name__ == '__main__':
       
    58     test_main()