Exemplo n.º 1
0
 def test_loops_with_proxy(self):
     (s1, n1) = make_proxy()
     (s2, n2) = make_proxy()
     g1 = SimpleNode(
         1, SimpleNode(11, SimpleNode(111, n2), SimpleNode(112), n1),
         SimpleNode(12, n1))
     s1(g1)
     s2(next(iter(g1)))
     g2 = ConstructorWalker(g1, SimpleNode)(Clone())
     g3 = ConstructorWalker(g2, SimpleNode)(Clone())
     self.assert_same(repr(g1), repr(g3))
Exemplo n.º 2
0
 def test_loop(self):
     (s, n) = make_proxy()
     g1 = SimpleNode(1, SimpleNode(11, SimpleNode(111), SimpleNode(112), n),
                     SimpleNode(12))
     s(g1)
     g2 = ConstructorWalker(g1, SimpleNode)(Clone())
     self.assert_same(repr(g1), repr(g2))
Exemplo n.º 3
0
 def __init__(self, *args):
     '''
     Expects a single list of arguments, as will be received if invoked with
     the ``>`` operator.
     '''
     super(Node, self).__init__()
     self.__postorder = ConstructorWalker(self, Node)
     self.__children = []
     self.__paths = []
     self.__names = set()
     for arg in map(coerce, args):
         if is_named(arg):
             self.__add_named_child(arg[0], arg[1])
         elif isinstance(arg, Node):
             self.__add_named_child(arg.__class__.__name__, arg)
         else:
             self.__add_anon_child(arg)
Exemplo n.º 4
0
 def test_simple(self):
     g1 = graph()
     g2 = ConstructorWalker(g1, SimpleNode)(Clone())
     assert repr(g1) == repr(g2)
     assert g1 is not g2
Exemplo n.º 5
0
 def simple_clone(node):
     '''
     Clone the node.
     '''
     walker = ConstructorWalker(node, Matcher)
     return walker(DelayedClone())