samples/visitor/02-abstractclass/src-test/org/apidesign/test/visitor/LanguageCheckTest.java
1 package org.apidesign.test.visitor;
3 import static junit.framework.Assert.*;
4 import org.apidesign.visitor.Language.Expression;
5 import org.apidesign.visitor.Language.Number;
6 import org.apidesign.visitor.Language.Plus;
7 import org.apidesign.visitor.Language.Visitor;
10 public class LanguageCheckTest {
12 // BEGIN: visitor.language.check.exception
13 private static class Valid10Language extends Visitor/*version1.0*/ {
14 public void visitPlus(Plus s) {
15 s.getFirst().visit(this);
16 s.getSecond().visit(this);
18 public void visitNumber(Number n) {
22 public static boolean isValid10Language(Expression expression) {
23 Valid10Language valid = new Valid10Language();
25 expression.visit(valid);
26 return true; // yes, no unknown elements
27 } catch (IllegalStateException ex) {
28 return false; // no, probably from visitMinus of Visitor/*2.0*/
31 // END: visitor.language.check.exception
33 @Test public void printOnePlusOne() {
34 Number one = new Number(1);
35 Expression expression = new Plus(one, one);
37 assertTrue("Valid language", isValid10Language(expression));
40 @Test public void printOnePlusTwoPlusThree() {
41 Number one = new Number(1);
42 Number two = new Number(2);
43 Number three = new Number(3);
44 Expression plus = new Plus(one, new Plus(two, three));
46 assertTrue("Valid language", isValid10Language(plus));