root/gaphor/tags/gaphor-0.2.0/tests/diagram-destroy.py

Revision 110, 3.5 kB (checked in by arjanmol, 6 years ago)

Temp commit, not stable at all

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1 #!/usr/bin/env python
2 #
3 # Test the behavior of a UML tree with a Diagram as leaf. The whole tree
4 # should be freed...
5 #
6 # vim: sw=4
7
8 import sys
9 sys.path.insert(0, '..')
10 import gaphor.UML as UML
11 import gaphor.diagram as diagram
12 import weakref, gobject, gc
13 import unittest
14
15 factory = UML.ElementFactory()
16 diafactory = diagram.DiagramItemFactory()
17
18 class DiagramItemTestCase(unittest.TestCase):
19
20     def testSimpleItem(self):
21         item = diagram.ActorItem()
22         self.failUnless (item.subject == None)
23         w_item = weakref.ref(item)
24         del item
25         self.failUnless (w_item() != None, gc.get_referrers(w_item()))
26
27     def testItem2(self):
28         self.failUnlessEqual(len(factory._ElementFactory__signal._Signal__signals), 0)
29         gen = factory.create(UML.Generalization)
30         self.failUnlessEqual(len(factory._ElementFactory__signal._Signal__signals), 0)
31         self.failUnlessEqual(len(gen.__dict__['__signal']._Signal__signals), 1)
32         # gen, the element factory and getrefcount()
33         self.failUnlessEqual(sys.getrefcount(gen), 3)
34         factory.flush()
35         self.failUnlessEqual(len(gen.__dict__['__signal']._Signal__signals), 1)
36         w_gen = weakref.ref(gen)
37         del gen
38         self.failIf(w_gen(), 'Generalization not freed')
39
40     def testItemOnLine(self):
41         self.failUnlessEqual(len(factory._ElementFactory__signal._Signal__signals), 0)
42         gen = factory.create(UML.Generalization)
43         self.failUnlessEqual(len(factory._ElementFactory__signal._Signal__signals), 0)
44         self.failUnlessEqual(len(gen.__dict__['__signal']._Signal__signals), 1)
45         # gen, the element factory and getrefcount()
46         self.failUnlessEqual(sys.getrefcount(gen), 3)
47
48         dia = factory.create(UML.Diagram)
49         self.failUnlessEqual(len(dia.__dict__['__signal']._Signal__signals), 1)
50         self.failUnlessEqual(sys.getrefcount(dia), 3)
51
52         item = diafactory.create(dia, diagram.GeneralizationItem)
53         self.failUnlessEqual(len(gen.__dict__['__signal']._Signal__signals), 1)
54         self.failUnlessEqual(len(factory._ElementFactory__signal._Signal__signals), 0)
55         self.failUnlessEqual(sys.getrefcount(dia), 3)
56         self.failUnlessEqual(item.__grefcount__, 2)
57
58 #       item.set_property('subject', gen)
59         self.failUnlessEqual(sys.getrefcount(gen), 3)
60         item.set_subject(gen)
61         self.failUnlessEqual(sys.getrefcount(gen), 4)
62         self.failUnlessEqual(len(gen.__dict__['__signal']._Signal__signals), 2)
63         self.failUnlessEqual(sys.getrefcount(gen), 4)
64         self.failUnlessEqual(sys.getrefcount(dia), 3)
65
66         print 'flushing...'
67         factory.flush()
68 #       self.failUnlessEqual(len(gen.__dict__['__signal']._Signal__signals), 3)
69         print 'flush done'
70         w_gen = weakref.ref(gen)
71         print 'del gen'
72         del gen
73         print 'done'
74         self.failIf(w_gen(), 'Generalization not freed')
75
76     def no_testItemOnModel(self):
77         model = factory.create(UML.Model)
78         # One for model, one for the factory hash (and one extra ;-)
79         self.failUnlessEqual (sys.getrefcount(model), 3)
80         model.name = "MyModel"
81         actor = factory.create(UML.Generalization)
82         actor.namespace = model
83         self.failUnlessEqual (len(model.ownedElement.list), 1)
84         self.failUnlessEqual (sys.getrefcount(actor), 4)
85         self.failUnless (model.ownedElement.list[0] is actor)
86         self.failUnless (actor.namespace is model)
87         dia = factory.create(UML.Diagram)
88         dia.namespace = model
89         self.failUnlessEqual (sys.getrefcount(dia), 4)
90         item = diafactory.create(dia, diagram.ActorItem)
91         self.failUnless(item.parent is dia.canvas.root)
92         self.failUnless(item.subject is not None) # New actor has been created
93         self.failUnlessEqual(item.__grefcount__, 4)
94         self.failUnlessEqual(sys.getrefcount(item), 8)
95         item.set_property('subject', actor);
96         print 'refs:', gc.get_referrers (item)
97
98 if __name__ == '__main__':
99     unittest.main()
100
Note: See TracBrowser for help on using the browser.