import unittest import datetime import dejavu from dejavu import zoo, storage zoo.arena.add_store("default", "storage.CachingProxy") class UnitTests(unittest.TestCase): def test_Properties(self): # Instance creation and population f = datetime.date(1916, 10, 2) z = zoo.Zoo(Name='San Diego Zoo', Founded=f) self.assertEqual(z.dirty(), True) self.assertEqual(zoo.Zoo.ID.type, int) self.assertEqual(z.ID, None) self.assertEqual(z.Name, 'San Diego Zoo') self.assertEqual(type(z.Name), unicode) self.assertEqual(z.Founded, f) self.assertEqual(z.__class__.ID.index, True) a = zoo.Animal(Name='Giraffe', Legs=4) self.assertEqual(a.dirty(), True) self.assertEqual(a.ID, None) self.assertEqual(a.Name, 'Giraffe') self.assertEqual(a.Legs, 4) self.assertEqual(a.__class__.ZooID.index, True) # Sandboxing s = zoo.arena.new_sandbox() s.memorize(z) self.assertEqual(z.ID, 1) s.memorize(a) self.assertEqual(a.ID, 1) z.add(a) self.assertEqual(a.ZooID, 1) # Triggers z.cleanse() self.assertEqual(z.dirty(), False) a.LastEscape = d = datetime.datetime(2004, 10, 20) self.assertEqual(a.LastEscape, d) self.assertEqual(z.LastEscape, d) self.assertEqual(z.dirty(), True) def run_tests(): try: unittest.main(__name__) except SystemExit: # unittest.main normally raises SystemExit when complete. pass if __name__ == "__main__": run_tests()