Improve document observer tests by checking parameters of each call, not only the last one

This commit is contained in:
ickby
2018-10-01 07:06:37 +02:00
committed by wmayer
parent b08738c15b
commit ccb108dc3d

View File

@@ -1316,81 +1316,81 @@ class DocumentObserverCases(unittest.TestCase):
class Observer():
signal = []
parameter = None
parameter2 = None
parameter = []
parameter2 = []
def slotCreatedDocument(self, doc):
self.signal.append('DocCreated');
self.parameter = doc;
self.parameter.append(doc);
def slotDeletedDocument(self, doc):
self.signal.append('DocDeleted');
self.parameter = doc;
self.parameter.append(doc);
def slotRelabelDocument(self, doc):
self.signal.append('DocRelabled');
self.parameter = doc;
self.parameter.append(doc);
def slotActivateDocument(self, doc):
self.signal.append('DocActivated');
self.parameter = doc;
self.parameter.append(doc);
def slotRecomputedDocument(self, doc):
self.signal.append('DocRecomputed');
self.parameter = doc;
self.parameter.append(doc);
def slotUndoDocument(self, doc):
self.signal.append('DocUndo');
self.parameter = doc;
self.parameter.append(doc);
def slotRedoDocument(self, doc):
self.signal.append('DocRedo');
self.parameter = doc;
self.parameter.append(doc);
def slotOpenTransaction(self, doc, name):
self.signal.append('DocOpenTransaction');
self.parameter = doc;
self.parameter2 = name;
self.parameter.append(doc);
self.parameter2.append(name);
def slotCommitTransaction(self, doc):
self.signal.append('DocCommitTransaction');
self.parameter = doc;
self.parameter.append(doc);
def slotAbortTransaction(self, doc):
self.signal.append('DocAbortTransaction');
self.parameter = doc;
self.parameter.append(doc);
def slotBeforeChangeDocument(self, doc, prop):
self.signal.append('DocBeforeChange')
self.parameter = doc
self.parameter2 = prop
self.parameter.append(doc)
self.parameter2.append(prop)
def slotChangedDocument(self, doc, prop):
self.signal.append('DocChanged')
self.parameter = doc
self.parameter2 = prop
self.parameter.append(doc)
self.parameter2.append(prop)
def slotCreatedObject(self, obj):
self.signal.append('ObjCreated');
self.parameter = obj;
self.parameter.append(obj);
def slotDeletedObject(self, obj):
self.signal.append('ObjDeleted');
self.parameter = obj;
self.parameter.append(obj)
def slotChangedObject(self, obj, prop):
self.signal.append('ObjChanged');
self.parameter = obj;
self.parameter2 = prop;
self.parameter.append(obj)
self.parameter2.append(prop)
def slotBeforeChangeObject(self, obj, prop):
self.signal.append('ObjBeforeChange');
self.parameter = obj;
self.parameter2 = prop;
self.parameter.append(obj)
self.parameter2.append(prop)
def slotRecomputedObject(self, obj):
self.signal.append('ObjRecomputed');
self.parameter = obj;
self.parameter.append(obj)
def setUp(self):
@@ -1400,112 +1400,134 @@ class DocumentObserverCases(unittest.TestCase):
def testDocument(self):
# testing document level signals
self.Doc1 = FreeCAD.newDocument("Observer1");
self.Doc1 = FreeCAD.newDocument("Observer1");
self.failUnless(self.Obs.signal.pop(0) == 'DocActivated')
self.failUnless(self.Obs.parameter.pop(0) is self.Doc1)
self.failUnless(self.Obs.signal.pop(0) == 'DocCreated')
self.failUnless(self.Obs.parameter.pop(0) is self.Doc1)
self.failUnless(self.Obs.signal.pop(0) == 'DocBeforeChange')
self.failUnless(self.Obs.parameter.pop(0) is self.Doc1)
self.failUnless(self.Obs.parameter2.pop(0) == 'Label')
self.failUnless(self.Obs.signal.pop(0) == 'DocChanged')
self.failUnless(self.Obs.parameter.pop(0) is self.Doc1)
self.failUnless(self.Obs.parameter2.pop(0) == 'Label')
self.failUnless(self.Obs.signal.pop(0) == 'DocRelabled')
self.failUnless(self.Obs.parameter is self.Doc1)
self.failUnless(not self.Obs.signal)
self.failUnless(self.Obs.parameter.pop(0) is self.Doc1)
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
self.Doc2 = FreeCAD.newDocument("Observer2");
self.failUnless(self.Obs.signal.pop(0) == 'DocActivated')
self.failUnless(self.Obs.parameter.pop(0) is self.Doc2)
self.failUnless(self.Obs.signal.pop(0) == 'DocCreated')
self.failUnless(self.Obs.parameter.pop(0) is self.Doc2)
self.failUnless(self.Obs.signal.pop(0) == 'DocBeforeChange')
self.failUnless(self.Obs.parameter.pop(0) is self.Doc2)
self.failUnless(self.Obs.parameter2.pop(0) == 'Label')
self.failUnless(self.Obs.signal.pop(0) == 'DocChanged')
self.failUnless(self.Obs.parameter.pop(0) is self.Doc2)
self.failUnless(self.Obs.parameter2.pop(0) == 'Label')
self.failUnless(self.Obs.signal.pop(0) == 'DocRelabled')
self.failUnless(self.Obs.parameter is self.Doc2)
self.failUnless(not self.Obs.signal)
self.failUnless(self.Obs.parameter.pop(0) is self.Doc2)
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
FreeCAD.setActiveDocument('Observer1')
self.failUnless(self.Obs.signal.pop() == 'DocActivated')
self.failUnless(self.Obs.parameter is self.Doc1)
self.failUnless(not self.Obs.signal)
self.failUnless(self.Obs.parameter.pop() is self.Doc1)
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
self.Doc2.openTransaction('test')
self.failUnless(self.Obs.signal.pop() == 'DocOpenTransaction')
self.failUnless(self.Obs.parameter is self.Doc2)
self.failUnless(self.Obs.parameter2 == 'test')
self.failUnless(not self.Obs.signal)
self.failUnless(self.Obs.parameter.pop() is self.Doc2)
self.failUnless(self.Obs.parameter2.pop() == 'test')
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
self.Doc2.commitTransaction()
self.failUnless(self.Obs.signal.pop() == 'DocCommitTransaction')
self.failUnless(self.Obs.parameter is self.Doc2)
self.failUnless(not self.Obs.signal)
self.failUnless(self.Obs.parameter.pop() is self.Doc2)
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
self.Doc2.openTransaction('test2')
self.failUnless(self.Obs.signal.pop() == 'DocOpenTransaction')
self.failUnless(self.Obs.parameter is self.Doc2)
self.failUnless(not self.Obs.signal)
self.failUnless(self.Obs.parameter.pop() is self.Doc2)
self.failUnless(self.Obs.parameter2.pop() == 'test2')
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
self.Doc2.abortTransaction()
self.failUnless(self.Obs.signal.pop() == 'DocAbortTransaction')
self.failUnless(self.Obs.parameter is self.Doc2)
self.failUnless(not self.Obs.signal)
self.failUnless(self.Obs.parameter.pop() is self.Doc2)
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
self.Doc2.undo()
self.failUnless(self.Obs.signal.pop() == 'DocUndo')
self.failUnless(self.Obs.parameter is self.Doc2)
self.failUnless(not self.Obs.signal)
self.failUnless(self.Obs.parameter.pop() is self.Doc2)
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
self.Doc2.redo()
self.failUnless(self.Obs.signal.pop() == 'DocRedo')
self.failUnless(self.Obs.parameter is self.Doc2)
self.failUnless(not self.Obs.signal)
self.failUnless(self.Obs.parameter.pop() is self.Doc2)
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
self.Doc1.Comment = 'test comment'
self.failUnless(self.Obs.signal.pop(0) == 'DocBeforeChange')
self.failUnless(self.Obs.parameter.pop(0) is self.Doc1)
self.failUnless(self.Obs.parameter2.pop(0) == 'Comment')
self.failUnless(self.Obs.signal.pop(0) == 'DocChanged')
self.failUnless(self.Obs.parameter is self.Doc1)
self.failUnless(self.Obs.parameter2 == 'Comment')
self.failUnless(self.Obs.parameter.pop(0) is self.Doc1)
self.failUnless(self.Obs.parameter2.pop(0) == 'Comment')
FreeCAD.closeDocument('Observer2')
self.failUnless(self.Obs.signal.pop() == 'DocDeleted')
self.failUnless(self.Obs.parameter is self.Doc2)
self.failUnless(not self.Obs.signal)
self.failUnless(self.Obs.parameter.pop() is self.Doc2)
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
FreeCAD.closeDocument('Observer1')
self.failUnless(self.Obs.signal.pop() == 'DocDeleted')
self.failUnless(self.Obs.parameter is self.Doc1)
self.failUnless(not self.Obs.signal)
self.failUnless(self.Obs.parameter.pop() is self.Doc1)
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
def testObject(self):
#testing signal on object changes
self.Doc1 = FreeCAD.newDocument("Observer1")
self.Obs.signal = []
self.Obs.parameter = []
self.Obs.parameter2 = []
obj = self.Doc1.addObject("App::DocumentObject","obj")
self.failUnless(self.Obs.signal.pop() == 'ObjCreated')
self.failUnless(self.Obs.parameter is obj)
self.failUnless(self.Obs.parameter.pop() is obj)
#there are multiple object change signals
self.Obs.signal = []
self.Obs.parameter = []
self.Obs.parameter2 = []
obj.Label = "myobj"
self.failUnless(self.Obs.signal.pop(0) == 'ObjBeforeChange')
self.failUnless(self.Obs.parameter.pop(0) is obj)
self.failUnless(self.Obs.parameter2.pop(0) == "Label")
self.failUnless(self.Obs.signal.pop(0) == 'ObjChanged')
self.failUnless(self.Obs.parameter is obj)
self.failUnless(self.Obs.parameter2 == "Label")
self.failUnless(not self.Obs.signal)
self.failUnless(self.Obs.parameter.pop(0) is obj)
self.failUnless(self.Obs.parameter2.pop(0) == "Label")
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
obj.touch()
obj.recompute()
self.failUnless(self.Obs.signal.pop(0) == 'ObjRecomputed')
self.failUnless(self.Obs.parameter is obj)
self.failUnless(not self.Obs.signal)
self.failUnless(self.Obs.parameter.pop(0) is obj)
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
obj.touch()
self.Doc1.recompute()
self.failUnless(self.Obs.signal.pop(0) == 'ObjRecomputed')
self.failUnless(self.Obs.parameter.pop(0) is obj)
self.failUnless(self.Obs.signal.pop(0) == 'DocRecomputed')
self.failUnless(self.Obs.parameter is self.Doc1)
self.failUnless(not self.Obs.signal)
self.failUnless(self.Obs.parameter.pop(0) is self.Doc1)
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
FreeCAD.ActiveDocument.removeObject(obj.Name)
self.failUnless(self.Obs.signal.pop(0) == 'ObjDeleted')
self.failUnless(self.Obs.parameter is obj)
self.failUnless(not self.Obs.signal)
self.failUnless(self.Obs.signal.pop() == 'ObjDeleted')
self.failUnless(self.Obs.parameter.pop() is obj)
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
FreeCAD.closeDocument('Observer1')
self.Obs.signal = []
@@ -1516,15 +1538,19 @@ class DocumentObserverCases(unittest.TestCase):
self.Doc1 = FreeCAD.newDocument("Observer1");
self.Doc1.UndoMode = 0
self.Obs.signal = []
self.Obs.parameter = []
self.Obs.parameter2 = []
self.Doc1.openTransaction('test')
self.Doc1.commitTransaction()
self.Doc1.undo()
self.Doc1.redo()
self.failUnless(not self.Obs.signal)
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
FreeCAD.closeDocument('Observer1')
self.Obs.signal = []
self.Obs.parameter = []
self.Obs.parameter2 = []
def tearDown(self):
#closing doc