def test_popitem(): # dict.popitem() for copymode in -1, +1: # -1: b has same structure as a # +1: b is a.copy() for log2size in range(12): size = 2**log2size X = meta.Entity.define_subclass( 'X', {'p' + repr(i): meta.Integer() for i in range(size)}) a = X() b = X() for i in range(size): a['p' + repr(i)] = i if copymode < 0: b['p' + repr(i)] = i if copymode > 0: b = a.copy() for i in range(size): ka, va = ta = a.popitem() assert va == int(ka[1:]) kb, vb = tb = b.popitem() assert vb == int(kb[1:]) # assert not (copymode < 0 and ta != tb) ; 이 조건은 보장할 수 없다. 실제로 PyPy 에서는 통과하지 못한다. assert not a assert not b d = meta.Entity() with pytest.raises(KeyError): d.popitem()
class X(meta.Entity): a = meta.Integer() b = meta.Integer() c = meta.Integer()
class Y(X): A = meta.Integer()
class Y(X): b = meta.Integer(name='A')
class Y(meta.Entity): a = meta.Integer(name='A') A = meta.Integer()
class X(meta.Entity): a = meta.Integer(ordered=True)
class X(meta.Entity): a = meta.Tuple(meta.Integer(), U())
class U(meta.Union): s = meta.Integer(ordered=True) m = meta.String(ordered=True)
class X(meta.Entity): a = meta.Integer(name='A')
class X(meta.Entity): a = meta.Integer(required=True) b = meta.Integer() c = meta.Integer(view='private')
class X(meta.Entity): a = meta.Integer(required=True) b = meta.Integer() c = meta.Integer(required=True, default=3) d = meta.Integer(default=4)
class X(meta.Entity): p1 = meta.Integer() p2 = meta.Integer()
class X(meta.Entity): a = meta.Integer(codec='test')
class X(meta.Entity): p = meta.Tuple(meta.Integer(), meta.String(view='secret'))
class X(meta.Entity): p = meta.Tuple(meta.Integer(default=lambda: 1))