root/gaphor/tags/gaphor-0.13.0/tests/test-diagramitems.py

Revision 2156, 4.7 kB (checked in by arj..@yirdis.nl, 1 year ago)

fixed tests.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1 # vim:sw=4:et:ai
2
3 import unittest
4 from weakref import ref as wref
5 from sys import getrefcount
6 from gaphor import UML
7 from gaphor.diagram import items
8
9 from gaphor.application import Application
10 Application.shutdown()
11
12 factory = UML.ElementFactory()
13 factory.init(Application)
14
15
16 class TestDiagramItems(unittest.TestCase):
17
18     def gc_collect(self):
19         import gc
20         for x in range(6): gc.collect()
21
22     def _testTemplate1(self, uml_class, item_class):
23         m = factory.create(UML.Package)
24         d = factory.create(UML.Diagram)
25         d.package = m
26         p1 = factory.create(uml_class)
27         p1.package = m
28         pi1 = d.create(item_class)
29         pi1.subject = p1
30         w_m = wref(m)
31         w_d = wref(d)
32         w_p1 = wref(p1)
33         w_pi1 = wref(pi1)
34         del m, d, p1, pi1
35         factory.flush()
36         self.gc_collect()
37         self.assertEquals(w_m(), None)
38         self.failUnless(w_d() is None)
39         self.failUnless(w_p1() is None)
40         self.failUnless(w_pi1() is None)
41
42     def _testTemplate2(self, uml_class, item_class):
43         m = factory.create(UML.Package)
44         d = factory.create(UML.Diagram)
45         d.package = m
46         p1 = factory.create(uml_class)
47         p1.package = m
48         pi1 = d.create(item_class)
49         pi1.subject = p1
50         rc_p1 = getrefcount(p1)
51         rc_pi1 = getrefcount(pi1)
52         p2 = factory.create(uml_class)
53         p2.package = m
54         pi2 = d.create(item_class)
55         pi2.subject = p2
56         self.assertEquals(getrefcount(p1), rc_p1)
57         self.assertEquals(getrefcount(pi1), rc_pi1)
58         d.canvas.update_now()
59         self.assertEquals(getrefcount(p1), rc_p1)
60         self.assertEquals(getrefcount(pi1), rc_pi1)
61         w_m = wref(m)
62         w_d = wref(d)
63         w_p1 = wref(p1)
64         w_pi1 = wref(pi1)
65         w_p2 = wref(p2)
66         w_pi2 = wref(pi2)
67         self.assertEquals(getrefcount(p1), rc_p1)
68         self.assertEquals(getrefcount(pi1), rc_pi1)
69         del m, d, p1, pi1, p2, pi2
70         self.assertEquals(getrefcount(w_p1()), rc_p1 - 1)
71         self.assertEquals(getrefcount(w_pi1()), rc_pi1 - 1)
72         factory.flush()
73         self.gc_collect()
74         self.failUnless(w_p1() is None, getrefcount(w_p1()))
75         self.failUnless(w_pi1() is None, getrefcount(w_p1()))
76         self.failUnless(w_p2() is None, getrefcount(w_p1()))
77         self.failUnless(w_pi2() is None, getrefcount(w_p1()))
78         self.failUnless(w_m() is None, getrefcount(w_p1()))
79         self.failUnless(w_d() is None, getrefcount(w_p1()))
80
81     def testPackage1(self):
82         self._testTemplate1(UML.Package, items.PackageItem)
83
84     def testPackage2(self):
85         self._testTemplate2(UML.Package, items.PackageItem)
86
87     def testClass1(self):
88         self._testTemplate1(UML.Class, items.ClassItem)
89
90     def testClass2(self):
91         self._testTemplate2(UML.Class, items.ClassItem)
92
93     def testDependency1(self):
94         self._testTemplate1(UML.Dependency, items.DependencyItem)
95
96     def testDependency2(self):
97         self._testTemplate2(UML.Dependency, items.DependencyItem)
98
99     def _testTemplate3(self, uml_class, item_class):
100         import gtk
101         import gaphor.ui as ui
102         m = factory.create(UML.Package)
103         d = factory.create(UML.Diagram)
104         d.package = m
105         p1 = factory.create(uml_class)
106         p1.package = m
107         pi1 = d.create(item_class)
108         pi1.subject = p1
109         rc_p1 = getrefcount(p1)
110         rc_pi1 = getrefcount(pi1)
111         p2 = factory.create(uml_class)
112         p2.package = m
113         pi2 = d.create(item_class)
114         pi2.subject = p2
115         self.assertEquals(getrefcount(p1), rc_p1)
116         self.assertEquals(getrefcount(pi1), rc_pi1)
117         d.canvas.update_now()
118         win = gtk.Window()
119         view = ui.DiagramView(d)
120         win.add(view)
121         win.show_all()
122         win.destroy()
123         self.assertEquals(getrefcount(p1), rc_p1)
124         self.assertEquals(getrefcount(pi1), rc_pi1)
125         w_m = wref(m)
126         w_d = wref(d)
127         w_p1 = wref(p1)
128         w_pi1 = wref(pi1)
129         w_p2 = wref(p2)
130         w_pi2 = wref(pi2)
131         self.assertEquals(getrefcount(p1), rc_p1)
132         self.assertEquals(getrefcount(pi1), rc_pi1)
133         del m, d, p1, pi1, p2, pi2
134         del win, view
135         self.assertEquals(getrefcount(w_p1()), rc_p1 - 1)
136         self.assertEquals(getrefcount(w_pi1()), rc_pi1 - 1)
137         factory.flush()
138         self.gc_collect()
139         self.failUnless(w_p1() is None, getrefcount(w_p1()))
140         self.failUnless(w_pi1() is None, getrefcount(w_p1()))
141         self.failUnless(w_p2() is None, getrefcount(w_p1()))
142         self.failUnless(w_pi2() is None, getrefcount(w_p1()))
143         self.failUnless(w_m() is None, getrefcount(w_p1()))
144         self.failUnless(w_d() is None, getrefcount(w_p1()))
145
146 if __name__ == '__main__':
147     unittest.main()
148
Note: See TracBrowser for help on using the browser.