def test_abstract_agent(): agent = standard.make_agent("div", lib.Div, ['a', 'b'], 'out', 'error') # Correct execution results = xgate(standard.abstract_agent, dict(gate = agent, select = [10, 2], in_command = "get"), ['out', 'error']) print(results) assert results['out'] == 5.0 assert results['error'] == VOID # Error in the gate results = xgate(standard.abstract_agent, dict(gate = agent, select = [10, 0], in_command = "get"), ['out', 'error']) assert results['out'] == VOID assert isinstance(results['error'], ZeroDivisionError) # Wrong number of arguments results = xgate(standard.abstract_agent, dict(gate = agent, select = [10, 20, 30], in_command = "get"), ['out', 'error']) assert results['out'] == VOID assert isinstance(results['error'], MPVMException['explode/wrong_input_length']) # Wrong command results = xgate(standard.abstract_agent, dict(gate = agent, select = [10, 20], in_command = ["set", 13]), ['out', 'error']) assert results['out'] == VOID assert isinstance(results['error'], MPVMException['standard/unknown_command'])
def test_standard_circuit(): # Test a simple network of agents, using Join to create lists of # arguments. adder = standard.make_agent("add", lib.Add, ['a', 'b'], 'out', 'error') # out = (a + b) + c F = CircuitSpec("F", ['a', 'b', 'c', 'out'], dict(add1 = adder, add2 = adder, join1 = lib.Join(2), join2 = lib.Join(2), ctget2 = lib.Constant("get"), ctget1 = lib.Constant("get")), [('a', 'join1.i0'), ('b', 'join1.i1'), ('join1.out', 'add1.select'), ('ctget1.out', 'add1.in_command'), ('add1.out', 'join2.i0'), ('c', 'join2.i1'), ('join2.out', 'add2.select'), ('ctget2.out', 'add2.in_command'), ('add2.out', 'out')]) results = xgate(F, dict(a = 10, b = 83, c = 7), ['out']) print(results) assert results['out'] == 100.0