mirror of
https://github.com/alicevision/Meshroom.git
synced 2025-04-28 17:57:16 +02:00
* add "update" and "reset" methods * core: no more default keyAttrName * qt: if keyAttrName is empty, don't register items in internal dictionnary
53 lines
1.2 KiB
Python
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)
|