More enhancements to Reed-Solomon tests
[zxing.git] / core / test / src / com / google / zxing / common / reedsolomon / ReedSolomonEncoderQRCodeTestCase.java
index 0cdba3f..e2ad2b8 100644 (file)
@@ -16,6 +16,8 @@
 
 package com.google.zxing.common.reedsolomon;
 
+import java.util.Random;
+
 /**
  * @author srowen@google.com (Sean Owen)
  */
@@ -34,6 +36,26 @@ public final class ReedSolomonEncoderQRCodeTestCase extends AbstractReedSolomonT
     doTestQRCodeEncoding(dataBytes, expectedECBytes);
   }
 
+  public void testQRCodeVersusDecoder() throws Exception {
+    Random random = getRandom();
+    ReedSolomonEncoder encoder = new ReedSolomonEncoder(GF256.QR_CODE_FIELD);
+    ReedSolomonDecoder decoder = new ReedSolomonDecoder(GF256.QR_CODE_FIELD);
+    for (int i = 0; i < 100; i++) {
+      int size = random.nextInt(1000);
+      int[] toEncode = new int[size];
+      int ecBytes = random.nextInt(2 * (1 + size / 8));
+      int dataBytes = size - ecBytes;
+      for (int j = 0; j < dataBytes; j++) {
+        toEncode[j] = random.nextInt(256);
+      }
+      int[] original = new int[dataBytes];
+      System.arraycopy(toEncode, 0, original, 0, dataBytes);
+      encoder.encode(toEncode, ecBytes);
+      decoder.decode(toEncode, ecBytes);
+      assertArraysEqual(original, 0, toEncode, 0, dataBytes);
+    }
+  }
+
   // Need more tests I am sure
 
 }