fix document observer classes to allow to run unit tests multiple times

This commit is contained in:
wmayer
2019-03-03 13:57:24 +01:00
parent 9079de7516
commit 34e09b9af3

View File

@@ -1388,9 +1388,10 @@ class DocumentObserverCases(unittest.TestCase):
class Observer():
signal = []
parameter = []
parameter2 = []
def __init__(self):
self.signal = []
self.parameter = []
self.parameter2 = []
def slotCreatedDocument(self, doc):
self.signal.append('DocCreated');
@@ -1492,9 +1493,10 @@ class DocumentObserverCases(unittest.TestCase):
class GuiObserver():
signal = []
parameter = []
parameter2 = []
def __init__(self):
self.signal = []
self.parameter = []
self.parameter2 = []
def slotCreatedDocument(self, doc):
self.signal.append('DocCreated');
@@ -1573,88 +1575,88 @@ class DocumentObserverCases(unittest.TestCase):
# testing document level signals
self.Doc1 = FreeCAD.newDocument("Observer1");
if FreeCAD.GuiUp:
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.pop(0) is self.Doc1)
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
self.assertEqual(self.Obs.signal.pop(0), 'DocActivated')
self.assertTrue(self.Obs.parameter.pop(0) is self.Doc1)
self.assertEqual(self.Obs.signal.pop(0), 'DocCreated')
self.assertTrue(self.Obs.parameter.pop(0) is self.Doc1)
self.assertEqual(self.Obs.signal.pop(0), 'DocBeforeChange')
self.assertTrue(self.Obs.parameter.pop(0) is self.Doc1)
self.assertEqual(self.Obs.parameter2.pop(0), 'Label')
self.assertEqual(self.Obs.signal.pop(0), 'DocChanged')
self.assertTrue(self.Obs.parameter.pop(0) is self.Doc1)
self.assertEqual(self.Obs.parameter2.pop(0), 'Label')
self.assertEqual(self.Obs.signal.pop(0), 'DocRelabled')
self.assertTrue(self.Obs.parameter.pop(0) is self.Doc1)
self.assertTrue(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
self.Doc2 = FreeCAD.newDocument("Observer2");
if FreeCAD.GuiUp:
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.pop(0) is self.Doc2)
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
self.assertEqual(self.Obs.signal.pop(0), 'DocActivated')
self.assertTrue(self.Obs.parameter.pop(0) is self.Doc2)
self.assertEqual(self.Obs.signal.pop(0), 'DocCreated')
self.assertTrue(self.Obs.parameter.pop(0) is self.Doc2)
self.assertEqual(self.Obs.signal.pop(0), 'DocBeforeChange')
self.assertTrue(self.Obs.parameter.pop(0) is self.Doc2)
self.assertEqual(self.Obs.parameter2.pop(0), 'Label')
self.assertEqual(self.Obs.signal.pop(0), 'DocChanged')
self.assertTrue(self.Obs.parameter.pop(0) is self.Doc2)
self.assertEqual(self.Obs.parameter2.pop(0), 'Label')
self.assertEqual(self.Obs.signal.pop(0), 'DocRelabled')
self.assertTrue(self.Obs.parameter.pop(0) is self.Doc2)
self.assertTrue(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.pop() is self.Doc1)
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
self.assertEqual(self.Obs.signal.pop(), 'DocActivated')
self.assertTrue(self.Obs.parameter.pop() is self.Doc1)
self.assertTrue(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
#undo/redo is not enabled in cmd line mode by default
self.Doc2.UndoMode = 1
self.Doc2.openTransaction('test')
self.failUnless(self.Obs.signal.pop() == 'DocOpenTransaction')
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.assertEqual(self.Obs.signal.pop(), 'DocOpenTransaction')
self.assertTrue(self.Obs.parameter.pop() is self.Doc2)
self.assertEqual(self.Obs.parameter2.pop(), 'test')
self.assertTrue(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.pop() is self.Doc2)
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
self.assertEqual(self.Obs.signal.pop(), 'DocCommitTransaction')
self.assertTrue(self.Obs.parameter.pop() is self.Doc2)
self.assertTrue(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.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.assertEqual(self.Obs.signal.pop(), 'DocOpenTransaction')
self.assertTrue(self.Obs.parameter.pop() is self.Doc2)
self.assertEqual(self.Obs.parameter2.pop(), 'test2')
self.assertTrue(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.pop() is self.Doc2)
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
self.assertEqual(self.Obs.signal.pop(), 'DocAbortTransaction')
self.assertTrue(self.Obs.parameter.pop() is self.Doc2)
self.assertTrue(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.pop() is self.Doc2)
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
self.assertEqual(self.Obs.signal.pop(), 'DocUndo')
self.assertTrue(self.Obs.parameter.pop() is self.Doc2)
self.assertTrue(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.pop() is self.Doc2)
self.failUnless(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
self.assertEqual(self.Obs.signal.pop(), 'DocRedo')
self.assertTrue(self.Obs.parameter.pop() is self.Doc2)
self.assertTrue(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.pop(0) is self.Doc1)
self.failUnless(self.Obs.parameter2.pop(0) == 'Comment')
self.assertEqual(self.Obs.signal.pop(0), 'DocBeforeChange')
self.assertTrue(self.Obs.parameter.pop(0) is self.Doc1)
self.assertEqual(self.Obs.parameter2.pop(0), 'Comment')
self.assertEqual(self.Obs.signal.pop(0), 'DocChanged')
self.assertTrue(self.Obs.parameter.pop(0) is self.Doc1)
self.assertEqual(self.Obs.parameter2.pop(0), 'Comment')
FreeCAD.closeDocument(self.Doc2.Name)
self.failUnless(self.Obs.signal.pop() == 'DocDeleted')
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.assertEqual(self.Obs.signal.pop(), 'DocDeleted')
self.assertTrue(self.Obs.parameter.pop() is self.Doc2)
self.assertTrue(not self.Obs.signal and not self.Obs.parameter and not self.Obs.parameter2)
FreeCAD.closeDocument(self.Doc1.Name)
self.assertEqual(self.Obs.signal.pop(), 'DocDeleted')