At last update to JUnit 4.x
[zxing.git] / core / test / src / com / google / zxing / common / reedsolomon / ReedSolomonEncoderQRCodeTestCase.java
1 /*
2  * Copyright 2008 ZXing authors
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package com.google.zxing.common.reedsolomon;
18
19 import org.junit.Test;
20
21 import java.util.Random;
22
23 /**
24  * @author Sean Owen
25  */
26 public final class ReedSolomonEncoderQRCodeTestCase extends AbstractReedSolomonTestCase {
27
28   /**
29    * Tests example given in ISO 18004, Annex I
30    */
31   @Test
32   public void testISO18004Example() {
33     int[] dataBytes = {
34       0x10, 0x20, 0x0C, 0x56, 0x61, 0x80, 0xEC, 0x11,
35       0xEC, 0x11, 0xEC, 0x11, 0xEC, 0x11, 0xEC, 0x11 };
36     int[] expectedECBytes = {
37       0xA5, 0x24, 0xD4, 0xC1, 0xED, 0x36, 0xC7, 0x87,
38       0x2C, 0x55 };
39     doTestQRCodeEncoding(dataBytes, expectedECBytes);
40   }
41
42   @Test
43   public void testQRCodeVersusDecoder() throws Exception {
44     Random random = getRandom();
45     ReedSolomonEncoder encoder = new ReedSolomonEncoder(GF256.QR_CODE_FIELD);
46     ReedSolomonDecoder decoder = new ReedSolomonDecoder(GF256.QR_CODE_FIELD);
47     for (int i = 0; i < 100; i++) {
48       int size = random.nextInt(1000);
49       int[] toEncode = new int[size];
50       int ecBytes = 1 + random.nextInt(2 * (1 + size / 8));
51       int dataBytes = size - ecBytes;
52       for (int j = 0; j < dataBytes; j++) {
53         toEncode[j] = random.nextInt(256);
54       }
55       int[] original = new int[dataBytes];
56       System.arraycopy(toEncode, 0, original, 0, dataBytes);
57       encoder.encode(toEncode, ecBytes);
58       decoder.decode(toEncode, ecBytes);
59       assertArraysEqual(original, 0, toEncode, 0, dataBytes);
60     }
61   }
62
63   // Need more tests I am sure
64
65 }