示例#1
0
def test_group_updateorder():
    f = Frame()
    f.addfield("x", 1.)
    f.addfield("y", 2.)
    with pytest.raises(RuntimeError):
        f.updateorder = ["x", "y"]
    assert f.updateorder == None
    with pytest.raises(ValueError):
        f.updater = ["x", None]
    with pytest.raises(RuntimeError):
        f.updater = ["x", "z"]
    f.updater = ["y", "x"]
    assert f.updateorder == ["y", "x"]

    def upd_x(f):
        return f.x * f.y

    def upd_y(f):
        return f.x + f.y

    f.x.updater = upd_x
    f.y.updater = upd_y
    f.update()
    assert f.x == 3.
    assert f.y == 3.

    def upd(f):
        f.y.update()
        f.x.update()

    f.updater = Heartbeat(upd)
    f.update()
    assert f.x == 18.
    assert f.y == 6.
示例#2
0
def test_heartbeat_order():
    f = Frame()
    f.addfield("x", 1.)
    f.addfield("y", 2.)
    f.addfield("z", 3.)

    def sys(f):
        f.x = f.y * f.z

    def upd(f):
        f.y = f.z * f.x

    def dia(f):
        f.z = f.x * f.y

    f.updater = Heartbeat(updater=upd, systole=sys, diastole=dia)
    f.update()
    assert f.x == 6.
    assert f.y == 18.
    assert f.z == 108.