Skip to content

Commit

Permalink
implement/test comparision
Browse files Browse the repository at this point in the history
  • Loading branch information
hannosch committed May 4, 2013
1 parent ae7d9c8 commit 110f6c5
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/Record/__init__.py
Expand Up @@ -110,3 +110,8 @@ def __mul__(self, other):

def __len__(self):
return len(self._schema)

def __cmp__(self, other):
if isinstance(other, type(self)):
return cmp(self._data, other._data)
return cmp(id(self), id(other))
43 changes: 43 additions & 0 deletions src/Record/tests.py
Expand Up @@ -145,3 +145,46 @@ def test_mul(self):
def test_len(self):
r = R((1, 2, None))
self.assertEqual(len(r), 3)

def test_cmp(self):
r1 = R((1, 2, None))
r2 = R((1, 2, None))
self.assertEqual(r1, r2)
self.assertFalse(r1 is r2)
self.assertTrue(r1 <= r2)
self.assertTrue(r1 >= r2)
self.assertFalse(r1 != r2)
self.assertFalse(r1 > r2)
self.assertFalse(r1 < r2)
r3 = R((1, 2, 3))
self.assertNotEqual(r1, r3)
self.assertFalse(r1 is r3)
self.assertTrue(r1 <= r3)
self.assertFalse(r1 >= r3)
self.assertTrue(r1 != r3)
self.assertFalse(r1 > r3)
self.assertTrue(r1 < r3)

def test_cmp_different_schema(self):
class R2(Record):
__record_schema__ = {'a': 0, 'b': 1}
r1 = R((1, 2, None))
r2 = R2((1, 2))
self.assertNotEqual(r1, r2)
self.assertTrue(r1 > r2)
self.assertFalse(r1 < r2)
r1 = R((1, 2, 3))
self.assertNotEqual(r1, r2)
self.assertFalse(r1 <= r2)
self.assertTrue(r1 >= r2)
self.assertTrue(r1 != r2)
self.assertTrue(r1 > r2)
self.assertFalse(r1 < r2)

def test_cmp_other(self):
r = R((1, 2, None))
self.assertNotEqual(r, (1, 2, None))
self.assertNotEqual(r, [1, 2, None])
self.assertNotEqual(r, {'a': 1, 'b': 2, 'c': None})
self.assertNotEqual(r, 1)
self.assertNotEqual(r, 'a')

0 comments on commit 110f6c5

Please sign in to comment.