def test_subclass2(self): A = make_class("A", fields=('x', 'y')) class B(A): __fields__ = ('z',) class C(B): pass self.assertEqual(type(A), type(B)) self.assertEqual(type(C), type(B)) self.assertEqual(C.__dictoffset__, 0) self.assertEqual(C.__weakrefoffset__, 0) c = C(1,2,3) self.assertEqual(repr(c), "C(x=1, y=2, z=3)") self.assertEqual(c.x, 1) self.assertEqual(c.y, 2) self.assertEqual(c.z, 3) self.assertEqual(asdict(c), {'x':1, 'y':2, 'z':3}) # self.assertEqual(sys.getsizeof(c), 40) with self.assertRaises(TypeError): weakref.ref(c) with self.assertRaises(AttributeError): c.__dict__ c = None
def test_subclass4(self): class A(dataobject): x: int y: int class B(A): z: int class N: def norm_1(self): return abs(self.x) + abs(self.y) + abs(self.z) class C(B, N): pass self.assertEqual(type(A), type(B)) self.assertEqual(type(C), type(B)) self.assertEqual(C.__dictoffset__, 0) self.assertEqual(C.__weakrefoffset__, 0) c = C(1, 2, 3) self.assertEqual(repr(c), "C(x=1, y=2, z=3)") self.assertEqual(c.x, 1) self.assertEqual(c.y, 2) self.assertEqual(c.z, 3) self.assertEqual(c.norm_1(), 6) self.assertEqual(asdict(c), {'x': 1, 'y': 2, 'z': 3}) self.assertEqual(C.__annotations__, {'x': int, 'y': int, 'z': int}) # self.assertEqual(sys.getsizeof(c), 40) with self.assertRaises(TypeError): weakref.ref(c) with self.assertRaises(AttributeError): c.__dict__
def test_subclass2(self): A = make_class("A", fields=('x', 'y')) class B(A): __fields__ = ('z', ) class C(B): pass self.assertEqual(type(A), type(B)) self.assertEqual(type(C), type(B)) self.assertEqual(C.__dictoffset__, 0) self.assertEqual(C.__weakrefoffset__, 0) c = C(1, 2, 3) self.assertEqual(repr(c), "C(x=1, y=2, z=3)") self.assertEqual(c.x, 1) self.assertEqual(c.y, 2) self.assertEqual(c.z, 3) self.assertEqual(asdict(c), {'x': 1, 'y': 2, 'z': 3}) # self.assertEqual(sys.getsizeof(c), 40) with self.assertRaises(TypeError): weakref.ref(c) with self.assertRaises(AttributeError): c.__dict__ c = None
def test_subclass3(self): class A(dataobject): x: int y: int class B: def norm_1(self): return abs(self.x) + abs(self.y) class C(A, B): pass self.assertEqual(type(C), type(A)) self.assertEqual(C.__dictoffset__, 0) self.assertEqual(C.__weakrefoffset__, 0) c = C(1, 2) self.assertEqual(repr(c), "C(x=1, y=2)") self.assertEqual(c.x, 1) self.assertEqual(c.y, 2) self.assertEqual(c.norm_1(), 3) self.assertEqual(asdict(c), {'x': 1, 'y': 2}) self.assertEqual(C.__annotations__, {'x': int, 'y': int}) with self.assertRaises(TypeError): weakref.ref(c) with self.assertRaises(AttributeError): c.__dict__
def test_defaults(self): A = make_class("A", fields=('x', 'y', 'z'), defaults=(100, 200, 300)) a1 = A() self.assertEqual(repr(a1), "A(x=100, y=200, z=300)") self.assertEqual(a1.x, 100) self.assertEqual(a1.y, 200) self.assertEqual(a1.z, 300) self.assertEqual(asdict(a1), {'x':100, 'y':200, 'z':300}) a2 = A(1,z=400) self.assertEqual(repr(a2), "A(x=1, y=200, z=400)") self.assertEqual(a2.x, 1) self.assertEqual(a2.y, 200) self.assertEqual(a2.z, 400) self.assertEqual(asdict(a2), {'x':1, 'y':200, 'z':400}) a3 = A(1,2,z=400) self.assertEqual(repr(a3), "A(x=1, y=2, z=400)") self.assertEqual(a3.x, 1) self.assertEqual(a3.y, 2) self.assertEqual(a3.z, 400) self.assertEqual(asdict(a3), {'x':1, 'y':2, 'z':400})
def test_defaults(self): A = make_class("A", fields=('x', 'y', 'z'), defaults=(100, 200, 300)) a1 = A() self.assertEqual(repr(a1), "A(x=100, y=200, z=300)") self.assertEqual(a1.x, 100) self.assertEqual(a1.y, 200) self.assertEqual(a1.z, 300) self.assertEqual(asdict(a1), {'x': 100, 'y': 200, 'z': 300}) a2 = A(1, z=400) self.assertEqual(repr(a2), "A(x=1, y=200, z=400)") self.assertEqual(a2.x, 1) self.assertEqual(a2.y, 200) self.assertEqual(a2.z, 400) self.assertEqual(asdict(a2), {'x': 1, 'y': 200, 'z': 400}) a3 = A(1, 2, z=400) self.assertEqual(repr(a3), "A(x=1, y=2, z=400)") self.assertEqual(a3.x, 1) self.assertEqual(a3.y, 2) self.assertEqual(a3.z, 400) self.assertEqual(asdict(a3), {'x': 1, 'y': 2, 'z': 400})
def test_datatype_dict(self): A = make_class("A", fields=('x', 'y'), use_dict=True, use_weakref=True) a = A(1,2) self.assertEqual(repr(a), "A(x=1, y=2)") self.assertEqual(a.x, 1) self.assertEqual(a.y, 2) self.assertEqual(asdict(a), {'x':1, 'y':2}) # self.assertEqual(sys.getsizeof(a), 48) # self.assertEqual(A.__dictoffset__, 32) # self.assertEqual(A.__weakrefoffset__, 40) weakref.ref(a) self.assertEqual(a.__dict__, {}) a.z = 3 self.assertEqual(a.z, a.__dict__['z']) a = None
def test_datatype_dict(self): A = make_class("A", fields=('x', 'y'), use_dict=True, use_weakref=True) a = A(1, 2) self.assertEqual(repr(a), "A(x=1, y=2)") self.assertEqual(a.x, 1) self.assertEqual(a.y, 2) self.assertEqual(asdict(a), {'x': 1, 'y': 2}) # self.assertEqual(sys.getsizeof(a), 48) # self.assertEqual(A.__dictoffset__, 32) # self.assertEqual(A.__weakrefoffset__, 40) weakref.ref(a) self.assertEqual(a.__dict__, {}) a.z = 3 self.assertEqual(a.z, a.__dict__['z']) a = None
def test_datatype(self): A = make_class("A", fields=('x', 'y')) a = A(1,2) self.assertEqual(repr(a), "A(x=1, y=2)") self.assertEqual(a.x, 1) self.assertEqual(a.y, 2) self.assertEqual(asdict(a), {'x':1, 'y':2}) # self.assertEqual(sys.getsizeof(a), 32) with self.assertRaises(TypeError): weakref.ref(a) with self.assertRaises(AttributeError): a.__dict__ with self.assertRaises(AttributeError): a.z = 3 with self.assertRaises(AttributeError): a.z a = None
def test_datatype(self): A = make_class("A", fields=('x', 'y')) a = A(1, 2) self.assertEqual(repr(a), "A(x=1, y=2)") self.assertEqual(a.x, 1) self.assertEqual(a.y, 2) self.assertEqual(asdict(a), {'x': 1, 'y': 2}) # self.assertEqual(sys.getsizeof(a), 32) with self.assertRaises(TypeError): weakref.ref(a) with self.assertRaises(AttributeError): a.__dict__ with self.assertRaises(AttributeError): a.z = 3 with self.assertRaises(AttributeError): a.z a = None
def test_subclass(self): A = make_class("A", fields=('x', 'y')) class B(A): pass self.assertEqual(type(A), type(B)) self.assertEqual(B.__dictoffset__, 0) self.assertEqual(B.__weakrefoffset__, 0) b = B(1,2) self.assertEqual(repr(b), "B(x=1, y=2)") self.assertEqual(b.x, 1) self.assertEqual(b.y, 2) self.assertEqual(asdict(b), {'x':1, 'y':2}) # self.assertEqual(sys.getsizeof(a), 32) self.assertEqual(A.__basicsize__, B.__basicsize__) with self.assertRaises(TypeError): weakref.ref(b) with self.assertRaises(AttributeError): b.__dict__
def test_subclass(self): A = make_class("A", fields=('x', 'y')) class B(A): pass self.assertEqual(type(A), type(B)) self.assertEqual(B.__dictoffset__, 0) self.assertEqual(B.__weakrefoffset__, 0) b = B(1, 2) self.assertEqual(repr(b), "B(x=1, y=2)") self.assertEqual(b.x, 1) self.assertEqual(b.y, 2) self.assertEqual(asdict(b), {'x': 1, 'y': 2}) # self.assertEqual(sys.getsizeof(a), 32) self.assertEqual(A.__basicsize__, B.__basicsize__) with self.assertRaises(TypeError): weakref.ref(b) with self.assertRaises(AttributeError): b.__dict__
def test_datatype_dict(self): class A(dataobject): __fields__ = 'x', 'y' __options__ = {'dict': True, 'weakref': True} x: int y: int a = A(1, 2) self.assertEqual(repr(a), "A(x=1, y=2)") self.assertEqual(a.x, 1) self.assertEqual(a.y, 2) self.assertEqual(asdict(a), {'x': 1, 'y': 2}) self.assertEqual(A.__annotations__, {'x': int, 'y': int}) # self.assertEqual(sys.getsizeof(a), 48) # self.assertEqual(A.__dictoffset__, 32) # self.assertEqual(A.__weakrefoffset__, 40) weakref.ref(a) self.assertEqual(a.__dict__, {}) a.z = 3 self.assertEqual(a.z, a.__dict__['z'])
def test_datatype2(self): class A(dataobject): x: int y: int a = A(1, 2) self.assertEqual(repr(a), "A(x=1, y=2)") self.assertEqual(a.x, 1) self.assertEqual(a.y, 2) self.assertEqual(asdict(a), {'x': 1, 'y': 2}) self.assertEqual(A.__annotations__, {'x': int, 'y': int}) self.assertEqual(A.__fields__, ('x', 'y')) # self.assertEqual(sys.getsizeof(a), 32) with self.assertRaises(TypeError): weakref.ref(a) with self.assertRaises(AttributeError): a.__dict__ with self.assertRaises(AttributeError): a.z = 3 with self.assertRaises(AttributeError): a.z a = None
def test_subclass(self): class A(dataobject): __fields__ = 'x', 'y' x: int y: int class B(A): pass self.assertEqual(type(A), type(B)) self.assertEqual(B.__dictoffset__, 0) self.assertEqual(B.__weakrefoffset__, 0) b = B(1, 2) self.assertEqual(repr(b), "B(x=1, y=2)") self.assertEqual(b.x, 1) self.assertEqual(b.y, 2) self.assertEqual(asdict(b), {'x': 1, 'y': 2}) self.assertEqual(B.__annotations__, {'x': int, 'y': int}) # self.assertEqual(sys.getsizeof(a), 32) self.assertEqual(A.__basicsize__, B.__basicsize__) with self.assertRaises(TypeError): weakref.ref(b) with self.assertRaises(AttributeError): b.__dict__