rt/emul/compact/src/test/java/org/apidesign/bck2brwsr/tck/ResourcesTest.java
changeset 1375 a6c71e376889
parent 1336 804f6f982f4e
child 1398 9926996eca2d
     1.1 --- a/rt/emul/compact/src/test/java/org/apidesign/bck2brwsr/tck/ResourcesTest.java	Thu Oct 03 15:51:55 2013 +0200
     1.2 +++ b/rt/emul/compact/src/test/java/org/apidesign/bck2brwsr/tck/ResourcesTest.java	Sun Oct 20 20:36:03 2013 +0200
     1.3 @@ -17,8 +17,10 @@
     1.4   */
     1.5  package org.apidesign.bck2brwsr.tck;
     1.6  
     1.7 +import java.io.IOException;
     1.8  import java.io.InputStream;
     1.9  import java.net.URL;
    1.10 +import java.util.Enumeration;
    1.11  import org.apidesign.bck2brwsr.vmtest.Compare;
    1.12  import org.apidesign.bck2brwsr.vmtest.VMTest;
    1.13  import org.testng.annotations.Factory;
    1.14 @@ -28,27 +30,52 @@
    1.15   * @author Jaroslav Tulach <jtulach@netbeans.org>
    1.16   */
    1.17  public class ResourcesTest {
    1.18 +    @Compare public String allManifests() throws Exception {
    1.19 +        Enumeration<URL> en = ClassLoader.getSystemResources("META-INF/MANIFEST.MF");
    1.20 +        assert en.hasMoreElements() : "Should have at least one manifest";
    1.21 +        String first = readString(en.nextElement().openStream());
    1.22 +        boolean different = false;
    1.23 +        int cnt = 1;
    1.24 +        while (en.hasMoreElements()) {
    1.25 +            URL url = en.nextElement();
    1.26 +            String now = readString(url.openStream());
    1.27 +            if (!first.equals(now)) {
    1.28 +                different = true;
    1.29 +            }
    1.30 +            cnt++;
    1.31 +            if (cnt > 500) {
    1.32 +                throw new IllegalStateException(
    1.33 +                    "Giving up. First manifest:\n" + first + 
    1.34 +                    "\nLast manifest:\n" + now
    1.35 +                );
    1.36 +            }
    1.37 +        }
    1.38 +        assert different : "Not all manifests should look like first one:\n" + first;
    1.39 +        return "" + cnt;
    1.40 +    }
    1.41      
    1.42      @Compare public String readResourceAsStream() throws Exception {
    1.43          InputStream is = getClass().getResourceAsStream("Resources.txt");
    1.44 -        byte[] b = new byte[30];
    1.45 -        int len = is.read(b);
    1.46 +        return readString(is);
    1.47 +    }
    1.48 +
    1.49 +    private String readString(InputStream is) throws IOException {
    1.50          StringBuilder sb = new StringBuilder();
    1.51 -        for (int i = 0; i < len; i++) {
    1.52 -            sb.append((char)b[i]);
    1.53 +        byte[] b = new byte[512];
    1.54 +        for (;;) { 
    1.55 +            int len = is.read(b);
    1.56 +            if (len == -1) {
    1.57 +                return sb.toString();
    1.58 +            }
    1.59 +            for (int i = 0; i < len; i++) {
    1.60 +                sb.append((char)b[i]);
    1.61 +            }
    1.62          }
    1.63 -        return sb.toString();
    1.64      }
    1.65  
    1.66      @Compare public String readResourceAsStreamFromClassLoader() throws Exception {
    1.67          InputStream is = getClass().getClassLoader().getResourceAsStream("org/apidesign/bck2brwsr/tck/Resources.txt");
    1.68 -        byte[] b = new byte[30];
    1.69 -        int len = is.read(b);
    1.70 -        StringBuilder sb = new StringBuilder();
    1.71 -        for (int i = 0; i < len; i++) {
    1.72 -            sb.append((char)b[i]);
    1.73 -        }
    1.74 -        return sb.toString();
    1.75 +        return readString(is);
    1.76      }
    1.77      
    1.78      @Compare public String toURIFromURL() throws Exception {