Improve document observer tests by checking parameters of each call, not only the last one
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user