aboutsummaryrefslogtreecommitdiffstats
path: root/vespajlib/src/test/java/com/yahoo/compress
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2021-01-19 16:08:59 +0100
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2021-01-20 12:23:29 +0100
commitc9a8248b49109bd4f3abde4c0c492efb04707eab (patch)
tree18ff5b8bdfde7bf30f04395ee591df24508bf0e8 /vespajlib/src/test/java/com/yahoo/compress
parent1105b88537eb28bdbae23c4d967e2fbfa0ad9857 (diff)
Implement an output stream compressing with zstd
Diffstat (limited to 'vespajlib/src/test/java/com/yahoo/compress')
-rw-r--r--vespajlib/src/test/java/com/yahoo/compress/ZstdOuputStreamTest.java48
1 files changed, 48 insertions, 0 deletions
diff --git a/vespajlib/src/test/java/com/yahoo/compress/ZstdOuputStreamTest.java b/vespajlib/src/test/java/com/yahoo/compress/ZstdOuputStreamTest.java
new file mode 100644
index 00000000000..5d35eb10215
--- /dev/null
+++ b/vespajlib/src/test/java/com/yahoo/compress/ZstdOuputStreamTest.java
@@ -0,0 +1,48 @@
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.compress;
+
+import org.junit.jupiter.api.Test;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * @author bjorncs
+ */
+class ZstdOuputStreamTest {
+
+ @Test
+ void output_stream_compresses_input() throws IOException {
+ byte[] inputData = "The quick brown fox jumps over the lazy dog".getBytes();
+ ByteArrayOutputStream arrayOut = new ByteArrayOutputStream();
+ try (ZstdOuputStream zstdOut = new ZstdOuputStream(arrayOut, 12)) {
+ zstdOut.write(inputData[0]);
+ zstdOut.write(inputData, 1, inputData.length - 1);
+ }
+ byte[] compressedData = arrayOut.toByteArray();
+ ZstdCompressor compressor = new ZstdCompressor();
+ byte[] decompressedData = new byte[inputData.length];
+ compressor.decompress(compressedData, 0, compressedData.length, decompressedData, 0, decompressedData.length);
+ assertArrayEquals(inputData, decompressedData);
+ }
+
+ @Test
+ void compressed_size_is_less_than_uncompressed() throws IOException {
+ StringBuilder builder = new StringBuilder();
+ for (int i = 0; i < 100; i++) {
+ builder.append("The quick brown fox jumps over the lazy dog").append('\n');
+ }
+ byte[] inputData = builder.toString().getBytes();
+ ByteArrayOutputStream arrayOut = new ByteArrayOutputStream();
+ try (ZstdOuputStream zstdOut = new ZstdOuputStream(arrayOut)) {
+ zstdOut.write(inputData);
+ }
+ int compressedSize = arrayOut.toByteArray().length;
+ assertTrue(
+ compressedSize < inputData.length,
+ () -> "Compressed size is " + compressedSize + " while uncompressed size is " + inputData.length);
+ }
+}