diff --git a/pom.xml b/pom.xml index d14c929..f095a38 100755 --- a/pom.xml +++ b/pom.xml @@ -45,13 +45,14 @@ - 4.13.2 - 2.13.1 3.8.1 3.2.0 3.3.1 3.0.1 1.0.0.RC2 + 4.13.2 + 3.19.0 + 2.13.1 @@ -66,6 +67,12 @@ ${junit.version} test + + org.assertj + assertj-core + ${assertj.version} + test + diff --git a/src/test/java/org/jnbis/records/CommonRecordsTest.java b/src/test/java/org/jnbis/records/CommonRecordsTest.java new file mode 100644 index 0000000..62ff814 --- /dev/null +++ b/src/test/java/org/jnbis/records/CommonRecordsTest.java @@ -0,0 +1,133 @@ +package org.jnbis.records; + +import org.jnbis.FileUtils; +import org.jnbis.api.Jnbis; +import org.jnbis.api.model.Nist; +import org.jnbis.api.model.record.SignatureImage; +import org.jnbis.api.model.record.TransactionInformation; +import org.jnbis.api.model.record.UserDefinedTestingImage; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +import java.io.File; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * @author TeeSofteis + */ + +@RunWith(Parameterized.class) +public class CommonRecordsTest { + + @Parameterized.Parameters(name = "{index}: {0}") + public static Collection data() { + File[] files = new File(FileUtils.absolute("ansi/references")) + .listFiles((f, name) -> name.endsWith(".an2")); + + assert files != null; + return Arrays.asList(files); + } + + private final File file; + + public CommonRecordsTest(File file) { + this.file = file; + } + + @Test + public void verify() { + Nist decoded = Jnbis.nist().decode(file); + + verifyUserDefinedFields(decoded); + verifyTransactionInfo(decoded); + + verifySignatureImageIfPresent(decoded.getSignatures()); + verifyUserDefinedTestingImageIfPresent(decoded.getUserDefinedTestingImages()); + + verifyOtherCollections(decoded); + } + + private void verifyUserDefinedFields(Nist decoded) { + assertThat(decoded.getUserDefinedTexts()).hasSize(1); + Map fields = decoded.getUserDefinedTexts().get(0).getUserDefinedFields(); + + assertThat(fields.get(0)).isNull(); + assertThat(fields.get(1)).isIn("55", "57"); + assertThat(fields.get(2)).isEqualTo("00"); + assertThat(fields.get(3)).isIn( + "two chinese characters: 華裔", + "domain defined text place holder"); + + } + + private void verifyTransactionInfo(Nist decoded) { + TransactionInformation info = decoded.getTransactionInfo(); + + assertThat(info).isNotNull(); + assertThat(info.getLogicalRecordLength()).isBetween("158", "273"); + assertThat(info.getTypeOfTransaction()).isIn("AMN", "FAUF", "CAR", "ABC"); + assertThat(info.getDestinationAgencyId()).isIn("DAI000000", "Wallace"); + assertThat(info.getOriginatingAgencyId()).isIn("MDNISTIMG", "Gormit"); + } + + private void verifyOtherCollections(Nist decoded) { + assertThat(decoded.getLowResGrayscaleFingerprints().size()).isIn(0, 1, 14); + assertThat(decoded.getHiResGrayscaleFingerprints().size()).isIn(0, 1, 2, 4, 14); + assertThat(decoded.getLowResBinaryFingerprints().size()).isIn(0, 1); + assertThat(decoded.getHiResBinaryFingerprints().size()).isIn(0, 1); + assertThat(decoded.getUserDefinedImages().size()).isIn(0, 1); + assertThat(decoded.getSignatures().size()).isIn(0, 1); + assertThat(decoded.getMinutiaeData().size()).isIn(0, 1, 2); + assertThat(decoded.getFacialAndSmtImages().size()).isIn(0, 1, 2, 6); + assertThat(decoded.getVariableResLatentImages().size()).isIn(0, 1, 5); + assertThat(decoded.getVariableResFingerprints().size()).isIn(0, 1, 2, 3, 5, 14); + assertThat(decoded.getVariableResPalmprints().size()).isIn(0, 2); + assertThat(decoded.getUserDefinedTestingImages().size()).isIn(0, 1); + assertThat(decoded.getIrisImages().size()).isIn(0, 1); + } + + private void verifySignatureImageIfPresent(List images) { + if (images.isEmpty()) return; + + SignatureImage image = images.get(0); + assertThat(image.getLogicalRecordLength()).isIn("48474", "455", "36012"); + assertThat(image.getImageDesignationCharacter()).isEqualTo("1"); + assertThat(image.getImageScanningResolution()).isEqualTo("1"); + assertThat(image.getSignatureType()).isEqualTo("0"); + assertThat(image.getSignatureRepresentationType()).isIn("0", "1"); + } + + private void verifyUserDefinedTestingImageIfPresent(List images) { + if (images.isEmpty()) return; + + UserDefinedTestingImage image = images.get(0); + + assertThat(image.getLogicalRecordLength()).isEqualTo("4733"); + assertThat(image.getImageDesignationCharacter()).isEqualTo("01"); + assertThat(image.getScaleUnits()).isEqualTo("1"); + assertThat(image.getHorizontalPixelScale()).isEqualTo("1"); + assertThat(image.getVerticalPixelScale()).isEqualTo("1"); + assertThat(image.getBitsPerPixel()).isEqualTo("24"); + + Map userDefinedFields = image.getUserDefinedFields(); + assertThat(userDefinedFields).hasSize(4); + + // Tag 16.003 + assertThat(userDefinedFields.get(3)).isEqualTo("Wallace\u001FGromit\u001FMcGraw"); + + // Tag 16.004 + assertThat(userDefinedFields.get(4)).isEqualTo("Shaun\u001EPreston\u001EPiella Backleicht"); + + // Tag 16.005 + assertThat(userDefinedFields.get(5)).isEqualTo("single value"); + + // Tag 16.013 + assertThat(userDefinedFields.get(13)).isEqualTo("A1\u001FB1\u001FC1\u001EA2\u001FB2\u001FC2\u001EA3\u001FB3\u001FC3"); + } +} diff --git a/src/test/java/org/jnbis/records/SignatureImageTest.java b/src/test/java/org/jnbis/records/SignatureImageTest.java deleted file mode 100644 index a89c5d1..0000000 --- a/src/test/java/org/jnbis/records/SignatureImageTest.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.jnbis.records; - -import org.jnbis.FileUtils; -import org.jnbis.api.Jnbis; -import org.jnbis.api.model.Nist; -import org.jnbis.api.model.record.SignatureImage; -import org.junit.Test; - -import java.util.Map; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -public class SignatureImageTest { - private static final String[] FILES = { - "ansi/references/type-8-sig.an2" - }; - - @Test - public void verify() { - String fileName = FileUtils.absolute(FILES[0]); - Nist decoded = Jnbis.nist().decode(fileName); - - commonAssert(decoded); - - // Record 01: - assertEquals("158", decoded.getTransactionInfo().getLogicalRecordLength()); // 1.001 - assertEquals("FAUF", decoded.getTransactionInfo().getTypeOfTransaction()); // 1.004 - assertEquals("DAI000000", decoded.getTransactionInfo().getDestinationAgencyId()); // 1.007 - assertEquals("MDNISTIMG", decoded.getTransactionInfo().getOriginatingAgencyId()); // 1.008 - - // Record 08: - assertEquals(1, decoded.getSignatures().size()); // only one record - - SignatureImage image = decoded.getSignatures().get(0); - assertEquals("48474", image.getLogicalRecordLength()); // 8.001 - assertEquals("1", image.getImageDesignationCharacter()); // 8.002 - assertEquals("1", image.getImageScanningResolution()); - assertEquals("0", image.getSignatureType()); - assertEquals("0", image.getSignatureRepresentationType()); - } - - private void commonAssert(Nist decoded) { - assertNotNull(decoded.getTransactionInfo()); - assertEquals(1, decoded.getUserDefinedTexts().size()); - - Map userDefinedFields = decoded.getUserDefinedTexts().get(0).getUserDefinedFields(); - assertEquals("57", userDefinedFields.get(1)); - assertEquals("00", userDefinedFields.get(2)); - assertEquals("domain defined text place holder", userDefinedFields.get(3)); - } -} diff --git a/src/test/java/org/jnbis/records/UserDefinedTestingImageTest.java b/src/test/java/org/jnbis/records/UserDefinedTestingImageTest.java deleted file mode 100644 index e3163fa..0000000 --- a/src/test/java/org/jnbis/records/UserDefinedTestingImageTest.java +++ /dev/null @@ -1,76 +0,0 @@ -package org.jnbis.records; - -import org.jnbis.FileUtils; -import org.jnbis.api.Jnbis; -import org.jnbis.api.model.Nist; -import org.jnbis.api.model.record.UserDefinedTestingImage; -import org.junit.Test; - -import java.util.Map; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -/** - * @author TeeSofteis - */ -public class UserDefinedTestingImageTest { - private static final String[] FILES = { - "samples/nist/rec01_rec02_rec16.nst" - }; - - @Test - public void verify() { - Nist decoded = decode(FILES[0]); - commonAssert(decoded); - - // Record 01: - assertEquals("194", decoded.getTransactionInfo().getLogicalRecordLength()); // 1.001 - assertEquals("ABC", decoded.getTransactionInfo().getTypeOfTransaction()); // 1.004 - assertEquals("Wallace", decoded.getTransactionInfo().getDestinationAgencyId()); // 1.007 - assertEquals("Gormit", decoded.getTransactionInfo().getOriginatingAgencyId()); // 1.008 - - assertEquals(1, decoded.getUserDefinedTestingImages().size()); // only one record - UserDefinedTestingImage image = decoded.getUserDefinedTestingImages().get(0); - - // Record 16: - assertEquals("4733", image.getLogicalRecordLength()); // 16.001 - assertEquals("01", image.getImageDesignationCharacter()); // 16.002 - assertEquals("1", image.getScaleUnits()); - assertEquals("1", image.getHorizontalPixelScale()); - assertEquals("1", image.getVerticalPixelScale()); - assertEquals("24", image.getBitsPerPixel()); - - Map userDefinedFields = image.getUserDefinedFields(); - assertEquals(4, userDefinedFields.size()); - - // Tag 16.003 - assertEquals("Wallace\u001FGromit\u001FMcGraw", userDefinedFields.get(3)); - - // Tag 16.004 - assertEquals("Shaun\u001EPreston\u001EPiella Backleicht", userDefinedFields.get(4)); - - // Tag 16.005 - assertEquals("single value", userDefinedFields.get(5)); - - // Tag 16.013 - assertEquals("A1\u001FB1\u001FC1\u001EA2\u001FB2\u001FC2\u001EA3\u001FB3\u001FC3", userDefinedFields.get(13)); - } - - private void commonAssert(Nist decoded) { - assertNotNull(decoded.getTransactionInfo()); - assertEquals(1, decoded.getUserDefinedTexts().size()); - - Map userDefinedFields = decoded.getUserDefinedTexts().get(0).getUserDefinedFields(); - assertEquals("57", userDefinedFields.get(1)); - assertEquals("00", userDefinedFields.get(2)); - assertEquals("domain defined text place holder", userDefinedFields.get(3)); - } - - private Nist decode(String name) { - String fileName = FileUtils.absolute(name); - Nist nist = Jnbis.nist().decode(fileName); - assertNotNull(nist); - return nist; - } -} diff --git a/src/test/resources/samples/nist/rec01_rec02_rec16.nst b/src/test/resources/ansi/references/rec01_rec02_rec16.nst.an2 similarity index 100% rename from src/test/resources/samples/nist/rec01_rec02_rec16.nst rename to src/test/resources/ansi/references/rec01_rec02_rec16.nst.an2