def test_set_agent_properties(test_world, test_nodenet):
    world = runtime.worlds[test_world]
    nodenet = runtime.get_nodenet(test_nodenet)
    nodenet.world = world
    runtime.load_nodenet(test_nodenet)
    runtime.set_worldagent_properties(test_world, test_nodenet, position=(5, 5))
    assert world.agents[test_nodenet].position == (5, 5)
    assert world.data['agents'][test_nodenet]['position'] == (5, 5)
def test_worldadapter_update_calls_reset_datatargets(test_world, test_nodenet):
    world = runtime.worlds[test_world]
    nodenet = runtime.get_nodenet(test_nodenet)
    runtime.load_nodenet(test_nodenet)
    nodenet.world = world
    runtime.set_nodenet_properties(nodenet.uid, worldadapter='Braitenberg', world_uid=world.uid)
    world.agents[test_nodenet].reset_datatargets = mock.MagicMock(name='reset')
    runtime.step_nodenet(test_nodenet)
    world.agents[test_nodenet].reset_datatargets.assert_called_once()
Example #3
0
def test_worldadapter_update_calls_reset_datatargets(test_world, test_nodenet):
    world = runtime.worlds[test_world]
    nodenet = runtime.get_nodenet(test_nodenet)
    runtime.load_nodenet(test_nodenet)
    nodenet.world = test_world
    runtime.set_nodenet_properties(nodenet.uid, worldadapter='Braitenberg', world_uid=world.uid)
    world.agents[test_nodenet].reset_datatargets = mock.MagicMock(name='reset')
    runtime.step_nodenet(test_nodenet)
    world.agents[test_nodenet].reset_datatargets.assert_called_once()
def test_reset_datatargets(test_world, test_nodenet):
    world = runtime.worlds[test_world]
    nodenet = runtime.get_nodenet(test_nodenet)
    runtime.load_nodenet(test_nodenet)
    nodenet.world = world
    runtime.set_nodenet_properties(nodenet.uid, worldadapter='Braitenberg', world_uid=world.uid)
    world.agents[test_nodenet].datatargets['engine_r'] = 0.7
    world.agents[test_nodenet].datatargets['engine_l'] = 0.2
    world.agents[test_nodenet].reset_datatargets()
    assert world.agents[test_nodenet].datatargets['engine_l'] == 0
    assert world.agents[test_nodenet].datatargets['engine_r'] == 0
Example #5
0
def test_reset_datatargets(test_world, test_nodenet):
    world = runtime.worlds[test_world]
    nodenet = runtime.get_nodenet(test_nodenet)
    runtime.load_nodenet(test_nodenet)
    nodenet.world = test_world
    runtime.set_nodenet_properties(nodenet.uid, worldadapter='Braitenberg', world_uid=world.uid)
    world.agents[test_nodenet].datatargets['engine_r'] = 0.7
    world.agents[test_nodenet].datatargets['engine_l'] = 0.2
    world.agents[test_nodenet].reset_datatargets()
    assert world.agents[test_nodenet].datatargets['engine_l'] == 0
    assert world.agents[test_nodenet].datatargets['engine_r'] == 0
Example #6
0
def test_agent_dying_unregisters_agent(test_world, test_nodenet):
    world = runtime.worlds[test_world]
    nodenet = runtime.get_nodenet(test_nodenet)
    runtime.load_nodenet(test_nodenet)
    nodenet.world = test_world
    runtime.set_nodenet_properties(nodenet.uid, worldadapter='Braitenberg', world_uid=world.uid)
    assert nodenet.uid in world.agents
    mockdead = mock.Mock(return_value=False)
    world.agents[nodenet.uid].is_alive = mockdead
    world.step()
    assert nodenet.uid not in world.agents
Example #7
0
def test_register_agent(test_world, test_nodenet):
    world = runtime.worlds[test_world]
    nodenet = runtime.get_nodenet(test_nodenet)
    assert nodenet.uid not in world.data['agents']
    runtime.load_nodenet(test_nodenet)
    nodenet.world = test_world
    runtime.set_nodenet_properties(nodenet.uid, worldadapter='Braitenberg', world_uid=world.uid)
    assert nodenet.uid in world.data['agents']
    assert nodenet.uid in world.agents
    runtime.save_world(test_world)
    runtime.revert_world(test_world)
    assert nodenet.uid in world.data['agents']
    assert nodenet.uid in world.agents
