| 146 | | def testSubjectNotify(self): |
|---|
| 147 | | """Test the working of the DiagramItem.on_subject_notify(). |
|---|
| 148 | | """ |
|---|
| 149 | | p1 = factory.create(UML.Package) |
|---|
| 150 | | p2 = factory.create(UML.Package) |
|---|
| 151 | | c = factory.create(UML.Class) |
|---|
| 152 | | d = factory.create(UML.Diagram) |
|---|
| 153 | | self.failUnless(getrefcount(c) == 3, getrefcount(c)) |
|---|
| 154 | | ci = d.create(items.ClassItem) |
|---|
| 155 | | |
|---|
| 156 | | # Add the class to the item |
|---|
| 157 | | #c.package = p1 |
|---|
| 158 | | ci.subject = c |
|---|
| 159 | | self.failUnless(len(c._observers['appliedStereotype']) == 1, |
|---|
| 160 | | c._observers['appliedStereotype']) |
|---|
| 161 | | self.failUnless(len(c._observers['isAbstract']) == 1, |
|---|
| 162 | | c._observers['isAbstract']) |
|---|
| 163 | | self.failUnless(len(c._observers['namespace']) == 2, |
|---|
| 164 | | c._observers['namespace']) |
|---|
| 165 | | self.failUnless(len(c._observers['ownedOperation']) == 1, |
|---|
| 166 | | c._observers['ownedOperation']) |
|---|
| 167 | | self.failUnless(len(c._observers['ownedAttribute']) == 1, |
|---|
| 168 | | c._observers['ownedAttribute']) |
|---|
| 169 | | |
|---|
| 170 | | # Change the package: |
|---|
| 171 | | #print '\n\nPhase 2:' |
|---|
| 172 | | c.package = p1 |
|---|
| 173 | | self.failUnless(len(c._observers['namespace']) == 2, |
|---|
| 174 | | c._observers['namespace']) |
|---|
| 175 | | self.failUnless(len(p1._observers.get('name', [])) == 1, |
|---|
| 176 | | p1._observers.get('name')) |
|---|
| 177 | | |
|---|
| 178 | | #print '\n\nPhase 3:' |
|---|
| 179 | | c.package = p2 |
|---|
| 180 | | self.failUnless(len(c._observers['namespace']) == 2, |
|---|
| 181 | | c._observers['namespace']) |
|---|
| 182 | | self.failUnless(len(p1._observers.get('name', [])) == 0, |
|---|
| 183 | | p1._observers.get('name')) |
|---|
| 184 | | self.failUnless(len(p2._observers.get('name', [])) == 1, |
|---|
| 185 | | p2._observers.get('name')) |
|---|
| 186 | | |
|---|
| 187 | | ci.subject = None |
|---|
| 188 | | # Note: does a __unlink__ on all elements -> c.package = None |
|---|
| 189 | | self.failUnless(len(c._observers['namespace']) == 0, |
|---|
| 190 | | c._observers['namespace']) |
|---|
| 191 | | self.failUnless(len(p1._observers.get('name', [])) == 0, |
|---|
| 192 | | p1._observers.get('name')) |
|---|
| 193 | | self.failUnless(len(p2._observers.get('name', [])) == 0, |
|---|
| 194 | | p2._observers.get('name')) |
|---|
| 195 | | |
|---|
| 196 | | #print '\nLast:' |
|---|
| 197 | | c.package = p2 |
|---|
| 198 | | ci.subject = c |
|---|
| 199 | | self.failUnless(len(c._observers['namespace']) == 2, |
|---|
| 200 | | c._observers['namespace']) |
|---|
| 201 | | self.failUnless(len(p1._observers.get('name', [])) == 0, |
|---|
| 202 | | p1._observers.get('name')) |
|---|
| 203 | | self.failUnless(len(p2._observers.get('name', [])) == 1, |
|---|
| 204 | | p2._observers.get('name')) |
|---|
| 205 | | |
|---|