Tiny bit more cleanup + explicit stable refresh test.

git-svn-id: https://google-web-toolkit.googlecode.com/svn/releases/1.6@4526 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/test/com/google/gwt/dev/resource/impl/ResourceOracleImplTest.java b/dev/core/test/com/google/gwt/dev/resource/impl/ResourceOracleImplTest.java
index 4625ee3..0903a4f 100644
--- a/dev/core/test/com/google/gwt/dev/resource/impl/ResourceOracleImplTest.java
+++ b/dev/core/test/com/google/gwt/dev/resource/impl/ResourceOracleImplTest.java
@@ -184,37 +184,18 @@
 
     String keyReroot = "/BarClient1.txt";
 
-    PathPrefix pathPrefix1Reroot = new PathPrefix("org/example/bar/client",
-        null, true);
-    PathPrefix pathPrefix2Reroot = new PathPrefix("org/example/foo/client",
-        null, true);
+    PathPrefix pp1 = new PathPrefix("org/example/bar/client", null, true);
+    PathPrefix pp2 = new PathPrefix("org/example/foo/client", null, true);
 
-    PathPrefixSet pps12Reroot = new PathPrefixSet();
-    pps12Reroot.add(pathPrefix1Reroot);
-    pps12Reroot.add(pathPrefix2Reroot);
+    // Resource in cpe2 wins because pp2 comes later.
+    testResourceInCPE(logger, keyReroot, cpe2jar, cp12, pp1, pp2);
+    // Order of specifying classpath is reversed, it still matches cpe2.
+    testResourceInCPE(logger, keyReroot, cpe2jar, cp21, pp1, pp2);
 
-    PathPrefixSet pps21Reroot = new PathPrefixSet();
-    pps21Reroot.add(pathPrefix2Reroot);
-    pps21Reroot.add(pathPrefix1Reroot);
-
-    /*
-     * the keyReroot resource in cpe2 wins because pathPrefix2Reroot comes
-     * later.
-     */
-    testResourceInCPE(logger, keyReroot, cpe2jar, cp12, pathPrefix1Reroot,
-        pathPrefix2Reroot);
-    // order of specifying classpath is reversed, it still matches cpe2
-    testResourceInCPE(logger, keyReroot, cpe2jar, cp21, pathPrefix1Reroot,
-        pathPrefix2Reroot);
-    /*
-     * the keyReroot resource in cpe2 wins because pathPrefix2Reroot comes
-     * later.
-     */
-    testResourceInCPE(logger, keyReroot, cpe1jar, cp12, pathPrefix2Reroot,
-        pathPrefix1Reroot);
-    // order of specifying classpath is reversed, it still matches cpe1
-    testResourceInCPE(logger, keyReroot, cpe1jar, cp21, pathPrefix2Reroot,
-        pathPrefix1Reroot);
+    // Resource in cpe1 wins because pp1 comes later.
+    testResourceInCPE(logger, keyReroot, cpe1jar, cp12, pp2, pp1);
+    // Order of specifying classpath is reversed, it still matches cpe1.
+    testResourceInCPE(logger, keyReroot, cpe1jar, cp21, pp2, pp1);
   }
 
   /**
@@ -309,6 +290,20 @@
   }
 
   /**
+   * Ensure refresh is stable when multiple classpaths + multiple path prefixes
+   * all include the same resource.
+   */
+  public void testStableRefreshOnBlot() {
+    TreeLogger logger = createTestTreeLogger();
+    ClassPathEntry cpe1 = getClassPathEntry1AsMock();
+    ClassPathEntry cpe2 = getClassPathEntry2AsMock();
+    PathPrefix pp1 = new PathPrefix("org/example/bar/client", null, false);
+    PathPrefix pp2 = new PathPrefix("org/example/bar", null, false);
+    testResourceInCPE(logger, "org/example/bar/client/BarClient2.txt", cpe1,
+        new ClassPathEntry[] {cpe1, cpe2}, pp1, pp2);
+  }
+
+  /**
    * Creates an array of class path entries, setting up each one with a
    * well-known set of client prefixes.
    */
@@ -338,19 +333,6 @@
     return snapshot1;
   }
 
-  private void testResourceInCPE(TreeLogger logger, String resourceKey,
-      ClassPathEntry expectedCPE, ClassPathEntry[] classPath,
-      PathPrefix... pathPrefixes) {
-    ResourceOracleImpl oracle = new ResourceOracleImpl(Arrays.asList(classPath));
-    PathPrefixSet pps = new PathPrefixSet();
-    for (PathPrefix pathPrefix : pathPrefixes) {
-      pps.add(pathPrefix);
-    }
-    oracle.setPathPrefixes(pps);
-    ResourceOracleSnapshot s = refreshAndSnapshot(logger, oracle);
-    s.assertPathIncluded(resourceKey, expectedCPE);
-  }
-
   private void testReadingResource(ClassPathEntry cpe1, ClassPathEntry cpe2)
       throws IOException {
     TreeLogger logger = createTestTreeLogger();
@@ -523,6 +505,19 @@
     }
   }
 
+  private void testResourceInCPE(TreeLogger logger, String resourceKey,
+      ClassPathEntry expectedCPE, ClassPathEntry[] classPath,
+      PathPrefix... pathPrefixes) {
+    ResourceOracleImpl oracle = new ResourceOracleImpl(Arrays.asList(classPath));
+    PathPrefixSet pps = new PathPrefixSet();
+    for (PathPrefix pathPrefix : pathPrefixes) {
+      pps.add(pathPrefix);
+    }
+    oracle.setPathPrefixes(pps);
+    ResourceOracleSnapshot s = refreshAndSnapshot(logger, oracle);
+    s.assertPathIncluded(resourceKey, expectedCPE);
+  }
+
   private void testResourceModification(ClassPathEntry cpe1, ClassPathEntry cpe2) {
     TreeLogger logger = createTestTreeLogger();