def test_register_agent(test_world, test_nodenet):
    world = runtime.worlds[test_world]
    nodenet = runtime.get_nodenet(test_nodenet)
    assert nodenet.uid not in world.data['agents']
    runtime.load_nodenet(test_nodenet)
    nodenet.world = world
    runtime.set_nodenet_properties(nodenet.uid, worldadapter='Braitenberg', world_uid=world.uid)
    assert nodenet.uid in world.data['agents']
    assert nodenet.uid in world.agents
    runtime.save_world(test_world)
    runtime.revert_world(test_world)
    assert nodenet.uid in world.data['agents']
    assert nodenet.uid in world.agents
def test_save_nodenet(test_nodenet):
    # save_nodenet
    micropsi.save_nodenet(test_nodenet)
    # unload_nodenet
    micropsi.unload_nodenet(test_nodenet)
    try:
        micropsi.get_nodespace(test_nodenet, "Root", -1)
        assert False, "could fetch a Nodespace that should not have been in memory"
    except:
        pass
    # load_nodenet
    micropsi.load_nodenet(test_nodenet)
    nodespace = micropsi.get_nodespace(test_nodenet, "Root", -1)
    assert len(nodespace["nodes"]) == 4
Example #10
0
def select_nodenet_from_console(nodenet_uid):
    user_id, permissions, token = get_request_data()
    result, uid = runtime.load_nodenet(nodenet_uid)
    if not result:
        return template("error", msg="Could not select nodenet")
    response.set_cookie("selected_nodenet", nodenet_uid + "/", path="/")
    redirect("/")
Example #11
0
def test_save_nodenet(test_nodenet):
    prepare_nodenet(test_nodenet)
    # save_nodenet
    micropsi.save_nodenet(test_nodenet)
    # unload_nodenet
    micropsi.unload_nodenet(test_nodenet)
    try:
        micropsi.get_nodenet_data(test_nodenet, None)
        assert False, "could fetch a Nodespace that should not have been in memory"
    except:
        pass
    # load_nodenet
    micropsi.load_nodenet(test_nodenet)
    nodespace = micropsi.get_nodenet_data(test_nodenet, None)
    assert len(nodespace["nodes"]) == 4
    micropsi.delete_nodenet(test_nodenet)
Example #12
0
def load_nodenet(nodenet_uid, **coordinates):
    result, uid = runtime.load_nodenet(nodenet_uid)
    if not result:
        return dict(Error=uid)
    data = runtime.get_nodenet_data(nodenet_uid, **coordinates)
    data['nodetypes'] = runtime.get_available_node_types(nodenet_uid)
    return data
Example #13
0
def load_nodenet(nodenet_uid, nodespace='Root', include_links=True):
    result, uid = runtime.load_nodenet(nodenet_uid)
    if result:
        data = runtime.get_nodenet_data(nodenet_uid, nodespace, -1, include_links)
        data['nodetypes'] = runtime.get_available_node_types(nodenet_uid)
        data['recipes'] = runtime.get_available_recipes()
        return True, data
    else:
        return False, uid
Example #14
0
def test_add_node(test_nodenet):
    micropsi.load_nodenet(test_nodenet)
    # make sure nodenet is empty
    nodespace = micropsi.get_nodes(test_nodenet)
    try:
        for i in nodespace["nodes"]:
            micropsi.delete_node(test_nodenet, i)
    except:
        pass

    nodespace = micropsi.get_nodes(test_nodenet)
    assert len(nodespace.get("nodes", [])) == 0
    res, uid = micropsi.add_node(test_nodenet, "Pipe", [200, 250, 10], None, state=None, name="A")
    nodespace = micropsi.get_nodes(test_nodenet)
    assert len(nodespace["nodes"]) == 1
    node1 = nodespace["nodes"][uid]
    assert node1["name"] == "A"
    assert node1["position"] == [200, 250, 10]
Example #15
0
def load_nodenet(nodenet_uid, nodespace='Root', coordinates={}):
    result, uid = runtime.load_nodenet(nodenet_uid)
    if result:
        data = runtime.get_nodenet_data(nodenet_uid, nodespace, coordinates)
        data['nodetypes'] = runtime.get_available_node_types(nodenet_uid)
        data['recipes'] = runtime.get_available_recipes()
        return True, data
    else:
        return False, uid
