| package org.brotli.wrapper.enc; |
| |
| import static org.junit.Assert.assertEquals; |
| |
| import org.brotli.integration.BrotliJniTestBase; |
| import org.brotli.integration.BundleHelper; |
| import org.brotli.wrapper.dec.BrotliInputStream; |
| 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.enc.Encoder}. */ |
| @RunWith(AllTests.class) |
| public class EncoderTest extends BrotliJniTestBase { |
| 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 EncoderTestCase(entry)); |
| } |
| } finally { |
| bundle.close(); |
| } |
| return suite; |
| } |
| |
| /** Test case with a unique name. */ |
| static class EncoderTestCase extends TestCase { |
| final String entryName; |
| EncoderTestCase(String entryName) { |
| super("EncoderTest." + entryName); |
| this.entryName = entryName; |
| } |
| |
| @Override |
| protected void runTest() throws Throwable { |
| EncoderTest.run(entryName); |
| } |
| } |
| |
| private static void run(String entryName) throws Throwable { |
| InputStream bundle = getBundle(); |
| byte[] original; |
| try { |
| original = BundleHelper.readEntry(bundle, entryName); |
| } finally { |
| bundle.close(); |
| } |
| if (original == null) { |
| throw new RuntimeException("Can't read bundle entry: " + entryName); |
| } |
| |
| for (int window = 10; window <= 22; window++) { |
| byte[] compressed = |
| Encoder.compress(original, new Encoder.Parameters().setQuality(6).setWindow(window)); |
| |
| InputStream decoder = new BrotliInputStream(new ByteArrayInputStream(compressed)); |
| try { |
| long originalCrc = BundleHelper.fingerprintStream(new ByteArrayInputStream(original)); |
| long crc = BundleHelper.fingerprintStream(decoder); |
| assertEquals(originalCrc, crc); |
| } finally { |
| decoder.close(); |
| } |
| } |
| } |
| } |