| 151 | | diagram.create(items.AssociationItem) |
|---|
| | 156 | |
|---|
| | 157 | a = diagram.create(items.AssociationItem) |
|---|
| | 158 | a.handles()[0].pos = (10, 20) |
|---|
| | 159 | a.handles()[1].pos = (50, 60) |
|---|
| | 160 | assert 10 == a.handles()[0].x, a.handles()[0].pos |
|---|
| | 161 | assert a.handles()[0].y == 20, a.handles()[0].pos |
|---|
| | 162 | assert a.handles()[1].pos == (50, 60), a.handles()[1].pos |
|---|
| 172 | | #for item in d.canvas.get_all_items(): |
|---|
| 173 | | # assert item.subject, 'No subject for %s' % item |
|---|
| | 183 | for item in d.canvas.get_all_items(): |
|---|
| | 184 | if isinstance(item, items.AssociationItem): |
|---|
| | 185 | aa = item |
|---|
| | 186 | assert aa |
|---|
| | 187 | assert aa.handles()[0].pos == (10, 20), aa.handles()[0].pos |
|---|
| | 188 | assert aa.handles()[1].pos == (50, 60), aa.handles()[1].pos |
|---|
| | 193 | def test_connection(self): |
|---|
| | 194 | """ |
|---|
| | 195 | Test connection loading of an association and two classes. |
|---|
| | 196 | (Should count for all line-like objects alike if this works). |
|---|
| | 197 | """ |
|---|
| | 198 | filename = '%s.gaphor' % __module__ |
|---|
| | 199 | |
|---|
| | 200 | diagram = UML.create(UML.Diagram) |
|---|
| | 201 | c1 = diagram.create(items.ClassItem, subject=UML.create(UML.Class)) |
|---|
| | 202 | c2 = diagram.create(items.ClassItem, subject=UML.create(UML.Class)) |
|---|
| | 203 | c2.matrix.translate(200, 200) |
|---|
| | 204 | c2.request_update() |
|---|
| | 205 | diagram.canvas.update_now() |
|---|
| | 206 | |
|---|
| | 207 | a = diagram.create(items.AssociationItem) |
|---|
| | 208 | |
|---|
| | 209 | adapter = component.queryMultiAdapter((c1, a), IConnect) |
|---|
| | 210 | assert adapter |
|---|
| | 211 | h = a.head |
|---|
| | 212 | adapter.connect(h, h.x, h.y) |
|---|
| | 213 | head_pos = h.pos |
|---|
| | 214 | |
|---|
| | 215 | adapter = component.queryMultiAdapter((c2, a), IConnect) |
|---|
| | 216 | assert adapter |
|---|
| | 217 | h = a.tail |
|---|
| | 218 | adapter.connect(h, h.x, h.y) |
|---|
| | 219 | tail_pos = h.pos |
|---|
| | 220 | |
|---|
| | 221 | diagram.canvas.update_now() |
|---|
| | 222 | |
|---|
| | 223 | assert a.head.y == 0, a.head.pos |
|---|
| | 224 | assert a.tail.x == 200, a.tail.pos |
|---|
| | 225 | |
|---|
| | 226 | fd = open(filename, 'w') |
|---|
| | 227 | storage.save(XMLWriter(fd)) |
|---|
| | 228 | fd.close() |
|---|
| | 229 | |
|---|
| | 230 | UML.flush() |
|---|
| | 231 | assert not list(UML.select()) |
|---|
| | 232 | |
|---|
| | 233 | storage.load(filename) |
|---|
| | 234 | |
|---|
| | 235 | assert len(UML.select(lambda e: e.isKindOf(UML.Diagram))) == 1 |
|---|
| | 236 | d = UML.select(lambda e: e.isKindOf(UML.Diagram))[0] |
|---|
| | 237 | |
|---|