Esempio n. 1
0
def test_dump_property():
    d = Database()
    name = 'test'
    desc = 'Test property.'
    type = str
    value = 'Test string.'
    p = Property(name, desc, type, value)
    actual = d.dump_property(p)
    expected = dict(name=name, description=desc, value=value, type='str')
    assert expected == actual
    p.type = Exception
    with raises(RuntimeError):
        d.dump_property(p)
Esempio n. 2
0
def test_dump_objectreference():
    d = Database()
    f1 = d.create_object()
    f2 = d.create_object()
    o = d.create_object()
    p = o.add_property('friends', list, [f1, f2])
    assert p.value == [f1, f2]
    data = d.dump_property(p)
    for entry in data['value']:
        assert isinstance(entry, ObjectReference), 'Invalid entry: %r.' % entry
    assert data['value'] == [ObjectReference(f1.id), ObjectReference(f2.id)]
Esempio n. 3
0
def test_load_object():
    d = Database()
    id = 18
    p = Property('property', 'Test property.', bool, False)
    m = Method(d, 'import re\ndef method(self, a, b):\n    return (a, b, re)')
    data = dict(
        id=id, methods=[d.dump_method(m)], properties=[d.dump_property(p)],
        parents=[]
    )
    o = d.load_object(data)
    assert d.objects[id] is o
    assert d.max_id == (id + 1)
    assert len(o._methods) == 1
    m.func = None
    for method in (m, o._methods[m.name]):
        method.created.clear()
    o._methods[m.name].func = None  # Otherwise they'll never match.
    assert o._methods[m.name] == m
    assert not o._properties
    assert not o._parents
    assert not o._children
    data = dict(id=1, location=2)
    o = d.load_object(data)
    assert o._location == 2
Esempio n. 4
0
def test_dump_property_custom_object():
    d = Database(object_class=CustomObject)
    o = d.create_object()
    p = o.add_property('this', d.object_class, o)
    value = d.dump_property(p)
    assert value['type'] == 'obj'