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 a8cea8c73f
commit a8a6c6572f

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')