def test_numble(self): Numble = make_numble_class(Brick, Target, Want, Avail, Allowed, [Plus, Times]) g = Graph(port_mates=port_mates) numble = Numble([4, 5, 6], 15) numble.build(g, None) #pg(g) ids = g.nodes_of_class(Target) self.assertEqual(len(ids), 1) targetid = ids[0] self.assertEqual(g.value_of(targetid), 15) ids = g.nodes_of_class(Want) self.assertEqual(len(ids), 1) wantid = ids[0] self.assertTrue(g.has_hop(wantid, 'taggees', targetid, 'tags')) brickids = g.nodes_of_class(Brick) self.assertEqual(len(brickids), 3) self.assertCountEqual([g.value_of(b) for b in brickids], [4, 5, 6]) ids = g.nodes_of_class(Avail) self.assertEqual(len(ids), 3) for b in brickids: self.assertTrue(g.has_tag(b, Avail)) operatorids = g.nodes_of_class(Operator) self.assertEqual(len(operatorids), 2) ids = g.nodes_of_class(Allowed) self.assertEqual(len(ids), 2) for o in operatorids: self.assertTrue(g.has_tag(o, Allowed))
def test_stdgraph_nodebuilding(self): g = Graph() # Make two Bricks b1 = g.add_node(Brick, value=1) b2 = g.add_node(Brick(2)) self.assertEqual(str(b1), 'Brick(1)') self.assertEqual(str(b2), 'Brick(2)') self.assertNotEqual(b1.id, b2.id) self.assertIs(as_node(g, b1.id), b1) self.assertIs(as_node(g, b2.id), b2) self.assertEqual(as_nodeid(b1), b1.id) self.assertEqual(as_nodeid(b2), b2.id) self.assertCountEqual(as_nodeids([b1, b2, None]), [b1.id, b2.id]) self.assertCountEqual(as_nodes(g, [b1.id, b2, None]), [b1, b2]) self.assertEqual(g.value_of(b1), 1) self.assertEqual(g.value_of(b2), 2) self.assertEqual(g.activation(b1), 0.72) # Tag one Brick Avail a1 = g.add_node(Avail, b1) self.assertTrue(g.has_edge(b1, 'tags', a1, 'taggees')) self.assertEqual(len(g.hops_from_port(b1, 'tags')), 1) alr = g.already_built(Avail, b1) self.assertIs(a1, alr) # Try to double-tag it: nothing should happen a1_a = g.add_node(Avail, b1) #pg(g) self.assertEqual(len(g.hops_from_port(b1, 'tags')), 1) self.assertIs(a1_a, a1)
def test_simple_action(self): g = Graph() node = g.add_node(Node) self.assertIs(g.value_of(node, 'attr'), None) g.do_action(SetAttr('attr', 1), node) self.assertEqual(g.value_of(node, 'attr'), 1)