public void NullNodesCallVisitNullNode()
		{
			foreach (Type type in typeof(AstNode).Assembly.GetExportedTypes()) {
				if (type.IsSubclassOf(typeof(AstNode))) {
					var nullField = type.GetField("Null");
					if (nullField != null) {
						AstNode nullNode = (AstNode)nullField.GetValue(null);
						Assert.IsTrue(nullNode.IsNull, nullNode.GetType().Name + " should be a null node");
						var v1 = new VisitNullNodeTest();
						var v2 = new VisitNullNodeTest<string>();
						var v3 = new VisitNullNodeTest<string, string>();
						nullNode.AcceptVisitor(v1);
						nullNode.AcceptVisitor(v2);
						nullNode.AcceptVisitor(v3, null);
						Assert.IsTrue(v1.called, nullNode.GetType().Name + " should call 'void VisitNullNode();'");
						Assert.IsTrue(v2.called, nullNode.GetType().Name + " should call 'T VisitNullNode();'");
						Assert.IsTrue(v3.called, nullNode.GetType().Name + " should call 'S VisitNullNode(T data);'");
					}
				}
			}
		}
Exemple #2
0
 public void NullNodesCallVisitNullNode()
 {
     foreach (Type type in typeof(AstNode).Assembly.GetExportedTypes())
     {
         if (type.IsSubclassOf(typeof(AstNode)))
         {
             var nullField = type.GetField("Null");
             if (nullField != null)
             {
                 AstNode nullNode = (AstNode)nullField.GetValue(null);
                 Assert.IsTrue(nullNode.IsNull, nullNode.GetType().Name + " should be a null node");
                 var v1 = new VisitNullNodeTest();
                 var v2 = new VisitNullNodeTest <string>();
                 var v3 = new VisitNullNodeTest <string, string>();
                 nullNode.AcceptVisitor(v1);
                 nullNode.AcceptVisitor(v2);
                 nullNode.AcceptVisitor(v3, null);
                 Assert.IsTrue(v1.called, nullNode.GetType().Name + " should call 'void VisitNullNode();'");
                 Assert.IsTrue(v2.called, nullNode.GetType().Name + " should call 'T VisitNullNode();'");
                 Assert.IsTrue(v3.called, nullNode.GetType().Name + " should call 'S VisitNullNode(T data);'");
             }
         }
     }
 }