Changeset 1076

Show
Ignore:
Timestamp:
11/19/06 12:51:17 (2 years ago)
Author:
arjanmol
Message:

added some more storage tests

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • gaphor/branches/new-canvas/gaphor/tests/test_storage.py

    r1074 r1076  
    88from gaphor.misc.xmlwriter import XMLWriter 
    99from gaphor.diagram import items 
     10from gaphor.diagram.interfaces import IConnect 
     11from zope import component 
     12 
     13# ensure adapters are loaded: 
     14import gaphor.adapters 
    1015 
    1116__module__ = 'test_storage' 
     
    149154        diagram.create(items.CommentItem, subject=UML.create(UML.Comment)) 
    150155        c1 = diagram.create(items.ClassItem, subject=UML.create(UML.Class)) 
    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 
    152163 
    153164        fd = open(filename, 'w') 
     
    170181        # Check load/save of other canvas items. 
    171182        assert len(d.canvas.get_all_items()) == 3 
    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 
    174189        d1 = d.canvas.select(lambda e: isinstance(e, items.ClassItem))[0] 
    175190        assert d1 
    176191        print d1, d1.subject 
    177192 
     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         
    178238# vim:sw=4:et:ai