예제 #1
0
def test_port_copy():
    m = ConcreteModel()
    m.b1 = Block()
    m.b2 = Block()
    m.b1.x = Var(initialize=3)
    m.b1.y = Var([0, 1], initialize={0: 4, 1: 5})
    m.b1.z = Var([0, 1], ["A", "B"],
                 initialize={
                     (0, "A"): 6,
                     (0, "B"): 7,
                     (1, "A"): 8,
                     (1, "B"): 9
                 })
    m.b2.x = Var(initialize=1)
    m.b2.y = Var([0, 1], initialize=1)
    m.b2.z = Var([0, 1], ["A", "B"], initialize=1)
    m.b1.port = Port()
    m.b2.port = Port()
    m.b1.port.add(m.b1.x, "x")
    m.b1.port.add(m.b1.y, "y")
    m.b1.port.add(m.b1.z, "z")
    m.b2.port.add(m.b2.x, "x")
    m.b2.port.add(m.b2.y, "y")
    m.b2.port.add(m.b2.z, "z")
    copy_port_values(m.b2.port, m.b1.port)
    assert (m.b2.x == 3)
    assert (m.b2.y[0] == 4)
    assert (m.b2.y[1] == 5)
    assert (m.b2.z[0, "A"] == 6)
    assert (m.b2.z[0, "B"] == 7)
    assert (m.b2.z[1, "A"] == 8)
    assert (m.b2.z[1, "B"] == 9)
예제 #2
0
def test_port_copy():
    """DEPRECATED function test"""
    m = ConcreteModel()
    m.b1 = Block()
    m.b2 = Block()
    m.b1.x = Var(initialize=3)
    m.b1.y = Var([0, 1], initialize={0: 4, 1: 5})
    m.b1.z = Var([0, 1], ["A", "B"],
                 initialize={
                     (0, "A"): 6,
                     (0, "B"): 7,
                     (1, "A"): 8,
                     (1, "B"): 9
                 })
    m.b2.x = Var(initialize=1)
    m.b2.y = Var([0, 1], initialize=1)
    m.b2.z = Var([0, 1], ["A", "B"], initialize=1)
    m.b1.port = Port()
    m.b2.port = Port()
    m.b1.port.add(m.b1.x, "x")
    m.b1.port.add(m.b1.y, "y")
    m.b1.port.add(m.b1.z, "z")
    m.b2.port.add(m.b2.x, "x")
    m.b2.port.add(m.b2.y, "y")
    m.b2.port.add(m.b2.z, "z")

    def assert_copied_right():
        assert (m.b2.x.value == 3)
        assert (m.b2.y[0].value == 4)
        assert (m.b2.y[1].value == 5)
        assert (m.b2.z[0, "A"].value == 6)
        assert (m.b2.z[0, "B"].value == 7)
        assert (m.b2.z[1, "A"].value == 8)
        assert (m.b2.z[1, "B"].value == 9)

    def reset():
        m.b2.x = 0
        m.b2.y[0] = 0
        m.b2.y[1] = 0
        m.b2.z[0, "A"] = 0
        m.b2.z[0, "B"] = 0
        m.b2.z[1, "A"] = 0
        m.b2.z[1, "B"] = 0

    m.arc = Arc(source=m.b1.port, dest=m.b2.port)

    copy_port_values(m.b2.port, m.b1.port)
    assert_copied_right()
    reset()

    copy_port_values(source=m.b1.port, destination=m.b2.port)
    assert_copied_right()
    reset()

    copy_port_values(m.arc)
    assert_copied_right()
    reset()

    copy_port_values(arc=m.arc)
    assert_copied_right()
    reset()

    with pytest.raises(AttributeError):
        copy_port_values(arc=m.b1.port)

    with pytest.raises(RuntimeError):
        copy_port_values(source=m.b1.port, destination=m.b2.port, arc=m.arc)

    with pytest.raises(RuntimeError):
        copy_port_values(source=m.b1.port, arc=m.arc)

    with pytest.raises(AttributeError):
        copy_port_values(source=m.b1.port, destination=m.arc)