diff options
Diffstat (limited to 'java/org/brotli/wrapper/dec/DecoderTest.java')
-rwxr-xr-x | java/org/brotli/wrapper/dec/DecoderTest.java | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/java/org/brotli/wrapper/dec/DecoderTest.java b/java/org/brotli/wrapper/dec/DecoderTest.java new file mode 100755 index 0000000..0a8970f --- /dev/null +++ b/java/org/brotli/wrapper/dec/DecoderTest.java @@ -0,0 +1,82 @@ +/* Copyright 2017 Google Inc. All Rights Reserved. + + Distributed under MIT license. + See file LICENSE for detail or copy at https://opensource.org/licenses/MIT +*/ + +package org.brotli.wrapper.dec; + +import static org.junit.Assert.assertEquals; + +import org.brotli.integration.BundleHelper; +import java.io.ByteArrayInputStream; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.List; +import junit.framework.TestCase; +import junit.framework.TestSuite; +import org.junit.runner.RunWith; +import org.junit.runners.AllTests; + +/** Tests for {@link org.brotli.wrapper.dec.Decoder}. */ +@RunWith(AllTests.class) +public class DecoderTest { + + // TODO: remove when Bazel get JNI support. + static { + System.load(new java.io.File(new java.io.File(System.getProperty("java.library.path")), + "liblibjni.so").getAbsolutePath()); + } + + static InputStream getBundle() throws IOException { + return new FileInputStream(System.getProperty("TEST_BUNDLE")); + } + + /** Creates a test suite. */ + public static TestSuite suite() throws IOException { + TestSuite suite = new TestSuite(); + InputStream bundle = getBundle(); + try { + List<String> entries = BundleHelper.listEntries(bundle); + for (String entry : entries) { + suite.addTest(new DecoderTestCase(entry)); + } + } finally { + bundle.close(); + } + return suite; + } + + /** Test case with a unique name. */ + static class DecoderTestCase extends TestCase { + final String entryName; + DecoderTestCase(String entryName) { + super("DecoderTest." + entryName); + this.entryName = entryName; + } + + @Override + protected void runTest() throws Throwable { + DecoderTest.run(entryName); + } + } + + private static void run(String entryName) throws Throwable { + InputStream bundle = getBundle(); + byte[] compressed; + try { + compressed = BundleHelper.readEntry(bundle, entryName); + } finally { + bundle.close(); + } + if (compressed == null) { + throw new RuntimeException("Can't read bundle entry: " + entryName); + } + + byte[] decompressed = Decoder.decompress(compressed); + + long crc = BundleHelper.fingerprintStream(new ByteArrayInputStream(decompressed)); + assertEquals(BundleHelper.getExpectedFingerprint(entryName), crc); + } +} |