samples/visitor/11-cleanversion/src-test3.0/org/apidesign/test/visitor/PrintOfMinusStructureTest.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 22:38:00 +0200
changeset 265 eb31b2d1822a
parent 174 3f3e772ccd52
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.Visitor3_0;
    11 import org.junit.Test;
    12 
    13 public class PrintOfMinusStructureTest {
    14     @Test public void printOneMinusTwo() {
    15         Real one = new Real(1);
    16         Real two = new Real(2);
    17         Expression plus = new Minus(one, two);
    18         
    19         PrintVisitor print = new PrintVisitor();
    20         plus.visit(print);
    21         
    22         if (Boolean.getBoolean("no.failures")) {
    23             assertEquals(
    24                 "Not defined how to handle Minus. We'll get wrong result",
    25                 "unknown", print.sb.toString()
    26             );
    27             return;
    28         }
    29         assertEquals("1.0 - 2.0", print.sb.toString());
    30     }
    31     
    32     @Test public void visitorReadyForVersion3_0() {
    33         // BEGIN: visitor.nonmonotonic.print3
    34         class PrintVisitor3_0 implements Visitor3_0 {
    35             StringBuffer sb = new StringBuffer();
    36 
    37             public void visitUnknown(Expression exp) {
    38                 sb.append("unknown");
    39             }
    40 
    41             public void visitPlus(Plus s) {
    42                 s.getFirst().visit(this);
    43                 sb.append(" + ");
    44                 s.getSecond().visit(this);
    45             }
    46 
    47             public void visitNumber(Number n) {
    48                 sb.append (n.getValue());
    49             }
    50             public void visitMinus(Minus m) {
    51                 m.getFirst().visit(this);
    52                 sb.append(" - ");
    53                 m.getSecond().visit(this);
    54             }
    55 
    56             public void visitReal(Real r) {
    57                 sb.append(r.getValue());
    58             }
    59         }
    60         
    61         Number one = new Number(1);
    62         Number two = new Number(2);
    63         Expression plus = new Minus(one, two);
    64         
    65         PrintVisitor3_0 print = new PrintVisitor3_0();
    66         plus.visit(print);
    67         
    68         assertEquals("1.0 - 2.0", print.sb.toString());
    69         // END: visitor.nonmonotonic.print3
    70 
    71         Real five = new Real(5);
    72         Real three = new Real(3);
    73         Expression realPlus = new Minus(five, three);
    74         
    75         PrintVisitor3_0 printReal = new PrintVisitor3_0();
    76         realPlus.visit(printReal);
    77         
    78         assertEquals("5.0 - 3.0", printReal.sb.toString());
    79         
    80     }
    81 }