1.1 --- a/samples/visitor/abstractclass/src-api1.0/org/apidesign/visitor/Language.java Sat Jun 14 09:58:24 2008 +0200
1.2 +++ b/samples/visitor/abstractclass/src-api1.0/org/apidesign/visitor/Language.java Sat Jun 14 09:58:30 2008 +0200
1.3 @@ -27,8 +27,13 @@
1.4 public void visit(Visitor v) { v.visitNumber(this); }
1.5 }
1.6
1.7 - public static abstract class Visitor {
1.8 + // BEGIN: visitor.visitunknown.v1
1.9 + public static abstract class Visitor/*1.0*/ {
1.10 + public void visitUnknown(Expression exp) {
1.11 + throw new IllegalStateException("Unknown element faced: " + exp);
1.12 + }
1.13 public abstract void visitPlus(Plus s);
1.14 public abstract void visitNumber(Number n);
1.15 }
1.16 + // END: visitor.visitunknown.v1
1.17 }
2.1 --- a/samples/visitor/abstractclass/src-api2.0/org/apidesign/visitor/Language.java Sat Jun 14 09:58:24 2008 +0200
2.2 +++ b/samples/visitor/abstractclass/src-api2.0/org/apidesign/visitor/Language.java Sat Jun 14 09:58:30 2008 +0200
2.3 @@ -43,14 +43,17 @@
2.4 }
2.5 }
2.6
2.7 - public static abstract class Visitor {
2.8 + // BEGIN: visitor.visitunknown.v2
2.9 + public static abstract class Visitor/*2.0*/ {
2.10 + public void visitUnknown(Expression exp) {
2.11 + throw new IllegalStateException("Unknown element faced: " + exp);
2.12 + }
2.13 public abstract void visitPlus(Plus s);
2.14 public abstract void visitNumber(Number n);
2.15 + /** @since 2.0 */
2.16 public void visitMinus(Minus s) {
2.17 - throw new IllegalStateException(
2.18 - "Old visitor used on new exceptions"
2.19 - );
2.20 + visitUnknown(s);
2.21 }
2.22 }
2.23 - // END: visitor.abstractclass.v2
2.24 + // END: visitor.visitunknown.v2
2.25 }
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
3.2 +++ b/samples/visitor/abstractclass/src-test/org/apidesign/test/visitor/CountNumbersTest.java Sat Jun 14 09:58:30 2008 +0200
3.3 @@ -0,0 +1,51 @@
3.4 +package org.apidesign.test.visitor;
3.5 +
3.6 +import static junit.framework.Assert.*;
3.7 +import org.apidesign.visitor.Language.Expression;
3.8 +import org.apidesign.visitor.Language.Number;
3.9 +import org.apidesign.visitor.Language.Plus;
3.10 +import org.apidesign.visitor.Language.Visitor;
3.11 +import org.junit.Test;
3.12 +
3.13 +public class CountNumbersTest {
3.14 +
3.15 + // BEGIN: visitor.count.numbers.visitunknown
3.16 + private static class CountNumbers extends Visitor/*version1.0*/ {
3.17 + int cnt;
3.18 +
3.19 + @Override
3.20 + public void visitUnknown(Expression exp) {
3.21 + // not a number
3.22 + }
3.23 + public void visitPlus(Plus s) {
3.24 + s.getFirst().visit(this);
3.25 + s.getSecond().visit(this);
3.26 + }
3.27 + public void visitNumber(Number n) {
3.28 + cnt++;
3.29 + }
3.30 + }
3.31 +
3.32 + public static int countNumbers(Expression expression) {
3.33 + CountNumbers counter = new CountNumbers();
3.34 + expression.visit(counter);
3.35 + return counter.cnt;
3.36 + }
3.37 + // END: visitor.count.numbers.visitunknown
3.38 +
3.39 + @Test public void printOnePlusOne() {
3.40 + Number one = new Number(1);
3.41 + Expression expression = new Plus(one, one);
3.42 +
3.43 + assertEquals("Two 1's", 2, countNumbers(expression));
3.44 + }
3.45 +
3.46 + @Test public void printOnePlusTwoPlusThree() {
3.47 + Number one = new Number(1);
3.48 + Number two = new Number(2);
3.49 + Number three = new Number(3);
3.50 + Expression plus = new Plus(one, new Plus(two, three));
3.51 +
3.52 + assertEquals("Three", 3, countNumbers(plus));
3.53 + }
3.54 +}
4.1 --- a/samples/visitor/abstractclass/src-test/org/apidesign/test/visitor/LanguageCheckTest.java Sat Jun 14 09:58:24 2008 +0200
4.2 +++ b/samples/visitor/abstractclass/src-test/org/apidesign/test/visitor/LanguageCheckTest.java Sat Jun 14 09:58:30 2008 +0200
4.3 @@ -9,8 +9,14 @@
4.4
4.5 public class LanguageCheckTest {
4.6
4.7 - // BEGIN: visitor.language.check.exception
4.8 + // BEGIN: visitor.language.check.visitunknown
4.9 private static class Valid1_0Language extends Visitor/*version1.0*/ {
4.10 + boolean invalid;
4.11 +
4.12 + @Override
4.13 + public void visitUnknown(Expression exp) {
4.14 + invalid = true;
4.15 + }
4.16 public void visitPlus(Plus s) {
4.17 s.getFirst().visit(this);
4.18 s.getSecond().visit(this);
4.19 @@ -21,14 +27,10 @@
4.20
4.21 public static boolean isValid1_0Language(Expression expression) {
4.22 Valid1_0Language valid = new Valid1_0Language();
4.23 - try {
4.24 - expression.visit(valid);
4.25 - return true; // yes, no unknown elements
4.26 - } catch (IllegalStateException ex) {
4.27 - return false; // no, probably from visitMinus of Visitor/*2.0*/
4.28 - }
4.29 + expression.visit(valid);
4.30 + return !valid.invalid;
4.31 }
4.32 - // END: visitor.language.check.exception
4.33 + // END: visitor.language.check.visitunknown
4.34
4.35 @Test public void printOnePlusOne() {
4.36 Number one = new Number(1);
5.1 --- a/samples/visitor/abstractclass/src-test/org/apidesign/test/visitor/PrintTest.java Sat Jun 14 09:58:24 2008 +0200
5.2 +++ b/samples/visitor/abstractclass/src-test/org/apidesign/test/visitor/PrintTest.java Sat Jun 14 09:58:30 2008 +0200
5.3 @@ -10,6 +10,11 @@
5.4 public class PrintTest {
5.5 public static class PrintVisitor extends Visitor {
5.6 StringBuffer sb = new StringBuffer();
5.7 +
5.8 + @Override
5.9 + public void visitUnknown(Expression exp) {
5.10 + sb.append("unknown");
5.11 + }
5.12
5.13 public void visitPlus(Plus s) {
5.14 s.getFirst().visit(this);
6.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
6.2 +++ b/samples/visitor/abstractclass/src-test2.0/org/apidesign/test/visitor/InvalidCountNumbersTest.java Sat Jun 14 09:58:30 2008 +0200
6.3 @@ -0,0 +1,25 @@
6.4 +package org.apidesign.test.visitor;
6.5 +
6.6 +import static junit.framework.Assert.*;
6.7 +import org.apidesign.visitor.Language.Expression;
6.8 +import org.apidesign.visitor.Language.Minus;
6.9 +import org.apidesign.visitor.Language.Number;
6.10 +import org.apidesign.visitor.Language.Plus;
6.11 +import org.junit.Test;
6.12 +
6.13 +public class InvalidCountNumbersTest {
6.14 + @Test public void printOneMinusTwo() {
6.15 + // BEGIN: visitor.visitunknown.traversal
6.16 + Number one = new Number(1);
6.17 + Number three = new Number(3);
6.18 + Number four = new Number(4);
6.19 + Expression minus = new Plus(one, new Minus(three, four));
6.20 +
6.21 + assertEquals(
6.22 + "Should have two numbers, but visitor does not " +
6.23 + "know how to go through minus",
6.24 + 3, CountNumbersTest.countNumbers(minus)
6.25 + );
6.26 + // END: visitor.visitunknown.traversal
6.27 + }
6.28 +}
7.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
7.2 +++ b/samples/visitor/visitunknown/build.xml Sat Jun 14 09:58:30 2008 +0200
7.3 @@ -0,0 +1,94 @@
7.4 +<?xml version="1.0" encoding="UTF-8"?>
7.5 +<project name="Build Script" default="test" basedir=".">
7.6 + <target name="clean">
7.7 + <delete dir="build"/>
7.8 + </target>
7.9 +
7.10 + <target name="compile" depends="build"/>
7.11 + <target name="build" depends="-libraries">
7.12 + <antcall target="-build-one">
7.13 + <param name="version" value="api1.0"/>
7.14 + </antcall>
7.15 + <antcall target="-build-one">
7.16 + <param name="version" value="api2.0"/>
7.17 + </antcall>
7.18 +
7.19 + <antcall target="-build-one">
7.20 + <param name="version" value="test"/>
7.21 + <param name="cp" value="build/api1.0/classes:${junit.jar}"/>
7.22 + </antcall>
7.23 +
7.24 + <antcall target="-build-one">
7.25 + <param name="version" value="test"/>
7.26 + <param name="out" value="will-not-compile"/>
7.27 + <param name="cp" value="build/api2.0/classes:${junit.jar}"/>
7.28 + </antcall>
7.29 +
7.30 + <antcall target="-build-one">
7.31 + <param name="version" value="test2.0"/>
7.32 + <param name="cp" value="build/api2.0/classes:build/test/classes:${junit.jar}"/>
7.33 + </antcall>
7.34 + </target>
7.35 +
7.36 + <target name="test" depends="build">
7.37 + <echo level="info" message="PrintVisitor on old API. This should succeeds."/>
7.38 + <antcall target="-run-one">
7.39 + <param name="version" value="api1.0"/>
7.40 + </antcall>
7.41 + <echo level="info" message="PrintVisitor on old API. This would not compile, but it runs as it does not deal with minus at all."/>
7.42 + <antcall target="-run-one">
7.43 + <param name="version" value="api2.0"/>
7.44 + </antcall>
7.45 + <echo level="info" message="PrintVisitor on new API. This yields runtime error."/>
7.46 + <antcall target="-run-one">
7.47 + <param name="test" value="test2.0"/>
7.48 + <param name="extra.cp" value="build/test/classes"/>
7.49 + <param name="version" value="api2.0"/>
7.50 + </antcall>
7.51 + </target>
7.52 +
7.53 + <!-- support methods -->
7.54 +
7.55 + <target name="-libraries">
7.56 + <ant dir="../../libs/"/>
7.57 +
7.58 + <property name="junit.jar" location="../../libs/dist/junit-4.4.jar"/>
7.59 + </target>
7.60 +
7.61 + <target name="-run-one">
7.62 + <fail message="You need to specify API version number" unless="version"/>
7.63 + <property name="test" value="test"/>
7.64 + <mkdir dir="build/${test}results${version}"/>
7.65 + <junit dir="build/test/classes" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true">
7.66 + <batchtest todir="build/${test}results${version}">
7.67 + <fileset dir="build/${test}/classes">
7.68 + <filename name="**/*Test.class"/>
7.69 + </fileset>
7.70 + </batchtest>
7.71 + <classpath>
7.72 + <path location="build/${version}/classes"/>
7.73 + <path location="build/${test}/classes"/>
7.74 + <path location="${junit.jar}"/>
7.75 + <path path="${extra.cp}"/>
7.76 + </classpath>
7.77 + <formatter type="brief" usefile="false"/>
7.78 + <formatter type="xml"/>
7.79 + </junit>
7.80 + </target>
7.81 +
7.82 + <target name="-build-one">
7.83 + <fail message="You need to specify version number" unless="version"/>
7.84 +
7.85 + <property name="cp" value=""/>
7.86 + <property name="out" value="${version}"/>
7.87 + <property name="failonerror" value="true"/>
7.88 + <mkdir dir="build/${out}/classes"/>
7.89 + <javac
7.90 + srcdir="src-${version}"
7.91 + destdir="build/${out}/classes"
7.92 + source="1.5" target="1.5"
7.93 + classpath="${cp}"
7.94 + failonerror="${failonerror}"
7.95 + />
7.96 + </target>
7.97 +</project>
8.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
8.2 +++ b/samples/visitor/visitunknown/nbproject/project.xml Sat Jun 14 09:58:30 2008 +0200
8.3 @@ -0,0 +1,107 @@
8.4 +<?xml version="1.0" encoding="UTF-8"?>
8.5 +<project xmlns="http://www.netbeans.org/ns/project/1" xmlns:ns4="null">
8.6 + <type>org.netbeans.modules.ant.freeform</type>
8.7 + <configuration>
8.8 + <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
8.9 + <name>visitunknown</name>
8.10 + </general-data>
8.11 + <general-data xmlns="http://www.netbeans.org/ns/freeform-project/2">
8.12 + <!-- Do not use Project Properties customizer when editing this file manually. -->
8.13 + <name>visitunknown</name>
8.14 + <properties/>
8.15 + <folders>
8.16 + <source-folder>
8.17 + <label>src-api1.0</label>
8.18 + <type>java</type>
8.19 + <location>src-api1.0</location>
8.20 + <encoding>UTF-8</encoding>
8.21 + </source-folder>
8.22 + <source-folder>
8.23 + <label>src-api2.0</label>
8.24 + <type>java</type>
8.25 + <location>src-api2.0</location>
8.26 + <encoding>UTF-8</encoding>
8.27 + </source-folder>
8.28 + <source-folder>
8.29 + <label>test</label>
8.30 + <type>java</type>
8.31 + <location>src-test</location>
8.32 + <encoding>UTF-8</encoding>
8.33 + </source-folder>
8.34 + <source-folder>
8.35 + <label>test-2.0</label>
8.36 + <type>java</type>
8.37 + <location>src-test2.0</location>
8.38 + <encoding>UTF-8</encoding>
8.39 + </source-folder>
8.40 + </folders>
8.41 + <ide-actions>
8.42 + <action name="build">
8.43 + <target>build</target>
8.44 + </action>
8.45 + <action name="clean">
8.46 + <target>clean</target>
8.47 + </action>
8.48 + <action name="test">
8.49 + <target>test</target>
8.50 + </action>
8.51 + <action name="run">
8.52 + <target>test</target>
8.53 + </action>
8.54 + <action name="rebuild">
8.55 + <target>clean</target>
8.56 + <target>build</target>
8.57 + </action>
8.58 + </ide-actions>
8.59 + <view>
8.60 + <items>
8.61 + <source-folder style="packages">
8.62 + <label>API Version 1.0</label>
8.63 + <location>src-api1.0</location>
8.64 + </source-folder>
8.65 + <source-folder style="packages">
8.66 + <label>API Version 2.0</label>
8.67 + <location>src-api2.0</location>
8.68 + </source-folder>
8.69 + <source-folder style="packages">
8.70 + <label>Usage of the API</label>
8.71 + <location>src-test</location>
8.72 + </source-folder>
8.73 + <source-folder style="packages">
8.74 + <label>Usage of new structures with old visitor</label>
8.75 + <location>src-test2.0</location>
8.76 + </source-folder>
8.77 + <source-file>
8.78 + <location>build.xml</location>
8.79 + </source-file>
8.80 + </items>
8.81 + <context-menu>
8.82 + <ide-action name="build"/>
8.83 + <ide-action name="rebuild"/>
8.84 + <ide-action name="clean"/>
8.85 + <ide-action name="test"/>
8.86 + </context-menu>
8.87 + </view>
8.88 + </general-data>
8.89 + <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/1">
8.90 + <compilation-unit>
8.91 + <package-root>src-api1.0</package-root>
8.92 + <source-level>1.5</source-level>
8.93 + </compilation-unit>
8.94 + <compilation-unit>
8.95 + <package-root>src-api2.0</package-root>
8.96 + <source-level>1.5</source-level>
8.97 + </compilation-unit>
8.98 + <compilation-unit>
8.99 + <package-root>src-test</package-root>
8.100 + <classpath mode="compile">src-api1.0:../../libs/dist/junit-4.4.jar</classpath>
8.101 + <source-level>1.5</source-level>
8.102 + </compilation-unit>
8.103 + <compilation-unit>
8.104 + <package-root>src-test2.0</package-root>
8.105 + <classpath mode="compile">src-api2.0:src-test:../../libs/dist/junit-4.4.jar</classpath>
8.106 + <source-level>1.5</source-level>
8.107 + </compilation-unit>
8.108 + </java-data>
8.109 + </configuration>
8.110 +</project>
9.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
9.2 +++ b/samples/visitor/visitunknown/src-api1.0/org/apidesign/visitor/Language.java Sat Jun 14 09:58:30 2008 +0200
9.3 @@ -0,0 +1,34 @@
9.4 +package org.apidesign.visitor;
9.5 +
9.6 +public final class Language {
9.7 + private Language() { }
9.8 +
9.9 + public static abstract class Expression {
9.10 + public abstract void visit(Visitor v);
9.11 + }
9.12 + public static final class Plus extends Expression {
9.13 + private final Expression first;
9.14 + private final Expression second;
9.15 +
9.16 + public Plus(Expression first, Expression second) {
9.17 + this.first = first;
9.18 + this.second = second;
9.19 + }
9.20 + public Expression getFirst() { return first; }
9.21 + public Expression getSecond() { return second; }
9.22 + @Override
9.23 + public void visit(Visitor v) { v.visitPlus(this); }
9.24 + }
9.25 + public static final class Number extends Expression {
9.26 + private final int value;
9.27 + public Number(int value) { this.value = value; }
9.28 + public int getValue() { return value; }
9.29 + @Override
9.30 + public void visit(Visitor v) { v.visitNumber(this); }
9.31 + }
9.32 +
9.33 + public static abstract class Visitor {
9.34 + public abstract void visitPlus(Plus s);
9.35 + public abstract void visitNumber(Number n);
9.36 + }
9.37 +}
10.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
10.2 +++ b/samples/visitor/visitunknown/src-api2.0/org/apidesign/visitor/Language.java Sat Jun 14 09:58:30 2008 +0200
10.3 @@ -0,0 +1,56 @@
10.4 +package org.apidesign.visitor;
10.5 +
10.6 +public final class Language {
10.7 + private Language() { }
10.8 +
10.9 + public static abstract class Expression {
10.10 + public abstract void visit(Visitor v);
10.11 + }
10.12 + public static final class Plus extends Expression {
10.13 + private final Expression first;
10.14 + private final Expression second;
10.15 +
10.16 + public Plus(Expression first, Expression second) {
10.17 + this.first = first;
10.18 + this.second = second;
10.19 + }
10.20 + public Expression getFirst() { return first; }
10.21 + public Expression getSecond() { return second; }
10.22 + @Override
10.23 + public void visit(Visitor v) { v.visitPlus(this); }
10.24 + }
10.25 + public static final class Number extends Expression {
10.26 + private final int value;
10.27 + public Number(int value) { this.value = value; }
10.28 + public int getValue() { return value; }
10.29 + @Override
10.30 + public void visit(Visitor v) { v.visitNumber(this); }
10.31 + }
10.32 + // BEGIN: visitor.abstractclass.v2
10.33 + /** @since 2.0 */
10.34 + public static final class Minus extends Expression {
10.35 + private final Expression first;
10.36 + private final Expression second;
10.37 +
10.38 + public Minus(Expression first, Expression second) {
10.39 + this.first = first;
10.40 + this.second = second;
10.41 + }
10.42 + public Expression getFirst() { return first; }
10.43 + public Expression getSecond() { return second; }
10.44 + public void visit(Visitor v) {
10.45 + v.visitMinus(this);
10.46 + }
10.47 + }
10.48 +
10.49 + public static abstract class Visitor {
10.50 + public abstract void visitPlus(Plus s);
10.51 + public abstract void visitNumber(Number n);
10.52 + public void visitMinus(Minus s) {
10.53 + throw new IllegalStateException(
10.54 + "Old visitor used on new exceptions"
10.55 + );
10.56 + }
10.57 + }
10.58 + // END: visitor.abstractclass.v2
10.59 +}
11.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
11.2 +++ b/samples/visitor/visitunknown/src-test/org/apidesign/test/visitor/LanguageCheckTest.java Sat Jun 14 09:58:30 2008 +0200
11.3 @@ -0,0 +1,48 @@
11.4 +package org.apidesign.test.visitor;
11.5 +
11.6 +import static junit.framework.Assert.*;
11.7 +import org.apidesign.visitor.Language.Expression;
11.8 +import org.apidesign.visitor.Language.Number;
11.9 +import org.apidesign.visitor.Language.Plus;
11.10 +import org.apidesign.visitor.Language.Visitor;
11.11 +import org.junit.Test;
11.12 +
11.13 +public class LanguageCheckTest {
11.14 +
11.15 + // BEGIN: visitor.language.check.exception
11.16 + private static class Valid1_0Language extends Visitor/*version1.0*/ {
11.17 + public void visitPlus(Plus s) {
11.18 + s.getFirst().visit(this);
11.19 + s.getSecond().visit(this);
11.20 + }
11.21 + public void visitNumber(Number n) {
11.22 + }
11.23 + }
11.24 +
11.25 + public static boolean isValid1_0Language(Expression expression) {
11.26 + Valid1_0Language valid = new Valid1_0Language();
11.27 + try {
11.28 + expression.visit(valid);
11.29 + return true; // yes, no unknown elements
11.30 + } catch (IllegalStateException ex) {
11.31 + return false; // no, probably from visitMinus of Visitor/*2.0*/
11.32 + }
11.33 + }
11.34 + // END: visitor.language.check.exception
11.35 +
11.36 + @Test public void printOnePlusOne() {
11.37 + Number one = new Number(1);
11.38 + Expression expression = new Plus(one, one);
11.39 +
11.40 + assertTrue("Valid language", isValid1_0Language(expression));
11.41 + }
11.42 +
11.43 + @Test public void printOnePlusTwoPlusThree() {
11.44 + Number one = new Number(1);
11.45 + Number two = new Number(2);
11.46 + Number three = new Number(3);
11.47 + Expression plus = new Plus(one, new Plus(two, three));
11.48 +
11.49 + assertTrue("Valid language", isValid1_0Language(plus));
11.50 + }
11.51 +}
12.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
12.2 +++ b/samples/visitor/visitunknown/src-test/org/apidesign/test/visitor/PrintTest.java Sat Jun 14 09:58:30 2008 +0200
12.3 @@ -0,0 +1,46 @@
12.4 +package org.apidesign.test.visitor;
12.5 +
12.6 +import static junit.framework.Assert.*;
12.7 +import org.apidesign.visitor.Language.Expression;
12.8 +import org.apidesign.visitor.Language.Number;
12.9 +import org.apidesign.visitor.Language.Plus;
12.10 +import org.apidesign.visitor.Language.Visitor;
12.11 +import org.junit.Test;
12.12 +
12.13 +public class PrintTest {
12.14 + public static class PrintVisitor extends Visitor {
12.15 + StringBuffer sb = new StringBuffer();
12.16 +
12.17 + public void visitPlus(Plus s) {
12.18 + s.getFirst().visit(this);
12.19 + sb.append(" + ");
12.20 + s.getSecond().visit(this);
12.21 + }
12.22 +
12.23 + public void visitNumber(Number n) {
12.24 + sb.append (n.getValue());
12.25 + }
12.26 + }
12.27 +
12.28 + @Test public void printOnePlusOne() {
12.29 + Number one = new Number(1);
12.30 + Expression plus = new Plus(one, one);
12.31 +
12.32 + PrintVisitor print = new PrintVisitor();
12.33 + plus.visit(print);
12.34 +
12.35 + assertEquals("1 + 1", print.sb.toString());
12.36 + }
12.37 +
12.38 + @Test public void printOnePlusTwoPlusThree() {
12.39 + Number one = new Number(1);
12.40 + Number two = new Number(2);
12.41 + Number three = new Number(3);
12.42 + Expression plus = new Plus(one, new Plus(two, three));
12.43 +
12.44 + PrintVisitor print = new PrintVisitor();
12.45 + plus.visit(print);
12.46 +
12.47 + assertEquals("1 + 2 + 3", print.sb.toString());
12.48 + }
12.49 +}
13.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
13.2 +++ b/samples/visitor/visitunknown/src-test2.0/org/apidesign/test/visitor/InvalidLanguageCheckTest.java Sat Jun 14 09:58:30 2008 +0200
13.3 @@ -0,0 +1,17 @@
13.4 +package org.apidesign.test.visitor;
13.5 +
13.6 +import static junit.framework.Assert.*;
13.7 +import org.apidesign.visitor.Language.Expression;
13.8 +import org.apidesign.visitor.Language.Minus;
13.9 +import org.apidesign.visitor.Language.Number;
13.10 +import org.junit.Test;
13.11 +
13.12 +public class InvalidLanguageCheckTest {
13.13 + @Test public void printOneMinusTwo() {
13.14 + Number one = new Number(1);
13.15 + Number two = new Number(2);
13.16 + Expression minus = new Minus(one, two);
13.17 +
13.18 + assertFalse("Recognized as invalid 1.0 version of the language", LanguageCheckTest.isValid1_0Language(minus));
13.19 + }
13.20 +}
14.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
14.2 +++ b/samples/visitor/visitunknown/src-test2.0/org/apidesign/test/visitor/PrintOfMinusStructureTest.java Sat Jun 14 09:58:30 2008 +0200
14.3 @@ -0,0 +1,23 @@
14.4 +package org.apidesign.test.visitor;
14.5 +
14.6 +import org.apidesign.test.visitor.PrintTest.PrintVisitor;
14.7 +import static junit.framework.Assert.*;
14.8 +import org.apidesign.visitor.Language.Expression;
14.9 +import org.apidesign.visitor.Language.Minus;
14.10 +import org.apidesign.visitor.Language.Number;
14.11 +import org.apidesign.visitor.Language.Plus;
14.12 +import org.apidesign.visitor.Language.Visitor;
14.13 +import org.junit.Test;
14.14 +
14.15 +public class PrintOfMinusStructureTest {
14.16 + @Test public void printOneMinusTwo() {
14.17 + Number one = new Number(1);
14.18 + Number two = new Number(2);
14.19 + Expression minus = new Minus(one, two);
14.20 +
14.21 + PrintVisitor print = new PrintVisitor();
14.22 + minus.visit(print); // fails with IllegalStateException
14.23 +
14.24 + assertEquals("1 - 2", print.sb.toString());
14.25 + }
14.26 +}