import types import unittest import sys try: from MiscUtils.Error import Error except: sys.path.insert(1, '..') from Error import Error def test(): err = Error(None, None) print 'str: ', err print 'repr:', repr(err) assert err.object() is None assert err.message() is None print err = Error(test, 'test') print 'str: ', err print 'repr:', repr(err) assert err.object() is test assert err.message() == 'test' print err = Error(None, '', a=5, b='.') check(err) err = Error(None, '', {'a': 5}, b='.') check(err) def check(err): print 'str: ', err print 'repr:', repr(err) assert err.keys() in [['a', 'b'], ['b', 'a']] assert type(err['a']) is types.IntType assert type(err['b']) is types.StringType print class TestError(unittest.TestCase): def testNone(self): err = Error(None, None) self.assertEqual('ERROR: None', str(err)) self.assertEqual('ERROR(object=None; message=None; data={})', repr(err)) def testObjMessage(self): err = Error(test, 'test') self.assertEqual('ERROR: test', str(err)) # Should produce something like: # "ERROR(object=; message='test'; data={})" self.assert_(repr(err).endswith("; message='test'; data={})")) def testValueDict(self): err = Error(None, '', a=5, b='.') self.assertEqual('ERROR: ', str(err)) self.assertEqual("ERROR(object=None; message=''; data={'a': 5, 'b': '.'})", repr(err).replace("{'b': '.', 'a': 5}", "{'a': 5, 'b': '.'}")) assert err.keys() in [['a', 'b'], ['b', 'a']] assert type(err['a']) is types.IntType assert type(err['b']) is types.StringType def testVarArgs(self): err = Error(None, '', {'a': 5}, b='.') self.assertEqual('ERROR: ', str(err)) self.assertEqual("ERROR(object=None; message=''; data={'a': 5, 'b': '.'})", repr(err).replace("{'b': '.', 'a': 5}", "{'a': 5, 'b': '.'}")) assert err.keys() in [['a', 'b'], ['b', 'a']] assert type(err['a']) is types.IntType assert type(err['b']) is types.StringType if __name__ == '__main__': test()