Meshroom/tests/test_model.py
Yann Lanthony 1e306f8408 rename Model to DictModel + augment API
* add "update" and "reset" methods
* core: no more default keyAttrName
* qt: if keyAttrName is empty, don't register items in internal dictionnary
2017-10-23 19:54:55 +02:00

53 lines
1.2 KiB
Python

import pytest
from PySide2.QtCore import QObject, Property
from meshroom.common.core import CoreDictModel
from meshroom.common.qt import QObjectListModel, QTypedObjectListModel
class DummyNode(QObject):
def __init__(self, name="", parent=None):
super(DummyNode, self).__init__(parent)
self._name = name
def getName(self):
return self._name
name = Property(str, getName)
def test_coreModel_add_remove():
m = CoreDictModel(keyAttrName='name')
node = DummyNode("DummyNode_1")
m.add(node)
assert len(m) == 1
assert m.get("DummyNode_1") == node
m.pop("DummyNode_1")
assert len(m) == 0
def test_listModel_add_remove():
m = QObjectListModel(keyAttrName='name')
node = DummyNode("DummyNode_1")
m.add(node)
assert len(m) == 1
assert m.get("DummyNode_1") == node
m.remove(node)
assert len(m) == 0
def test_listModel_typed_add():
m = QTypedObjectListModel(T=DummyNode)
assert m.roleForName('name') != -1
node = DummyNode("DummyNode_1")
m.add(node)
assert m.data(m.index(0), m.roleForName('name')) == "DummyNode_1"
obj = QObject()
with pytest.raises(TypeError):
m.add(obj)