# HG changeset patch # User Jaroslav Tulach # Date 1213430905 -7200 # Node ID b3aab65cde530d46825f851b9f252f130e6ea7f2 # Parent bf59a878e45eee9aaa7db5bd7a69f0893b06f877 Testing behaviour of lookup and service loader diff -r bf59a878e45e -r b3aab65cde53 samples/componentinjection/anagram-modular/build.xml --- a/samples/componentinjection/anagram-modular/build.xml Sat Jun 14 10:08:21 2008 +0200 +++ b/samples/componentinjection/anagram-modular/build.xml Sat Jun 14 10:08:25 2008 +0200 @@ -47,10 +47,14 @@ + + + + - + @@ -89,17 +93,27 @@ - + - + + + + + + + + + + + @@ -126,4 +140,22 @@ + + + + + + + + + + + + + + + + + + diff -r bf59a878e45e -r b3aab65cde53 samples/componentinjection/anagram-modular/nbproject/project.xml --- a/samples/componentinjection/anagram-modular/nbproject/project.xml Sat Jun 14 10:08:21 2008 +0200 +++ b/samples/componentinjection/anagram-modular/nbproject/project.xml Sat Jun 14 10:08:25 2008 +0200 @@ -94,6 +94,9 @@ clean + + run + test @@ -226,6 +229,7 @@ + @@ -300,7 +304,7 @@ src-test - src-new-api:../libs/dist/junit-4.4.jar + 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 1.5 diff -r bf59a878e45e -r b3aab65cde53 samples/componentinjection/anagram-modular/src-app-serviceloader/org/apidesign/anagram/app/serviceloader/AnagramsWithServiceLoader.java --- a/samples/componentinjection/anagram-modular/src-app-serviceloader/org/apidesign/anagram/app/serviceloader/AnagramsWithServiceLoader.java Sat Jun 14 10:08:21 2008 +0200 +++ b/samples/componentinjection/anagram-modular/src-app-serviceloader/org/apidesign/anagram/app/serviceloader/AnagramsWithServiceLoader.java Sat Jun 14 10:08:25 2008 +0200 @@ -1,5 +1,6 @@ package org.apidesign.anagram.app.serviceloader; +import java.util.Iterator; import org.apidesign.anagram.api.Scrambler; import org.apidesign.anagram.api.WordLibrary; import org.apidesign.anagram.gui.Anagrams; @@ -13,12 +14,14 @@ @Override protected WordLibrary getWordLibrary() { - return ServiceLoader.load(WordLibrary.class).iterator().next(); + Iterator it = ServiceLoader.load(WordLibrary.class).iterator(); + return it.hasNext() ? it.next() : null; } @Override protected Scrambler getScrambler() { - return ServiceLoader.load(Scrambler.class).iterator().next(); + Iterator it = ServiceLoader.load(Scrambler.class).iterator(); + return it.hasNext() ? it.next() : null; } } diff -r bf59a878e45e -r b3aab65cde53 samples/componentinjection/anagram-modular/src-test/org/apidesign/anagram/app/lookup/AnagramsWithLookupTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/componentinjection/anagram-modular/src-test/org/apidesign/anagram/app/lookup/AnagramsWithLookupTest.java Sat Jun 14 10:08:25 2008 +0200 @@ -0,0 +1,11 @@ +package org.apidesign.anagram.app.lookup; + +import org.apidesign.anagram.gui.*; +import org.apidesign.anagram.app.lookup.AnagramsWithLookup; + +public class AnagramsWithLookupTest extends AnagramsTestBase { + @Override + protected Anagrams create() { + return new AnagramsWithLookup(); + } +} diff -r bf59a878e45e -r b3aab65cde53 samples/componentinjection/anagram-modular/src-test/org/apidesign/anagram/app/serviceloader/AnagramsWithServiceLoaderTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/componentinjection/anagram-modular/src-test/org/apidesign/anagram/app/serviceloader/AnagramsWithServiceLoaderTest.java Sat Jun 14 10:08:25 2008 +0200 @@ -0,0 +1,11 @@ +package org.apidesign.anagram.app.serviceloader; + +import org.apidesign.anagram.app.lookup.*; +import org.apidesign.anagram.gui.*; + +public class AnagramsWithServiceLoaderTest extends AnagramsTestBase { + @Override + protected Anagrams create() { + return new AnagramsWithServiceLoader(); + } +} diff -r bf59a878e45e -r b3aab65cde53 samples/componentinjection/anagram-modular/src-test/org/apidesign/anagram/gui/AnagramsTestBase.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/componentinjection/anagram-modular/src-test/org/apidesign/anagram/gui/AnagramsTestBase.java Sat Jun 14 10:08:25 2008 +0200 @@ -0,0 +1,42 @@ +package org.apidesign.anagram.gui; + +import org.apidesign.anagram.api.Scrambler; +import org.apidesign.anagram.api.WordLibrary; +import static org.junit.Assert.*; +import org.junit.Test; +import org.netbeans.junit.MockServices; + +public abstract class AnagramsTestBase { + + protected abstract Anagrams create(); + + @Test public void testInjectionOfServices() throws Exception { + Anagrams ui = create(); + + assertNull("No scrambler injected yet", ui.getScrambler()); + assertNull("No scrambler injected yet", ui.getWordLibrary()); + + MockServices.setServices( + ReversingMockScrambler.class, SingleMockLibrary.class + ); + + Scrambler s = ui.getScrambler(); + assertNotNull("Now we have scrambler", s); + assertEquals( + "It is the mock one", ReversingMockScrambler.class, s.getClass() + ); + WordLibrary l = ui.getWordLibrary(); + assertNotNull("Now we have library", l); + assertEquals( + "It is the mock one", SingleMockLibrary.class, l.getClass() + ); + } + + public static final class ReversingMockScrambler { + + } + + public static final class SingleMockLibrary { + + } +}