Example #16
0
def test_add_node(test_nodenet):
    micropsi.load_nodenet(test_nodenet)
    # make sure nodenet is empty
    nodespace = micropsi.get_nodenet_data(test_nodenet, None)
    try:
        for i in nodespace["nodes"]:
            micropsi.delete_node(test_nodenet, i)
    except:
        pass

    nodespace = micropsi.get_nodenet_data(test_nodenet, None)
    assert len(nodespace.get("nodes", [])) == 0
    assert len(nodespace.get("links", [])) == 0
    res, uid = micropsi.add_node(test_nodenet, "Pipe", (200, 250), None, state=None, name="A")
    nodespace = micropsi.get_nodenet_data(test_nodenet, None)
    assert len(nodespace["nodes"]) == 1
    node1 = nodespace["nodes"][uid]
    assert node1["name"] == "A"
    assert node1["position"] == (200, 250)
Example #17
0
def test_actuators_do_not_reset_each_others_datatarget(test_world, test_nodenet):
    world = runtime.worlds[test_world]
    nodenet = runtime.get_nodenet(test_nodenet)
    runtime.load_nodenet(test_nodenet)
    nodenet.world = test_world
    runtime.set_runner_properties(200, 1)
    runtime.set_nodenet_properties(nodenet.uid, worldadapter='Braitenberg', world_uid=world.uid)
    actor1 = nodenet.netapi.create_node("Actor", None)
    actor2 = nodenet.netapi.create_node("Actor", None)
    actor1.set_parameter('datatarget', 'engine_r')
    actor2.set_parameter('datatarget', 'engine_r')
    reg1 = nodenet.netapi.create_node("Register", None)
    reg2 = nodenet.netapi.create_node("Register", None)
    nodenet.netapi.link(reg1, 'gen', actor1, 'gen')
    nodenet.netapi.link(reg2, 'gen', actor2, 'gen')
    reg1.activation = 0.7
    reg2.activation = 0.3
    mock_reset = mock.Mock(return_value=None)
    world.agents[test_nodenet].reset_datatargets = mock_reset
    runtime.step_nodenet(test_nodenet)
    assert world.agents[test_nodenet].datatargets['engine_r'] == 1
def test_actuators_do_not_reset_each_others_datatarget(test_world, test_nodenet):
    world = runtime.worlds[test_world]
    nodenet = runtime.get_nodenet(test_nodenet)
    runtime.load_nodenet(test_nodenet)
    nodenet.world = world
    runtime.set_runner_properties(200, 1)
    runtime.set_nodenet_properties(nodenet.uid, worldadapter='Braitenberg', world_uid=world.uid)
    actor1 = nodenet.netapi.create_node("Actor", "Root")
    actor2 = nodenet.netapi.create_node("Actor", "Root")
    actor1.set_parameter('datatarget', 'engine_r')
    actor2.set_parameter('datatarget', 'engine_r')
    reg1 = nodenet.netapi.create_node("Register", "Root")
    reg2 = nodenet.netapi.create_node("Register", "Root")
    nodenet.netapi.link(reg1, 'gen', actor1, 'gen')
    nodenet.netapi.link(reg2, 'gen', actor2, 'gen')
    reg1.activation = 0.7
    reg2.activation = 0.3
    runtime.step_nodenet(test_nodenet)
    actor1.node_function()
    actor2.node_function()
    assert world.agents[test_nodenet].datatargets['engine_r'] == 1
def test_add_node(test_nodenet):
    micropsi.load_nodenet(test_nodenet)
    # make sure nodenet is empty
    nodespace = micropsi.get_nodespace(test_nodenet, "Root", -1)
    try:
        for i in nodespace["nodes"]:
            micropsi.delete_node(test_nodenet, i)
    except:
        pass

    nodespace = micropsi.get_nodespace(test_nodenet, "Root", -1)
    assert len(nodespace.get("nodes", [])) == 0
    assert len(nodespace.get("links", [])) == 0
    micropsi.add_node(test_nodenet, "Concept", (200, 250), "Root", state=None, uid="node_a", name="A")
    nodespace = micropsi.get_nodespace(test_nodenet, "Root", -1)
    assert len(nodespace["nodes"]) == 1
    node1 = nodespace["nodes"]["node_a"]
    assert node1["name"] == "A"
    assert node1["position"] == (200, 250)

    micropsi.add_node(test_nodenet, "Concept", (500, 350), "Root", state=None, uid="node_b", name="B")
    micropsi.add_node(test_nodenet, "Concept", (300, 150), "Root", state=None, uid="node_c", name="C")
    micropsi.add_node(test_nodenet, "Sensor", (200, 450), "Root", state=None, uid="node_s", name="S")
