Advertisement
mwchase

Over-engineering

May 19th, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.76 KB | None | 0 0
  1. def test_next_visitor(visitor):
  2.     Visitor = visitor.make_visitor()
  3.  
  4.     @Visitor.mark
  5.     class Test1:
  6.         pass
  7.  
  8.     @Visitor.mark
  9.     class Test2(Test1):
  10.         pass
  11.  
  12.     class Visitor1(Visitor):
  13.         pass
  14.  
  15.     class Visitor2(Visitor1):
  16.         pass
  17.  
  18.     @Visitor2.bind(Test2)
  19.     def Visitor2(self, node, next_visitor):
  20.         return 'a' + next_visitor('f')
  21.  
  22.     @Visitor1.bind(Test2)
  23.     def Visitor1(self, node, next_visitor):
  24.         return 'b' + next_visitor('f')
  25.  
  26.     @Visitor2.bind(Test1)
  27.     def Visitor2(self, node, next_visitor):
  28.         return 'c' + next_visitor('f')
  29.  
  30.     @Visitor1.bind(Test1)
  31.     def Visitor1(self, node, next_visitor):
  32.         return 'd' + next_visitor('e')
  33.  
  34.     assert Visitor2().visit(Test2()) == 'abcde'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement