samples/visitor/21-clientprovider/src-test/org/apidesign/test/visitor/PrintTest.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 09:59:16 +0200
changeset 176 0f658628beac
child 177 67d6dceb1002
permissions -rw-r--r--
First two versions of client provider Visitor
     1 package org.apidesign.test.visitor;
     2 
     3 import static junit.framework.Assert.*;
     4 import org.apidesign.visitor.notevolutionready.Language.Expression;
     5 import org.apidesign.visitor.notevolutionready.Language.Number;
     6 import org.apidesign.visitor.notevolutionready.Language.Plus;
     7 import org.apidesign.visitor.notevolutionready.Language.Visitor;
     8 import org.junit.Test;
     9 
    10 public class PrintTest {
    11 
    12     // BEGIN: visitor.notevolutionready.print
    13     public static class PrintVisitor implements Visitor {
    14         StringBuffer sb = new StringBuffer();
    15         
    16         public void visitPlus(Plus s) {
    17             s.getFirst().visit(this);
    18             sb.append(" + ");
    19             s.getSecond().visit(this);
    20         }
    21 
    22         public void visitNumber(Number n) {
    23             sb.append (n.getValue());
    24         }
    25     }
    26     
    27     @Test public void printOnePlusOne() {
    28         Number one = new Number(1);
    29         Expression plus = new Plus(one, one);
    30         
    31         PrintVisitor print = new PrintVisitor();
    32         plus.visit(print);
    33         
    34         assertEquals("1 + 1", print.sb.toString());
    35     }
    36     // END: visitor.notevolutionready.print
    37 
    38     @Test public void printOnePlusTwoPlusThree() {
    39         Number one = new Number(1);
    40         Number two = new Number(2);
    41         Number three = new Number(3);
    42         Expression plus = new Plus(one, new Plus(two, three));
    43         
    44         PrintVisitor print = new PrintVisitor();
    45         plus.visit(print);
    46         
    47         assertEquals("1 + 2 + 3", print.sb.toString());
    48     }
    49 }