def test_usage(self): book = sourcemap.Bookkeeper() book.foo = 123 self.assertEqual(book.foo, 0) self.assertEqual(book.foo, 0) self.assertEqual(book._foo, 123) book.foo = 124 self.assertEqual(book.foo, 1) self.assertEqual(book.foo, 1) self.assertEqual(book._foo, 124) book.foo = 1 self.assertEqual(book.foo, -123) self.assertEqual(book.foo, -123) self.assertEqual(book._foo, 1) book.foo = 1 self.assertEqual(book.foo, 0) self.assertEqual(book.foo, 0) self.assertEqual(book._foo, 1) book.foo = 1 self.assertEqual(book.foo, 0) self.assertEqual(book.foo, 0) self.assertEqual(book._foo, 1) book.foo = 2 book.foo = 2 self.assertEqual(book.foo, 0) self.assertEqual(book._foo, 2)
def test_del_reset(self): book = sourcemap.Bookkeeper() book.foo = 123 book.foo = 124 self.assertEqual(book.foo, 1) del book.foo self.assertEqual(book.foo, 0)
def test_empty(self): book = sourcemap.Bookkeeper() with self.assertRaises(AttributeError) as e: book.foo self.assertEqual( e.exception.args[0], "'Bookkeeper' object has no attribute 'foo'") with self.assertRaises(AttributeError) as e: del book.foo
def test_private_reset(self): book = sourcemap.Bookkeeper() book.foo = 123 book.foo = 124 self.assertEqual(book.foo, 1) book._foo = 1 self.assertEqual(book.foo, 0) self.assertEqual(book._foo, 1) book._foo = 124 self.assertEqual(book.foo, 0) self.assertEqual(book._foo, 124)
def test_typecheck(self): book = sourcemap.Bookkeeper() with self.assertRaises(TypeError) as e: book.foo = 'notanint' self.assertEqual( e.exception.args[0], "assignment must be of type 'int'")