1 # Copyright (C) 2006-2015 CEA/DEN, EDF R&D
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License, or (at your option) any later version.
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 # Lesser General Public License for more details.
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
24 class TestContainerRef(unittest.TestCase):
26 SALOMERuntime.RuntimeSALOME_setRuntime()
27 self.r=SALOMERuntime.getSALOMERuntime()
28 self.p=self.r.createProc("pr")
31 """test delete following creation from class"""
32 co=self.r.createContainer()
33 self.assertEqual(co.getRefCnt(), 1)
34 self.assert_(co.thisown)
38 """test delete following creation from createContainer and delitem from containerMap"""
39 co=self.p.createContainer("c2")
40 del self.p.containerMap["c2"]
41 self.assert_(co.thisown)
42 self.assertEqual(co.getRefCnt(), 1)
46 """test delete following creation from createContainer and
47 manipulations on containerMap
49 co=self.p.createContainer("c2")
50 self.p.containerMap["c2"]=co
51 del self.p.containerMap["c2"]
52 self.assert_(co.thisown)
53 self.assertEqual(co.getRefCnt(), 1)
57 """test existence on getitem followed by delitem"""
58 self.p.createContainer("c9")
59 co=self.p.containerMap["c9"]
60 self.assertEqual(co.getRefCnt(), 2)
61 del self.p.containerMap["c9"]
62 self.assertEqual(co.getName(), "c9")
63 self.assertEqual(co.getRefCnt(), 1)
64 self.assert_(co.thisown)
68 """test delete from containerMap following creation from createContainer"""
69 co=self.p.createContainer("c10")
70 del self.p.containerMap["c10"]
71 self.assertEqual(co.getName(), "c10")
72 self.assertEqual(co.getRefCnt(), 1)
73 self.assert_(co.thisown)
77 """test existence container following delete proc"""
78 co=self.p.createContainer("c10")
80 self.assertEqual(co.getName(), "c10")
81 self.assertEqual(co.getRefCnt(), 1)
82 self.assert_(co.thisown)
86 """test ownership of container on getitem from containerMap"""
87 co=self.p.createContainer("c8")
88 self.assertEqual(co.getRefCnt(), 2)
89 self.assert_(co.thisown)
91 self.assertEqual(self.p.containerMap["c8"].getRefCnt(), 2) # +1 for getitem
92 co=self.p.containerMap["c8"]
93 self.assertEqual(co.getRefCnt(), 2)
94 self.assert_(co.thisown)
96 self.assertEqual(self.p.containerMap["c8"].getRefCnt(), 2) # +1 for getitem
97 del self.p.containerMap["c8"]
100 """test getitem following creation from class"""
101 co=self.r.createContainer()
102 self.assertEqual(co.getRefCnt(), 1)
103 self.p.containerMap["c8"]=co
104 self.assertEqual(co.getRefCnt(), 2)
105 d=self.p.containerMap["c8"]
106 self.assertEqual(d.getRefCnt(), 3)
107 del self.p.containerMap["c8"]
108 self.assertEqual(d.getRefCnt(), 2)
109 self.assertEqual(co.getRefCnt(), 2)
111 self.assertEqual(d.getRefCnt(), 1)
114 """test setitem following creation from class"""
115 co=self.r.createContainer()
116 self.p.containerMap["c8"]=co
117 d=self.p.containerMap["c8"]
118 self.p.containerMap["c9"]=d
119 self.assertEqual(d.getRefCnt(), 4)
122 """test method values"""
123 self.p.createContainer("c8")
124 for co in self.p.containerMap.values():
125 self.assert_(co.thisown)
126 self.assertEqual(co.getRefCnt(), 2)
129 """test method items"""
130 self.p.createContainer("c8")
131 for k,co in self.p.containerMap.items():
132 self.assert_(co.thisown)
133 self.assertEqual(co.getRefCnt(), 2)
136 """test method clear"""
137 co=self.p.createContainer("c8")
138 self.p.containerMap.clear()
139 self.assert_(co.thisown)
140 self.assertEqual(co.getRefCnt(), 1)
143 """test method update"""
144 co=self.p.createContainer("c8")
146 self.p.containerMap.update(d)
147 self.assert_(co.thisown)
148 self.assertEqual(co.getRefCnt(), 3)
150 class TestTypeCodeRef(unittest.TestCase):
152 self.r=SALOMERuntime.getSALOMERuntime()
153 self.p=self.r.createProc("pr")
156 """test delete following creation from createSequenceTc"""
157 tc=pilot.TypeCode(pilot.Double)
158 self.assertEqual(tc.getRefCnt(), 1)
159 self.assert_(tc.thisown)
162 """test delete following creation from createInterfaceTc and delitem from typeMap"""
163 tc=self.p.createInterfaceTc("","obj",[])
164 del self.p.typeMap["obj"]
165 self.assert_(tc.thisown)
166 self.assertEqual(tc.getRefCnt(), 1)
169 """test delete following creation from createInterfaceTc and
170 manipulations on typeMap
172 tc=self.p.createInterfaceTc("","obj",[])
173 self.p.typeMap["obj"]=tc
174 del self.p.typeMap["obj"]
175 self.assert_(tc.thisown)
176 self.assertEqual(tc.getRefCnt(), 1)
179 """test existence on getitem followed by delitem"""
180 self.p.createInterfaceTc("","obj",[])
181 tc=self.p.typeMap["obj"]
182 self.assertEqual(tc.getRefCnt(), 2)
183 del self.p.typeMap["obj"]
184 self.assertEqual(tc.getRefCnt(), 1)
185 self.assert_(tc.thisown)
188 """test delete from typeMap following creation from createInterfaceTc"""
189 tc=self.p.createInterfaceTc("","obj",[])
190 del self.p.typeMap["obj"]
191 self.assertEqual(tc.getRefCnt(), 1)
192 self.assert_(tc.thisown)
195 """test existence TypeCode following delete proc"""
196 tc=self.p.createInterfaceTc("","obj",[])
198 self.assertEqual(tc.getRefCnt(), 1)
199 self.assert_(tc.thisown)
202 """test ownership of TypeCode on getitem from typeMap"""
203 tc=self.p.createInterfaceTc("","obj",[])
204 self.assertEqual(tc.getRefCnt(), 2)
205 self.assert_(tc.thisown)
207 self.assertEqual(self.p.typeMap["obj"].getRefCnt(), 2) # +1 for getitem
208 tc=self.p.typeMap["obj"]
209 self.assertEqual(tc.getRefCnt(), 2)
210 self.assert_(tc.thisown)
212 self.assertEqual(self.p.typeMap["obj"].getRefCnt(), 2) # +1 for getitem
213 del self.p.typeMap["obj"]
216 """test getitem following creation from class"""
217 tc=pilot.TypeCode.interfaceTc("obj","obj")
218 self.assertEqual(tc.getRefCnt(), 1)
219 self.p.typeMap["obj"]=tc
220 self.assertEqual(tc.getRefCnt(), 2)
221 d=self.p.typeMap["obj"]
222 self.assertEqual(d.getRefCnt(), 3)
223 del self.p.typeMap["obj"]
224 self.assertEqual(d.getRefCnt(), 2)
225 self.assertEqual(tc.getRefCnt(), 2)
227 self.assertEqual(d.getRefCnt(), 1)
230 """test setitem following creation from class"""
231 tc=pilot.TypeCodeObjref("obj","obj")
232 self.p.typeMap["obj"]=tc
233 d=self.p.typeMap["obj"]
234 self.p.typeMap["t9"]=d
235 self.assertEqual(d.getRefCnt(), 4)
238 """test method values"""
239 self.p.createInterfaceTc("","obj",[])
240 for tc in self.p.typeMap.values():
241 if tc.name()!="obj":continue
242 self.assert_(tc.thisown)
243 self.assertEqual(tc.getRefCnt(), 2)
246 """test method items"""
247 self.p.createInterfaceTc("","obj",[])
248 for k,tc in self.p.typeMap.items():
249 if tc.name()!="obj":continue
250 self.assert_(tc.thisown)
251 self.assertEqual(tc.getRefCnt(), 2)
254 """test method clear"""
255 tc=self.p.createInterfaceTc("","obj",[])
256 self.p.typeMap.clear()
257 self.assert_(tc.thisown)
258 self.assertEqual(tc.getRefCnt(), 1)
261 """test method update"""
262 tc=self.p.createInterfaceTc("","obj",[])
264 self.p.typeMap.update(d)
265 self.assert_(tc.thisown)
266 self.assertEqual(tc.getRefCnt(), 3)
268 if __name__ == '__main__':
270 U = os.getenv('USER')
271 f=open("/tmp/" + U + "/UnitTestsResult", 'a')
272 f.write(" --- TEST src/yacsloader: testRefcount.py\n")
273 suite1 = unittest.makeSuite(TestContainerRef)
274 suite2 = unittest.makeSuite(TestTypeCodeRef)
275 suite = unittest.TestSuite((suite1, suite2))
276 result=unittest.TextTestRunner(f, descriptions=1, verbosity=1).run(suite)
278 sys.exit(not result.wasSuccessful())