1 package org.apidesign.test.visitor;
3 import org.apidesign.visitor.Language.Expression;
4 import org.apidesign.visitor.Language.Number;
5 import org.apidesign.visitor.Language.Plus;
6 import org.apidesign.visitor.Language.Visitor;
7 import org.apidesign.visitor.Language.Visitor;
8 import static junit.framework.Assert.*;
11 public class PrintTest {
13 public static Number newNumber(final int value) {
15 public int getValue() {
19 public void visit(Visitor v) {
20 v.dispatchNumber(this);
24 public static Plus newPlus(
25 final Expression first, final Expression second
28 public Expression getFirst() {
32 public Expression getSecond() {
36 public void visit(Visitor v) {
42 // BEGIN: visitor.clientprovider.self.print
43 public static class PrintVisitor implements Visitor.Version10 {
44 StringBuffer sb = new StringBuffer();
46 public void visitPlus(Plus s, Visitor self) {
47 s.getFirst().visit(self);
49 s.getSecond().visit(self);
52 public void visitNumber(Number n, Visitor self) {
53 sb.append (n.getValue());
56 public boolean visitUnknown(Expression e, Visitor self) {
62 @Test public void printOnePlusOne() {
63 Number one = newNumber(1);
64 Expression plus = newPlus(one, one);
66 PrintVisitor print = new PrintVisitor();
67 plus.visit(Visitor.create(print));
69 assertEquals("1 + 1", print.sb.toString());
71 // END: visitor.clientprovider.self.print
73 @Test public void printOnePlusTwoPlusThree() {
74 Number one = newNumber(1);
75 Number two = newNumber(2);
76 Number three = newNumber(3);
77 Expression plus = newPlus(one, newPlus(two, three));
79 PrintVisitor print = new PrintVisitor();
80 plus.visit(Visitor.create(print));
82 assertEquals("1 + 2 + 3", print.sb.toString());