Example #20
0
def select_nodenet(nodenet_uid):
    return runtime.load_nodenet(nodenet_uid)
Example #21
0
def select_nodenet(nodenet_uid):
    result, msg = runtime.load_nodenet(nodenet_uid)
    if result:
        return dict(Status="OK")
    else:
        return dict(Error=msg)
def test_copy_nodes():
    success, nodenet_uid1 = micropsi.new_nodenet("Origin_Nodenet", "Default", owner="tester")
    success, nodenet_uid2 = micropsi.new_nodenet("Target_Nodenet", "Default", owner="tester")

    # create a few nodes
    assert nodenet_uid1 not in micropsi.nodenets
    micropsi.load_nodenet(nodenet_uid1)
    assert nodenet_uid1 in micropsi.nodenets
    micropsi.load_nodenet(nodenet_uid2)
    assert nodenet_uid1 in micropsi.nodenets
    assert nodenet_uid2 in micropsi.nodenets

    micropsi.add_node(nodenet_uid1, "Nodespace", (100, 150), "Root", uid="ns1")
    micropsi.add_node(nodenet_uid1, "Nodespace", (200, 150), "Root", uid="confl")
    micropsi.add_node(nodenet_uid1, "Nodespace", (400, 150), "Root", uid="ns2")
    micropsi.add_node(nodenet_uid2, "Nodespace", (200, 150), "Root", uid="confl")

    micropsi.add_node(nodenet_uid1, "Register", (300, 140), "Root", uid="n1")
    micropsi.add_node(nodenet_uid1, "Register", (300, 240), "Root", uid="n2")
    micropsi.add_node(nodenet_uid1, "Register", (300, 340), "Root", uid="associated_node")
    micropsi.add_node(nodenet_uid1, "Register", (400, 240), "ns1", uid="n3")
    micropsi.add_node(nodenet_uid1, "Register", (400, 240), "ns2", uid="n4")
    micropsi.add_node(nodenet_uid1, "Register", (100, 240), "confl", uid="n5")
    micropsi.add_node(nodenet_uid2, "Register", (100, 140), "Root", uid="n1")
    micropsi.add_node(nodenet_uid2, "Register", (150, 240), "Root", uid="nt2")

    micropsi.add_link(nodenet_uid1, "n1", "gen", "n2", "gen", uid="l1")
    micropsi.add_link(nodenet_uid1, "n2", "gen", "n3", "gen", uid="l2")
    micropsi.add_link(nodenet_uid1, "n1", "gen", "associated_node", "gen", uid="la")
    micropsi.add_link(nodenet_uid1, "n3", "gen", "n1", "gen", uid="l3")
    micropsi.add_link(nodenet_uid1, "n4", "gen", "n1", "gen", uid="l4")
    micropsi.add_link(nodenet_uid2, "n1", "gen", "nt2", "gen", uid="l1")

    # now copy stuff between nodespaces
    micropsi.copy_nodes( ["n1", "n2", "n3", "n5", "ns1", "confl"], nodenet_uid1, nodenet_uid2)

    micropsi.save_nodenet(nodenet_uid1)
    micropsi.save_nodenet(nodenet_uid2)

    target = micropsi.get_nodespace(nodenet_uid2, "Root", -1)
    assert len(target["nodes"]) == 4 + 2
    assert len(target["nodespaces"]) == 2 + 2

    assert "n1" in target["nodes"]
    assert "n2" in target["nodes"]
    assert "n3" in target["nodes"]
    assert "associated_node" not in target["nodes"]
    assert "n4" not in target["nodes"]
    assert "n5" in target["nodes"]
    assert "nt2" in target["nodes"]

    assert "ns1" in target["nodespaces"]
    assert "ns2" not in target["nodespaces"]
    assert "confl" in target["nodespaces"]

    assert len(target["links"]) == 3 + 1
    assert "l1" in target["links"]
    assert "l2" in target["links"]
    assert "l3" in target["links"]
    assert "l4" not in target["links"]

    # we should also test for parentage and link connectivity


    # TODO now test copying within the same nodenet

    micropsi.copy_nodes( ["n1", "n2", "n3", "n5", "ns1", "confl"], nodenet_uid1, nodenet_uid1, target_nodespace_uid="ns2" )
    micropsi.save_nodenet(nodenet_uid1)
    # delete_nodenets
    micropsi.delete_nodenet(nodenet_uid1)
    micropsi.delete_nodenet(nodenet_uid2)