You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jp...@apache.org on 2012/10/28 17:04:12 UTC

svn commit: r1403027 - /lucene/dev/trunk/lucene/codecs/src/test/org/apache/lucene/codecs/compressing/AbstractTestCompressionMode.java

Author: jpountz
Date: Sun Oct 28 16:04:12 2012
New Revision: 1403027

URL: http://svn.apache.org/viewvc?rev=1403027&view=rev
Log:
LUCENE-4509: improve test coverage of CompressingStoredFieldsFormat.

Modified:
    lucene/dev/trunk/lucene/codecs/src/test/org/apache/lucene/codecs/compressing/AbstractTestCompressionMode.java

Modified: lucene/dev/trunk/lucene/codecs/src/test/org/apache/lucene/codecs/compressing/AbstractTestCompressionMode.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/codecs/src/test/org/apache/lucene/codecs/compressing/AbstractTestCompressionMode.java?rev=1403027&r1=1403026&r2=1403027&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/codecs/src/test/org/apache/lucene/codecs/compressing/AbstractTestCompressionMode.java (original)
+++ lucene/dev/trunk/lucene/codecs/src/test/org/apache/lucene/codecs/compressing/AbstractTestCompressionMode.java Sun Oct 28 16:04:12 2012
@@ -76,6 +76,16 @@ public abstract class AbstractTestCompre
     return Arrays.copyOfRange(bytes.bytes, bytes.offset, bytes.offset + bytes.length);
   }
 
+  static byte[] copyCompressedData(Uncompressor uncompressor, byte[] compressed) throws IOException {
+    GrowableByteArrayDataOutput out = new GrowableByteArrayDataOutput(compressed.length);
+    uncompressor.copyCompressedData(new ByteArrayDataInput(compressed), out);
+    return Arrays.copyOf(out.bytes, out.length);
+  }
+
+  byte[] copyCompressedData(byte[] compressed) throws IOException {
+    return copyCompressedData(mode.newUncompressor(), compressed);
+  }
+
   public void testUncompress() throws IOException {
     final byte[] uncompressed = randomArray();
     final byte[] compressed = compress(uncompressed);
@@ -103,9 +113,47 @@ public abstract class AbstractTestCompre
   public void testCopyCompressedData() throws IOException {
     final byte[] uncompressed = randomArray();
     final byte[] compressed = compress(uncompressed);
-    GrowableByteArrayDataOutput out = new GrowableByteArrayDataOutput(uncompressed.length);
-    mode.newUncompressor().copyCompressedData(new ByteArrayDataInput(compressed), out);
-    assertArrayEquals(compressed, Arrays.copyOf(out.bytes, out.length));
+    assertArrayEquals(compressed, copyCompressedData(compressed));
+  }
+
+  public void test(byte[] uncompressed) throws IOException {
+    final byte[] compressed = compress(uncompressed);
+    final byte[] restored = uncompress(compressed);
+    assertEquals(uncompressed.length, restored.length);
+    assertArrayEquals(compressed, copyCompressedData(compressed));
+  }
+
+  public void testEmptySequence() throws IOException {
+    test(new byte[0]);
+  }
+
+  public void testShortSequence() throws IOException {
+    test(new byte[] { (byte) random().nextInt(256) });
+  }
+
+  public void testIncompressible() throws IOException {
+    final byte[] uncompressed = new byte[RandomInts.randomIntBetween(random(), 20, 256)];
+    for (int i = 0; i < uncompressed.length; ++i) {
+      uncompressed[i] = (byte) i;
+    }
+    test(uncompressed);
+  }
+
+  // for LZ compression
+
+  public void testShortLiteralsAndMatchs() throws IOException {
+    // literals and matchs lengths <= 15
+    final byte[] uncompressed = "1234562345673456745678910123".getBytes("UTF-8");
+    test(uncompressed);
+  }
+
+  public void testLongLiteralsAndMatchs() throws IOException {
+    // literals and matchs length > 16
+    final byte[] uncompressed = new byte[RandomInts.randomIntBetween(random(), 300, 1024)];
+    for (int i = 0; i < uncompressed.length; ++i) {
+      uncompressed[i] = (byte) i;
+    }
+    test(uncompressed);
   }
 
-}
+}
\ No newline at end of file