package cx.prutser.sudoku.ocr;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
/**
* @author Erik van Zijst
*/
public class OCRUtilsTest {
@Test
public void oneDimensionalCenterOfGravity() {
assertEquals(Pair.newInstance(1, 0),
OCRUtils.centerOfMass(new byte[]{1, 2, 1}, 3, 1, false));
assertEquals(Pair.newInstance(1, 0),
OCRUtils.centerOfMass(new byte[]{1, 0, 1}, 3, 1, false));
assertEquals(Pair.newInstance(0, 0),
OCRUtils.centerOfMass(new byte[]{10, 1, 1}, 3, 1, false));
assertEquals(Pair.newInstance(0, 0),
OCRUtils.centerOfMass(new byte[]{0, 0, 0}, 3, 1, false));
assertEquals(Pair.newInstance(2, 0),
OCRUtils.centerOfMass(new byte[]{0, 0, 1}, 3, 1, false));
}
@Test
public void twoDimensionalCenterOfGravity() {
assertEquals(Pair.newInstance(1, 1), OCRUtils.centerOfMass(new byte[]
{1, 0, 0,
0, 0, 0,
0, 0, 1}, 3, 3, false));
assertEquals(Pair.newInstance(1, 1), OCRUtils.centerOfMass(new byte[]
{1, 0, 1,
0, 0, 0,
1, 0, 1}, 3, 3, false));
assertEquals(Pair.newInstance(2, 0), OCRUtils.centerOfMass(new byte[]
{0, 1, 1,
0, 0, 1,
0, 0, 0}, 3, 3, false));
assertEquals(Pair.newInstance(2, 0), OCRUtils.centerOfMass(new byte[]
{-1, 0, 0,
-1, -1, 0,
-1, -1, -1}, 3, 3, true));
}
@Test
public void invert() {
assertEquals(255, 0xFF & (int) OCRUtils.invert((byte)0));
assertEquals(0, 0xFF & (int) OCRUtils.invert((byte)255));
assertEquals(1, 0xFF & (int) OCRUtils.invert((byte)254));
assertEquals(2, 0xFF & (int) OCRUtils.invert((byte)253));
assertEquals(155, 0xFF & (int) OCRUtils.invert((byte)100));
}
}