aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgenii Kliuchnikov <eustas@google.com>2024-01-03 08:18:15 -0800
committerCopybara-Service <copybara-worker@google.com>2024-01-03 08:18:52 -0800
commit082c9626a4717348b6d80cb1004ba9f29ebf2b3c (patch)
tree2d6aaf1bab406f9f586e9ecc7722561d2a85c806
parentfa084310d15d45f7f04c8cd4f6bfdb1d132791af (diff)
downloadbrotli-082c9626a4717348b6d80cb1004ba9f29ebf2b3c.zip
brotli-082c9626a4717348b6d80cb1004ba9f29ebf2b3c.tar.gz
brotli-082c9626a4717348b6d80cb1004ba9f29ebf2b3c.tar.bz2
add test for one-shot encoding/decoding with offset
PiperOrigin-RevId: 595407007
-rw-r--r--java/org/brotli/wrapper/dec/CornerCasesTest.java46
1 files changed, 39 insertions, 7 deletions
diff --git a/java/org/brotli/wrapper/dec/CornerCasesTest.java b/java/org/brotli/wrapper/dec/CornerCasesTest.java
index ab02f23..796ed8d 100644
--- a/java/org/brotli/wrapper/dec/CornerCasesTest.java
+++ b/java/org/brotli/wrapper/dec/CornerCasesTest.java
@@ -6,11 +6,11 @@
package org.brotli.wrapper.dec;
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertArrayEquals;
+import java.io.IOException;
import org.brotli.integration.BrotliJniTestBase;
import org.brotli.wrapper.enc.Encoder;
-import java.io.IOException;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -18,16 +18,48 @@ import org.junit.runners.JUnit4;
/** Tests for {@link org.brotli.wrapper.enc.Encoder}. */
@RunWith(JUnit4.class)
public class CornerCasesTest extends BrotliJniTestBase {
+
+ private static byte[] makeInput(int len) {
+ byte[] dst = new byte[len];
+ for (int i = 0; i < len; ++i) {
+ dst[i] = (byte) Integer.bitCount(i);
+ }
+ return dst;
+ }
+
+ private static byte[] embedChunk(byte[] src, int offset, int padding) {
+ int len = src.length;
+ byte[] dst = new byte[offset + len + padding];
+ // TODO(eustas): fill with garbage?
+ System.arraycopy(src, 0, dst, offset, len);
+ return dst;
+ }
+
@Test
public void testPowerOfTwoInput() throws IOException {
// 24 == max window bits to ensure ring-buffer size is not greater than input.
int len = 1 << 24;
- byte[] data = new byte[len];
- for (int i = 0; i < len; ++i) {
- data[i] = (byte) Integer.bitCount(i);
- }
+ byte[] data = makeInput(len);
byte[] encoded = Encoder.compress(data);
byte[] decoded = Decoder.decompress(encoded);
- assertEquals(len, decoded.length);
+ assertArrayEquals(data, decoded);
+ }
+
+ @Test
+ public void testInputOffset() throws IOException {
+ int inputLength = 19;
+ int inputOffset = 4;
+ int inputPadding = 7;
+ byte[] data = makeInput(inputLength);
+ byte[] input = embedChunk(data, inputOffset, inputPadding);
+ byte[] encoded = Encoder.compress(input, inputOffset, inputLength);
+
+ int outputLength = encoded.length;
+ int outputOffset = 9;
+ int outputPadding = 5;
+ byte[] output = embedChunk(encoded, outputOffset, outputPadding);
+ byte[] decoded = Decoder.decompress(output, outputOffset, outputLength);
+
+ assertArrayEquals(data, decoded);
}
}