samples/visitor/11-cleanversion/src-test3.0/org/apidesign/test/visitor/PrintOfMinusStructureTest.java
1 package org.apidesign.test.visitor;
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;
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);
19 PrintVisitor print = new PrintVisitor();
22 if (Boolean.getBoolean("no.failures")) {
24 "Not defined how to handle Minus. We'll get wrong result",
25 "unknown", print.sb.toString()
29 assertEquals("1.0 - 2.0", print.sb.toString());
32 @Test public void visitorReadyForVersion3_0() {
33 // BEGIN: visitor.nonmonotonic.print3
34 class PrintVisitor3_0 implements Visitor3_0 {
35 StringBuffer sb = new StringBuffer();
37 public void visitUnknown(Expression exp) {
41 public void visitPlus(Plus s) {
42 s.getFirst().visit(this);
44 s.getSecond().visit(this);
47 public void visitNumber(Number n) {
48 sb.append (n.getValue());
50 public void visitMinus(Minus m) {
51 m.getFirst().visit(this);
53 m.getSecond().visit(this);
56 public void visitReal(Real r) {
57 sb.append(r.getValue());
61 Number one = new Number(1);
62 Number two = new Number(2);
63 Expression plus = new Minus(one, two);
65 PrintVisitor3_0 print = new PrintVisitor3_0();
68 assertEquals("1.0 - 2.0", print.sb.toString());
69 // END: visitor.nonmonotonic.print3
71 Real five = new Real(5);
72 Real three = new Real(3);
73 Expression realPlus = new Minus(five, three);
75 PrintVisitor3_0 printReal = new PrintVisitor3_0();
76 realPlus.visit(printReal);
78 assertEquals("5.0 - 3.0", printReal.sb.toString());