home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 June / maximum-cd-2011-06.iso / DiscContents / LibO_3.3.1_Win_x86_install_multi.exe / libreoffice1.cab / test_compare.py < prev    next >
Encoding:
Python Source  |  2011-02-15  |  1.5 KB  |  59 lines

  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()
  59.