jdk/test/java/lang/module/ModuleFinderTest.java
changeset 38457 3d019217e322
parent 37779 7c84df693837
child 41817 b90ad1de93ea
--- a/jdk/test/java/lang/module/ModuleFinderTest.java	Fri May 20 16:34:14 2016 -0700
+++ b/jdk/test/java/lang/module/ModuleFinderTest.java	Sat May 21 08:01:03 2016 +0100
@@ -76,9 +76,9 @@
 
 
     /**
-     * Test ModuleFinder.of with zero entries
+     * Test ModuleFinder.of with no entries
      */
-    public void testOfZeroEntries() {
+    public void testOfNoEntries() {
         ModuleFinder finder = ModuleFinder.of();
         assertTrue(finder.findAll().isEmpty());
         assertFalse(finder.find("java.rhubarb").isPresent());
@@ -454,18 +454,46 @@
 
 
     /**
-     * Test ModuleFinder.compose
+     * Test ModuleFinder.compose with no module finders
+     */
+    public void testComposeOfNone() throws Exception {
+        ModuleFinder finder = ModuleFinder.of();
+        assertTrue(finder.findAll().isEmpty());
+        assertFalse(finder.find("java.rhubarb").isPresent());
+    }
+
+
+    /**
+     * Test ModuleFinder.compose with one module finder
      */
-    public void testCompose() throws Exception {
+    public void testComposeOfOne() throws Exception {
+        Path dir = Files.createTempDirectory(USER_DIR, "mods");
+        createModularJar(dir.resolve("m1.jar"), "m1");
+        createModularJar(dir.resolve("m2.jar"), "m2");
+
+        ModuleFinder finder1 = ModuleFinder.of(dir);
+
+        ModuleFinder finder = ModuleFinder.compose(finder1);
+        assertTrue(finder.findAll().size() == 2);
+        assertTrue(finder.find("m1").isPresent());
+        assertTrue(finder.find("m2").isPresent());
+        assertFalse(finder.find("java.rhubarb").isPresent());
+    }
+
+
+    /**
+     * Test ModuleFinder.compose with two module finders
+     */
+    public void testComposeOfTwo() throws Exception {
         Path dir1 = Files.createTempDirectory(USER_DIR, "mods1");
-        createExplodedModule(dir1.resolve("m1"), "m1@1.0");
-        createExplodedModule(dir1.resolve("m2"), "m2@1.0");
+        createModularJar(dir1.resolve("m1.jar"), "m1@1.0");
+        createModularJar(dir1.resolve("m2.jar"), "m2@1.0");
 
         Path dir2 = Files.createTempDirectory(USER_DIR, "mods2");
-        createExplodedModule(dir2.resolve("m1"), "m1@2.0");
-        createExplodedModule(dir2.resolve("m2"), "m2@2.0");
-        createExplodedModule(dir2.resolve("m3"), "m3");
-        createExplodedModule(dir2.resolve("m4"), "m4");
+        createModularJar(dir2.resolve("m1.jar"), "m1@2.0");
+        createModularJar(dir2.resolve("m2.jar"), "m2@2.0");
+        createModularJar(dir2.resolve("m3.jar"), "m3");
+        createModularJar(dir2.resolve("m4.jar"), "m4");
 
         ModuleFinder finder1 = ModuleFinder.of(dir1);
         ModuleFinder finder2 = ModuleFinder.of(dir2);
@@ -478,23 +506,65 @@
         assertTrue(finder.find("m4").isPresent());
         assertFalse(finder.find("java.rhubarb").isPresent());
 
-        // check that m1@1.0 (and not m1@2.0) is found
+        // check that m1@1.0 is found
         ModuleDescriptor m1 = finder.find("m1").get().descriptor();
         assertEquals(m1.version().get().toString(), "1.0");
 
-        // check that m2@1.0 (and not m2@2.0) is found
+        // check that m2@1.0 is found
         ModuleDescriptor m2 = finder.find("m2").get().descriptor();
         assertEquals(m2.version().get().toString(), "1.0");
     }
 
 
     /**
-     * Test ModuleFinder.empty
+     * Test ModuleFinder.compose with three module finders
      */
-    public void testEmpty() {
-        ModuleFinder finder = ModuleFinder.empty();
-        assertTrue(finder.findAll().isEmpty());
+    public void testComposeOfThree() throws Exception {
+        Path dir1 = Files.createTempDirectory(USER_DIR, "mods1");
+        createModularJar(dir1.resolve("m1.jar"), "m1@1.0");
+        createModularJar(dir1.resolve("m2.jar"), "m2@1.0");
+
+        Path dir2 = Files.createTempDirectory(USER_DIR, "mods2");
+        createModularJar(dir2.resolve("m1.jar"), "m1@2.0");
+        createModularJar(dir2.resolve("m2.jar"), "m2@2.0");
+        createModularJar(dir2.resolve("m3.jar"), "m3@2.0");
+        createModularJar(dir2.resolve("m4.jar"), "m4@2.0");
+
+        Path dir3 = Files.createTempDirectory(USER_DIR, "mods3");
+        createModularJar(dir3.resolve("m3.jar"), "m3@3.0");
+        createModularJar(dir3.resolve("m4.jar"), "m4@3.0");
+        createModularJar(dir3.resolve("m5.jar"), "m5");
+        createModularJar(dir3.resolve("m6.jar"), "m6");
+
+        ModuleFinder finder1 = ModuleFinder.of(dir1);
+        ModuleFinder finder2 = ModuleFinder.of(dir2);
+        ModuleFinder finder3 = ModuleFinder.of(dir3);
+
+        ModuleFinder finder = ModuleFinder.compose(finder1, finder2, finder3);
+        assertTrue(finder.findAll().size() == 6);
+        assertTrue(finder.find("m1").isPresent());
+        assertTrue(finder.find("m2").isPresent());
+        assertTrue(finder.find("m3").isPresent());
+        assertTrue(finder.find("m4").isPresent());
+        assertTrue(finder.find("m5").isPresent());
+        assertTrue(finder.find("m6").isPresent());
         assertFalse(finder.find("java.rhubarb").isPresent());
+
+        // check that m1@1.0 is found
+        ModuleDescriptor m1 = finder.find("m1").get().descriptor();
+        assertEquals(m1.version().get().toString(), "1.0");
+
+        // check that m2@1.0 is found
+        ModuleDescriptor m2 = finder.find("m2").get().descriptor();
+        assertEquals(m2.version().get().toString(), "1.0");
+
+        // check that m3@2.0 is found
+        ModuleDescriptor m3 = finder.find("m3").get().descriptor();
+        assertEquals(m3.version().get().toString(), "2.0");
+
+        // check that m4@2.0 is found
+        ModuleDescriptor m4 = finder.find("m4").get().descriptor();
+        assertEquals(m4.version().get().toString(), "2.0");
     }
 
 
@@ -503,34 +573,46 @@
      */
     public void testNulls() {
 
+        // ofSystem
         try {
             ModuleFinder.ofSystem().find(null);
             assertTrue(false);
         } catch (NullPointerException expected) { }
 
+        // of
+        Path dir = Paths.get("d");
         try {
             ModuleFinder.of().find(null);
             assertTrue(false);
         } catch (NullPointerException expected) { }
-
         try {
-            ModuleFinder.empty().find(null);
+            ModuleFinder.of((Path)null);
             assertTrue(false);
         } catch (NullPointerException expected) { }
-
         try {
             ModuleFinder.of((Path[])null);
             assertTrue(false);
         } catch (NullPointerException expected) { }
-
         try {
-            ModuleFinder.of((Path)null);
+            ModuleFinder.of(dir, null);
+            assertTrue(false);
+        } catch (NullPointerException expected) { }
+        try {
+            ModuleFinder.of(null, dir);
             assertTrue(false);
         } catch (NullPointerException expected) { }
 
         // compose
         ModuleFinder finder = ModuleFinder.of();
         try {
+            ModuleFinder.compose((ModuleFinder)null);
+            assertTrue(false);
+        } catch (NullPointerException expected) { }
+        try {
+            ModuleFinder.compose((ModuleFinder[])null);
+            assertTrue(false);
+        } catch (NullPointerException expected) { }
+        try {
             ModuleFinder.compose(finder, null);
             assertTrue(false);
         } catch (NullPointerException expected) { }