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()
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
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
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
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
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("/")
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)
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
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
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]
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
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)
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")
def select_nodenet(nodenet_uid): return runtime.load_nodenet(nodenet_uid)
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)