samples/visitor/21-clientprovider/src-test3.0/org/apidesign/test/visitor/PrintRealTest.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 22:38:00 +0200
changeset 265 eb31b2d1822a
parent 182 77b3c0f1e4c3
child 266 47d5f1fe0b03
permissions -rw-r--r--
All tests are passing now in the "no.failures" mode
     1 package org.apidesign.test.visitor;
     2 
     3 import org.apidesign.test.visitor.PrintTest.PrintVisitor;
     4 import static junit.framework.Assert.*;
     5 import org.apidesign.visitor.Language.Expression;
     6 import org.apidesign.visitor.Language.Minus;
     7 import org.apidesign.visitor.Language.Number;
     8 import org.apidesign.visitor.Language.Plus;
     9 import org.apidesign.visitor.Language.Real;
    10 import org.apidesign.visitor.Language.Visitor;
    11 import org.junit.Test;
    12 
    13 public class PrintRealTest {
    14     @Test public void printOneMinusTwo() {
    15         Real one = newReal(1);
    16         Real two = newReal(2);
    17         Expression plus = PrintOfMinusStructureTest.newMinus(one, two);
    18         
    19         PrintVisitor print = new PrintVisitor();
    20         plus.visit(print.dispatch);
    21         
    22         if (Boolean.getBoolean("no.failures")) {
    23             assertEquals("unknownunknownunknown", print.sb.toString());
    24             return;
    25         }
    26         assertEquals("1.0 - 2.0", print.sb.toString());
    27     }
    28     
    29     @Test public void visitorReadyForVersion3_0() {
    30         class PrintVisitor3_0 implements Visitor.Version3_0 {
    31             StringBuffer sb = new StringBuffer();
    32             Visitor dispatch = Visitor.create(this);
    33 
    34             public boolean visitUnknown(Expression exp) {
    35                 sb.append("unknown");
    36                 return true;
    37             }
    38 
    39             public void visitPlus(Plus s) {
    40                 s.getFirst().visit(dispatch);
    41                 sb.append(" + ");
    42                 s.getSecond().visit(dispatch);
    43             }
    44 
    45             public void visitMinus(Minus m) {
    46                 m.getFirst().visit(dispatch);
    47                 sb.append(" - ");
    48                 m.getSecond().visit(dispatch);
    49             }
    50 
    51             public void visitReal(Real r) {
    52                 sb.append(r.getValue());
    53             }
    54         }
    55         
    56         Number one = PrintTest.newNumber(1);
    57         Number two = PrintTest.newNumber(2);
    58         Expression plus = PrintOfMinusStructureTest.newMinus(one, two);
    59         
    60         PrintVisitor3_0 print = new PrintVisitor3_0();
    61         plus.visit(print.dispatch);
    62         
    63         assertEquals("1.0 - 2.0", print.sb.toString());
    64 
    65         Real five = newReal(5);
    66         Real three = newReal(3);
    67         Expression realPlus = PrintOfMinusStructureTest.newMinus(five, three);
    68         
    69         PrintVisitor3_0 printReal = new PrintVisitor3_0();
    70         realPlus.visit(printReal.dispatch);
    71         
    72         assertEquals("5.0 - 3.0", printReal.sb.toString());
    73         
    74     }
    75     
    76     public static Real newReal(final double value) {
    77         return new Real() {
    78             public double getValue() {
    79                 return value;
    80             }
    81 
    82             public void visit(Visitor v) {
    83                 v.dispatchReal(this);
    84             }
    85         };
    86     }
    87 }