diff options
Diffstat (limited to 'src/test/java')
4 files changed, 188 insertions, 13 deletions
diff --git a/src/test/java/org/uic/barcode/asn1/test/GenAlphabet.java b/src/test/java/org/uic/barcode/asn1/test/GenAlphabet.java new file mode 100644 index 0000000..a08392e --- /dev/null +++ b/src/test/java/org/uic/barcode/asn1/test/GenAlphabet.java @@ -0,0 +1,11 @@ +package org.uic.barcode.asn1.test;
+
+import org.uic.barcode.asn1.datatypes.Alphabet;
+
+public class GenAlphabet extends Alphabet {
+
+ public GenAlphabet() {
+ super("ACGT");
+ }
+
+}
diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeBitStringTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeBitStringTest.java index 574a9cf..94f29c2 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeBitStringTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeBitStringTest.java @@ -3,13 +3,13 @@ package org.uic.barcode.asn1.test; import static org.junit.Assert.assertEquals; import java.util.ArrayList; -import java.util.List; import java.util.logging.Level; import org.junit.Test; import org.uic.barcode.asn1.datatypes.Asn1Optional; -import org.uic.barcode.asn1.datatypes.Asn1VarSizeBitstring; +import org.uic.barcode.asn1.datatypes.Bitstring; import org.uic.barcode.asn1.datatypes.FieldOrder; +import org.uic.barcode.asn1.datatypes.FixedSize; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; @@ -22,7 +22,7 @@ public class UperEncodeBitStringTest { World-Schema DEFINITIONS AUTOMATIC TAGS ::= BEGIN TestRecord ::= [APPLICATION 0] IMPLICIT SEQUENCE { - value BIT STRING OPTIONAL, + value BIT STRING (SIZE(3)) OPTIONAL } END @@ -39,19 +39,20 @@ public class UperEncodeBitStringTest { public static class TestRecord { @FieldOrder(order = 0) - @Asn1Optional() Asn1VarSizeBitstring value; + @Asn1Optional() + @Bitstring() + @FixedSize(3) + ArrayList<Boolean> booleans = null; public TestRecord() { this(false,false,true); } public TestRecord(Boolean value1,Boolean value2,Boolean value3 ) { - List<Boolean> booleans = new ArrayList<Boolean>(); + booleans = new ArrayList<Boolean>(); booleans.add(value1); booleans.add(value2); - booleans.add(value3); - this.value = new Asn1VarSizeBitstring(booleans); - + booleans.add(value3); } } @@ -61,7 +62,7 @@ public class UperEncodeBitStringTest { byte[] encoded = UperEncoder.encode(record); String hex = UperEncoder.hexStringFromBytes(encoded); UperEncoder.logger.log(Level.FINEST,String.format("data hex: %s", hex)); - assertEquals("8190",hex); + assertEquals("90",hex); } @@ -70,11 +71,11 @@ public class UperEncodeBitStringTest { byte[] encoded = UperEncoder.encode(record); String hex = UperEncoder.hexStringFromBytes(encoded); UperEncoder.logger.log(Level.FINEST,String.format("data hex: %s", hex)); - assertEquals("8190",hex); + assertEquals("90",hex); TestRecord result = UperEncoder.decode(encoded, TestRecord.class); - assertEquals(result.value.get(0),record.value.get(0)); - assertEquals(result.value.get(1),record.value.get(1)); - assertEquals(result.value.get(2),record.value.get(2)); + assertEquals(result.booleans.get(0),record.booleans.get(0)); + assertEquals(result.booleans.get(1),record.booleans.get(1)); + assertEquals(result.booleans.get(2),record.booleans.get(2)); } diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeStringCustomAlphabetTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeStringCustomAlphabetTest.java new file mode 100644 index 0000000..03b8bac --- /dev/null +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeStringCustomAlphabetTest.java @@ -0,0 +1,82 @@ +package org.uic.barcode.asn1.test; + +import static org.junit.Assert.assertEquals; + +import java.util.logging.Level; + +import org.junit.Test; +import org.uic.barcode.asn1.datatypes.Asn1Optional; +import org.uic.barcode.asn1.datatypes.CharacterRestriction; +import org.uic.barcode.asn1.datatypes.FieldOrder; +import org.uic.barcode.asn1.datatypes.RestrictedString; +import org.uic.barcode.asn1.datatypes.Sequence; +import org.uic.barcode.asn1.uper.UperEncoder; + + +public class UperEncodeStringCustomAlphabetTest { + + /** + * Example from the Standard on UPER. + <pre> + World-Schema DEFINITIONS AUTOMATIC TAGS ::= + BEGIN + TestRecord ::= [APPLICATION 0] IMPLICIT SEQUENCE { + value1 PrintableString ( FROM ("ACGT") ) OPTIONAL, + value2 PrintableString ( FROM ("ACGT") ) OPTIONAL + } + END + + rec1value TestRecord ::= { + value1 "ACGT", + value2 "ACTGCATCGA" + } + </pre> + */ + @Sequence + public static class TestRecord { + + @FieldOrder(order = 0) + @RestrictedString(value = CharacterRestriction.VisibleString, alphabet = GenAlphabet.class) + @Asn1Optional() String value1; + + @FieldOrder(order = 1) + @RestrictedString(value = CharacterRestriction.VisibleString, alphabet = GenAlphabet.class) + @Asn1Optional() String value2; + + public TestRecord() { + } + + public TestRecord(String v1, String v2) { + this.value1 = v1; + this.value2 = v2; + } + } + + + @Test public void testEncode() throws IllegalArgumentException, IllegalAccessException { + + + TestRecord record = new TestRecord("ACGT", "ACTGCATCGA"); + byte[] encoded = UperEncoder.encode(record); + String hex = UperEncoder.hexStringFromBytes(encoded); + UperEncoder.logger.log(Level.FINEST,String.format("data hex: %s", hex)); + assertEquals("C106C2879360",hex); + + } + + + @Test public void testDecode() throws IllegalArgumentException, IllegalAccessException { + + TestRecord record = new TestRecord("ACGT", "ACTGCATCGA"); + byte[] encoded = UperEncoder.encode(record); + String hex = UperEncoder.hexStringFromBytes(encoded); + UperEncoder.logger.log(Level.FINEST,String.format("data hex: %s", hex)); + assertEquals("C106C2879360",hex); + TestRecord result = UperEncoder.decode(encoded, TestRecord.class); + assertEquals(result.value1,record.value1); + assertEquals(result.value2,record.value2); + } + + + +} diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeVarBitStringTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeVarBitStringTest.java new file mode 100644 index 0000000..d6212e2 --- /dev/null +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeVarBitStringTest.java @@ -0,0 +1,81 @@ +package org.uic.barcode.asn1.test; + +import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Level; + +import org.junit.Test; +import org.uic.barcode.asn1.datatypes.Asn1Optional; +import org.uic.barcode.asn1.datatypes.Asn1VarSizeBitstring; +import org.uic.barcode.asn1.datatypes.FieldOrder; +import org.uic.barcode.asn1.datatypes.Sequence; +import org.uic.barcode.asn1.uper.UperEncoder; + + +public class UperEncodeVarBitStringTest { + + /** + * Example from the Standard on UPER. + <pre> + World-Schema DEFINITIONS AUTOMATIC TAGS ::= + BEGIN + TestRecord ::= [APPLICATION 0] IMPLICIT SEQUENCE { + value BIT STRING OPTIONAL, + } + END + + + rec1value TestRecord ::= { + value '001'B + } + </pre> + + + + */ + @Sequence + public static class TestRecord { + + @FieldOrder(order = 0) + @Asn1Optional() Asn1VarSizeBitstring value; + + public TestRecord() { + this(false,false,true); + } + + public TestRecord(Boolean value1,Boolean value2,Boolean value3 ) { + List<Boolean> booleans = new ArrayList<Boolean>(); + booleans.add(value1); + booleans.add(value2); + booleans.add(value3); + this.value = new Asn1VarSizeBitstring(booleans); + + } + } + + + @Test public void testEncode() throws IllegalArgumentException, IllegalAccessException { + TestRecord record = new TestRecord(false,false,true); + byte[] encoded = UperEncoder.encode(record); + String hex = UperEncoder.hexStringFromBytes(encoded); + UperEncoder.logger.log(Level.FINEST,String.format("data hex: %s", hex)); + assertEquals("8190",hex); + } + + + @Test public void testDecode() throws IllegalArgumentException, IllegalAccessException { + TestRecord record = new TestRecord(false,false,true); + byte[] encoded = UperEncoder.encode(record); + String hex = UperEncoder.hexStringFromBytes(encoded); + UperEncoder.logger.log(Level.FINEST,String.format("data hex: %s", hex)); + assertEquals("8190",hex); + TestRecord result = UperEncoder.decode(encoded, TestRecord.class); + assertEquals(result.value.get(0),record.value.get(0)); + assertEquals(result.value.get(1),record.value.get(1)); + assertEquals(result.value.get(2),record.value.get(2)); + + } + +} |