1.1 --- a/samples/componentinjection/anagram-modular/build.xml Sat Jun 14 10:08:21 2008 +0200
1.2 +++ b/samples/componentinjection/anagram-modular/build.xml Sat Jun 14 10:08:25 2008 +0200
1.3 @@ -47,10 +47,14 @@
1.4 <param name="version" value="app-serviceloader"/>
1.5 <param name="cp" value="build/api/classes:build/word-static/classes:build/scrambler-simple/classes:build/gui/classes"/>
1.6 </antcall>
1.7 + <antcall target="-build-one">
1.8 + <param name="version" value="test"/>
1.9 + <param name="cp" value="build/api/classes:build/gui/classes:build/app-serviceloader/classes:build/app-lookup/classes:${junit.jar}:${nbjunit.jar}:${insane.jar}"/>
1.10 + </antcall>
1.11
1.12 </target>
1.13
1.14 - <target name="test" depends="build">
1.15 + <target name="run" depends="build">
1.16 <echo level="info" message="Running registerXYZ version"/>
1.17 <antcall target="-run-one">
1.18 <param name="version" value="app-register"/>
1.19 @@ -89,17 +93,27 @@
1.20 </antcall>
1.21 <antcall target="-run-one">
1.22 <param name="version" value="app-serviceloader"/>
1.23 - <param name="cp" value="build/api/classes:build/word-static/classes:build/scrambler-simple/classes:build/gui/classes"/>
1.24 + <param name="cp" value="build/api/classes:build/word-static/classes:build/scrambler-simple/classes:build/gui/classes:${junit.jar}:${nbjunit.jar}:${insane.jar}"/>
1.25 <param name="main" value="org.apidesign.anagram.app.serviceloader.Main"/>
1.26 </antcall>
1.27 </target>
1.28 -
1.29 +
1.30 + <target name="test" depends="build">
1.31 + <echo level="info" message="Testing using MockServices"/>
1.32 + <antcall target="-test-one">
1.33 + <param name="version" value="app-test"/>
1.34 + <param name="cp" value="build/api/classes:build/gui/classes:build/app-serviceloader/classes:build/app-lookup/classes:${junit.jar}:${nbjunit.jar}:${insane.jar}:../../libs/dist/org-openide-util.jar"/>
1.35 + </antcall>
1.36 + </target>
1.37 +
1.38 <!-- support methods -->
1.39
1.40 <target name="-libraries">
1.41 <ant dir="../../libs/"/>
1.42
1.43 <property name="junit.jar" location="../../libs/dist/junit-4.4.jar"/>
1.44 + <property name="nbjunit.jar" location="../../libs/dist/org-netbeans-modules-nbjunit.jar"/>
1.45 + <property name="insane.jar" location="../../libs/dist/org-netbeans-insane.jar"/>
1.46 </target>
1.47
1.48 <target name="-run-one">
1.49 @@ -126,4 +140,22 @@
1.50 </fileset>
1.51 </copy>
1.52 </target>
1.53 + <target name="-test-one">
1.54 + <fail message="You need to specify API version number" unless="version"/>
1.55 + <mkdir dir="build/testresults"/>
1.56 + <junit dir="build/test/classes" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true">
1.57 + <batchtest todir="build/testresults">
1.58 + <fileset dir="build/test/classes">
1.59 + <filename name="**/*Test.class"/>
1.60 + </fileset>
1.61 + </batchtest>
1.62 + <classpath>
1.63 + <path path="${cp}"/>
1.64 + <path location="build/test/classes"/>
1.65 + <path location="${junit.jar}"/>
1.66 + </classpath>
1.67 + <formatter type="brief" usefile="false"/>
1.68 + <formatter type="xml"/>
1.69 + </junit>
1.70 + </target>
1.71 </project>
2.1 --- a/samples/componentinjection/anagram-modular/nbproject/project.xml Sat Jun 14 10:08:21 2008 +0200
2.2 +++ b/samples/componentinjection/anagram-modular/nbproject/project.xml Sat Jun 14 10:08:25 2008 +0200
2.3 @@ -94,6 +94,9 @@
2.4 <action name="clean">
2.5 <target>clean</target>
2.6 </action>
2.7 + <action name="run">
2.8 + <target>run</target>
2.9 + </action>
2.10 <action name="test">
2.11 <target>test</target>
2.12 </action>
2.13 @@ -226,6 +229,7 @@
2.14 <ide-action name="build"/>
2.15 <ide-action name="rebuild"/>
2.16 <ide-action name="clean"/>
2.17 + <ide-action name="run"/>
2.18 <ide-action name="test"/>
2.19 <ide-action name="debug"/>
2.20 </context-menu>
2.21 @@ -300,7 +304,7 @@
2.22 </compilation-unit>
2.23 <compilation-unit>
2.24 <package-root>src-test</package-root>
2.25 - <classpath mode="compile">src-new-api:../libs/dist/junit-4.4.jar</classpath>
2.26 + <classpath mode="compile">src-api:../../libs/dist/junit-4.4.jar::../../libs/dist/org-netbeans-modules-nbjunit.jar:../../libs/dist/org-netbeans-insane.jar:src-gui:../../libs/dist/org-openide-util.jar:src-app-lookup:src-app-serviceloader</classpath>
2.27 <source-level>1.5</source-level>
2.28 </compilation-unit>
2.29 </java-data>
3.1 --- a/samples/componentinjection/anagram-modular/src-app-serviceloader/org/apidesign/anagram/app/serviceloader/AnagramsWithServiceLoader.java Sat Jun 14 10:08:21 2008 +0200
3.2 +++ b/samples/componentinjection/anagram-modular/src-app-serviceloader/org/apidesign/anagram/app/serviceloader/AnagramsWithServiceLoader.java Sat Jun 14 10:08:25 2008 +0200
3.3 @@ -1,5 +1,6 @@
3.4 package org.apidesign.anagram.app.serviceloader;
3.5
3.6 +import java.util.Iterator;
3.7 import org.apidesign.anagram.api.Scrambler;
3.8 import org.apidesign.anagram.api.WordLibrary;
3.9 import org.apidesign.anagram.gui.Anagrams;
3.10 @@ -13,12 +14,14 @@
3.11
3.12 @Override
3.13 protected WordLibrary getWordLibrary() {
3.14 - return ServiceLoader.load(WordLibrary.class).iterator().next();
3.15 + Iterator<WordLibrary> it = ServiceLoader.load(WordLibrary.class).iterator();
3.16 + return it.hasNext() ? it.next() : null;
3.17 }
3.18
3.19 @Override
3.20 protected Scrambler getScrambler() {
3.21 - return ServiceLoader.load(Scrambler.class).iterator().next();
3.22 + Iterator<Scrambler> it = ServiceLoader.load(Scrambler.class).iterator();
3.23 + return it.hasNext() ? it.next() : null;
3.24 }
3.25
3.26 }
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
4.2 +++ b/samples/componentinjection/anagram-modular/src-test/org/apidesign/anagram/app/lookup/AnagramsWithLookupTest.java Sat Jun 14 10:08:25 2008 +0200
4.3 @@ -0,0 +1,11 @@
4.4 +package org.apidesign.anagram.app.lookup;
4.5 +
4.6 +import org.apidesign.anagram.gui.*;
4.7 +import org.apidesign.anagram.app.lookup.AnagramsWithLookup;
4.8 +
4.9 +public class AnagramsWithLookupTest extends AnagramsTestBase {
4.10 + @Override
4.11 + protected Anagrams create() {
4.12 + return new AnagramsWithLookup();
4.13 + }
4.14 +}
5.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
5.2 +++ b/samples/componentinjection/anagram-modular/src-test/org/apidesign/anagram/app/serviceloader/AnagramsWithServiceLoaderTest.java Sat Jun 14 10:08:25 2008 +0200
5.3 @@ -0,0 +1,11 @@
5.4 +package org.apidesign.anagram.app.serviceloader;
5.5 +
5.6 +import org.apidesign.anagram.app.lookup.*;
5.7 +import org.apidesign.anagram.gui.*;
5.8 +
5.9 +public class AnagramsWithServiceLoaderTest extends AnagramsTestBase {
5.10 + @Override
5.11 + protected Anagrams create() {
5.12 + return new AnagramsWithServiceLoader();
5.13 + }
5.14 +}
6.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
6.2 +++ b/samples/componentinjection/anagram-modular/src-test/org/apidesign/anagram/gui/AnagramsTestBase.java Sat Jun 14 10:08:25 2008 +0200
6.3 @@ -0,0 +1,42 @@
6.4 +package org.apidesign.anagram.gui;
6.5 +
6.6 +import org.apidesign.anagram.api.Scrambler;
6.7 +import org.apidesign.anagram.api.WordLibrary;
6.8 +import static org.junit.Assert.*;
6.9 +import org.junit.Test;
6.10 +import org.netbeans.junit.MockServices;
6.11 +
6.12 +public abstract class AnagramsTestBase {
6.13 +
6.14 + protected abstract Anagrams create();
6.15 +
6.16 + @Test public void testInjectionOfServices() throws Exception {
6.17 + Anagrams ui = create();
6.18 +
6.19 + assertNull("No scrambler injected yet", ui.getScrambler());
6.20 + assertNull("No scrambler injected yet", ui.getWordLibrary());
6.21 +
6.22 + MockServices.setServices(
6.23 + ReversingMockScrambler.class, SingleMockLibrary.class
6.24 + );
6.25 +
6.26 + Scrambler s = ui.getScrambler();
6.27 + assertNotNull("Now we have scrambler", s);
6.28 + assertEquals(
6.29 + "It is the mock one", ReversingMockScrambler.class, s.getClass()
6.30 + );
6.31 + WordLibrary l = ui.getWordLibrary();
6.32 + assertNotNull("Now we have library", l);
6.33 + assertEquals(
6.34 + "It is the mock one", SingleMockLibrary.class, l.getClass()
6.35 + );
6.36 + }
6.37 +
6.38 + public static final class ReversingMockScrambler {
6.39 +
6.40 + }
6.41 +
6.42 + public static final class SingleMockLibrary {
6.43 +
6.44 + }
6.45 +}