def test_BasicPropertyDescriptor__delete__(): class Foo(object): _property_values = dict(foo=0) f = Foo() d1 = pd.BasicPropertyDescriptor("foo", f) d2 = pd.BasicPropertyDescriptor("bar", f) d1.__delete__(f) assert f._property_values == {} d2.__delete__(f) assert f._property_values == {}
def test___str__(self): class Foo(object): pass f = Foo() d = bcpd.BasicPropertyDescriptor("foo", f) assert str(d) == str(f)
def test___set__improper(self): class Foo(object): pass f = Foo() d = bcpd.BasicPropertyDescriptor("foo", f) with pytest.raises(RuntimeError) as e: d.__set__("junk", None) assert str(e).endswith("Cannot set a property value 'foo' on a str instance before HasProps.__init__")
def test___get__improper(self): class Foo(object): pass f = Foo() d = bcpd.BasicPropertyDescriptor("foo", f) with pytest.raises(ValueError) as e: d.__get__(None, None) assert str(e).endswith("both 'obj' and 'owner' are None, don't know what to do")
def test_has_ref(self): class Foo(object): pass f = Foo() f.has_ref = "stuff" d = bcpd.BasicPropertyDescriptor("foo", f) assert d.has_ref == "stuff"
def test_readonly(self): class Foo(object): pass f = Foo() f.readonly = "stuff" d = bcpd.BasicPropertyDescriptor("foo", f) assert d.readonly == "stuff"
def test_serialized(self): class Foo(object): pass f = Foo() f.serialized = "stuff" d = bcpd.BasicPropertyDescriptor("foo", f) assert d.serialized == "stuff"
def test__trigger(self, mock_trigger): class Foo(object): _property_values = dict(foo=10, bar=20) class Match(object): def matches(*args, **kw): return True class NoMatch(object): def matches(*args, **kw): return False m = Match() nm = NoMatch() d1 = bcpd.BasicPropertyDescriptor("foo", m) d2 = bcpd.BasicPropertyDescriptor("bar", nm) d1.trigger_if_changed(Foo, "junk") assert not mock_trigger.called d2.trigger_if_changed(Foo, "junk") assert mock_trigger.called
def test___init__(self): class Foo(object): '''doc''' pass f = Foo() d = bcpd.BasicPropertyDescriptor("foo", f) assert d.name == "foo" assert d.property == f assert d.__doc__ == f.__doc__
def test_BasicPropertyDescriptor__delete__(): class Foo(object): _property_values = dict(foo=0) _unstable_default_values = dict(bar=[10]) f = Foo() d1 = pd.BasicPropertyDescriptor("foo", f) d2 = pd.BasicPropertyDescriptor("bar", f) d3 = pd.BasicPropertyDescriptor("baz", f) d1.__delete__(f) assert f._property_values == {} assert f._unstable_default_values == dict(bar=[10]) d2.__delete__(f) assert f._property_values == {} assert f._unstable_default_values == {} d3.__delete__(f) assert f._property_values == {} assert f._unstable_default_values == {}
def test_class_default(self): result = {} class Foo(object): def themed_default(*args, **kw): result['called'] = True f = Foo() f.readonly = "stuff" d = bcpd.BasicPropertyDescriptor("foo", f) d.class_default(d) assert result['called']