예제 #1
0
def test_disconnect_should_disconnect_model(connected_association):
    asc, c1, c2 = connected_association

    disconnect(asc, asc.head)
    disconnect(asc, asc.tail)
    assert c1 is not get_connected(asc, asc.head)
    assert c2 is not get_connected(asc, asc.tail)

    assert asc.subject
    assert len(asc.subject.memberEnd) == 2
    assert asc.subject.memberEnd[0].type is None
    assert asc.subject.memberEnd[1].type is None
예제 #2
0
def test_generalization_reconnection(create, element_factory):
    """Test generalization item connection using two classes.

    On reconnection a new Generalization is created.
    """
    gen = create(GeneralizationItem)
    c1 = create(ClassItem, UML.Class)
    c2 = create(ClassItem, UML.Class)

    connect(gen, gen.tail, c1)
    assert get_connected(gen, gen.tail) is c1

    connect(gen, gen.head, c2)
    assert gen.subject is not None
    assert gen.subject.general is c2.subject
    assert gen.subject.specific is c1.subject

    # Now do the same on a new diagram:
    diagram2 = element_factory.create(UML.Diagram)
    c3 = diagram2.create(ClassItem, subject=c1.subject)
    c4 = diagram2.create(ClassItem, subject=c2.subject)
    gen2 = diagram2.create(GeneralizationItem)

    connect(gen2, gen2.head, c3)
    cinfo = diagram2.connections.get_connection(gen2.head)
    assert cinfo is not None
    assert cinfo.connected is c3

    connect(gen2, gen2.tail, c4)
    assert gen.subject is not gen2.subject
    assert len(c1.subject.generalization) == 1
    assert c1.subject.generalization[0] is gen.subject
예제 #3
0
def test_dependency_connect(create, element_factory):
    """Test dependency connecting to two actor items."""
    actor1 = create(ActorItem, UML.Actor)
    actor2 = create(ActorItem, UML.Actor)
    dep = create(DependencyItem)

    connect(dep, dep.head, actor1)
    connect(dep, dep.tail, actor2)

    assert dep.subject is not None
    assert isinstance(dep.subject, UML.Dependency)
    assert dep.subject in element_factory.select()

    hct = get_connected(dep, dep.head)
    tct = get_connected(dep, dep.tail)
    assert hct is actor1
    assert tct is actor2

    assert actor1.subject is dep.subject.supplier
    assert actor2.subject is dep.subject.client
예제 #4
0
def test_generalization_connection(create):
    """Test generalization item connection using two classes."""
    gen = create(GeneralizationItem)
    c1 = create(ClassItem, UML.Class)
    c2 = create(ClassItem, UML.Class)

    connect(gen, gen.tail, c1)
    assert get_connected(gen, gen.tail) is c1

    connect(gen, gen.head, c2)
    assert gen.subject is not None
    assert gen.subject.general is c2.subject
    assert gen.subject.specific is c1.subject
예제 #5
0
def test_dependency_disconnect(create, element_factory):
    actor1 = create(ActorItem, UML.Actor)
    actor2 = create(ActorItem, UML.Actor)
    dep = create(DependencyItem)

    connect(dep, dep.head, actor1)
    connect(dep, dep.tail, actor2)

    dep_subj = dep.subject
    disconnect(dep, dep.tail)

    assert dep.subject is None
    assert get_connected(dep, dep.tail) is None
    assert dep_subj not in element_factory.select()
    assert dep_subj not in actor1.subject.supplierDependency
    assert dep_subj not in actor2.subject.clientDependency
예제 #6
0
def test_generalization_glue(create):
    """Test generalization item gluing using two classes."""

    gen = create(GeneralizationItem)
    c1 = create(ClassItem, UML.Class)
    c2 = create(ClassItem, UML.Class)

    glued = allow(gen, gen.tail, c1)
    assert glued

    connect(gen, gen.tail, c1)
    assert get_connected(gen, gen.tail) is c1
    assert gen.subject is None

    glued = allow(gen, gen.head, c2)
    assert glued