Include module for desktop build
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# Copyright (c) 2002-2009 Zooko "Zooko" Wilcox-O'Hearn
|
||||
# This file is part of pyutil; see README.rst for licensing terms.
|
||||
|
||||
import random, sys, traceback, unittest
|
||||
|
||||
from pyutil.assertutil import _assert
|
||||
|
||||
from pyutil import dictutil
|
||||
|
||||
class EqButNotIs:
|
||||
def __init__(self, x):
|
||||
self.x = x
|
||||
self.hash = int(random.randrange(0, 2**31))
|
||||
def __repr__(self):
|
||||
return "<%s %s>" % (self.__class__.__name__, self.x,)
|
||||
def __hash__(self):
|
||||
return self.hash
|
||||
def __le__(self, other):
|
||||
return self.x <= other
|
||||
def __lt__(self, other):
|
||||
return self.x < other
|
||||
def __ge__(self, other):
|
||||
return self.x >= other
|
||||
def __gt__(self, other):
|
||||
return self.x > other
|
||||
def __ne__(self, other):
|
||||
return self.x != other
|
||||
def __eq__(self, other):
|
||||
return self.x == other
|
||||
|
||||
class Testy(unittest.TestCase):
|
||||
def _help_test_empty_dict(self, klass):
|
||||
d1 = klass()
|
||||
d2 = klass({})
|
||||
|
||||
self.failUnless(d1 == d2, "d1: %r, d2: %r" % (d1, d2,))
|
||||
self.failUnless(len(d1) == 0)
|
||||
self.failUnless(len(d2) == 0)
|
||||
|
||||
def _help_test_nonempty_dict(self, klass):
|
||||
d1 = klass({'a': 1, 'b': "eggs", 3: "spam",})
|
||||
d2 = klass({'a': 1, 'b': "eggs", 3: "spam",})
|
||||
|
||||
self.failUnless(d1 == d2)
|
||||
self.failUnless(len(d1) == 3, "%s, %s" % (len(d1), d1,))
|
||||
self.failUnless(len(d2) == 3)
|
||||
|
||||
def _help_test_eq_but_notis(self, klass):
|
||||
d = klass({'a': 3, 'b': EqButNotIs(3), 'c': 3})
|
||||
d.pop('b')
|
||||
|
||||
d.clear()
|
||||
d['a'] = 3
|
||||
d['b'] = EqButNotIs(3)
|
||||
d['c'] = 3
|
||||
d.pop('b')
|
||||
|
||||
d.clear()
|
||||
d['b'] = EqButNotIs(3)
|
||||
d['a'] = 3
|
||||
d['c'] = 3
|
||||
d.pop('b')
|
||||
|
||||
d.clear()
|
||||
d['a'] = EqButNotIs(3)
|
||||
d['c'] = 3
|
||||
d['a'] = 3
|
||||
|
||||
d.clear()
|
||||
fake3 = EqButNotIs(3)
|
||||
fake7 = EqButNotIs(7)
|
||||
d[fake3] = fake7
|
||||
d[3] = 7
|
||||
d[3] = 8
|
||||
_assert(filter(lambda x: x is 8, d.itervalues()))
|
||||
_assert(filter(lambda x: x is fake7, d.itervalues()))
|
||||
_assert(not filter(lambda x: x is 7, d.itervalues())) # The real 7 should have been ejected by the d[3] = 8.
|
||||
_assert(filter(lambda x: x is fake3, d.iterkeys()))
|
||||
_assert(filter(lambda x: x is 3, d.iterkeys()))
|
||||
d[fake3] = 8
|
||||
|
||||
d.clear()
|
||||
d[3] = 7
|
||||
fake3 = EqButNotIs(3)
|
||||
fake7 = EqButNotIs(7)
|
||||
d[fake3] = fake7
|
||||
d[3] = 8
|
||||
_assert(filter(lambda x: x is 8, d.itervalues()))
|
||||
_assert(filter(lambda x: x is fake7, d.itervalues()))
|
||||
_assert(not filter(lambda x: x is 7, d.itervalues())) # The real 7 should have been ejected by the d[3] = 8.
|
||||
_assert(filter(lambda x: x is fake3, d.iterkeys()))
|
||||
_assert(filter(lambda x: x is 3, d.iterkeys()))
|
||||
d[fake3] = 8
|
||||
|
||||
def test_em(self):
|
||||
for klass in (dictutil.UtilDict, dictutil.NumDict, dictutil.ValueOrderedDict,):
|
||||
# print "name of class: ", klass
|
||||
for helper in (self._help_test_empty_dict, self._help_test_nonempty_dict, self._help_test_eq_but_notis,):
|
||||
# print "name of test func: ", helper
|
||||
try:
|
||||
helper(klass)
|
||||
except:
|
||||
(etype, evalue, realtb) = sys.exc_info()
|
||||
traceback.print_exception(etype, evalue, realtb)
|
||||
self.fail(evalue)
|
||||
del realtb
|
||||
|
||||
def suite():
|
||||
suite = unittest.makeSuite(Testy, 'test')
|
||||
return suite
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user