aboutsummaryrefslogtreecommitdiff
path: root/src/test/model/asn1/parsing/BytesReaderTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/model/asn1/parsing/BytesReaderTest.java')
-rw-r--r--src/test/model/asn1/parsing/BytesReaderTest.java95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/test/model/asn1/parsing/BytesReaderTest.java b/src/test/model/asn1/parsing/BytesReaderTest.java
new file mode 100644
index 0000000..3b63a79
--- /dev/null
+++ b/src/test/model/asn1/parsing/BytesReaderTest.java
@@ -0,0 +1,95 @@
+package model.asn1.parsing;
+
+import model.asn1.Tag;
+import model.asn1.TagClass;
+import model.asn1.exceptions.ParseException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+public class BytesReaderTest {
+ private BytesReader target;
+
+ @BeforeEach
+ void setup() {
+ target = new BytesReader(new Byte[]{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });
+ }
+
+ @Test
+ void testConstructor() {
+ assertEquals(0, target.getIndex());
+ assertEquals(10, target.getRawInput().length);
+ assertArrayEquals(new Byte[]{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, target.getRawInput());
+ }
+
+ @Test
+ void testBytesRemaining() {
+ assertEquals(10, target.bytesRemaining());
+ target.read(5, true);
+ assertEquals(5, target.bytesRemaining());
+ }
+
+ @Test
+ void testRead() {
+ assertEquals(10, target.bytesRemaining());
+ assertEquals(0, target.getIndex());
+ assertArrayEquals(new Byte[]{ 1, 2 }, target.read(2, true));
+ assertEquals(8, target.bytesRemaining());
+ assertEquals(2, target.getIndex());
+ assertArrayEquals(new Byte[]{ 3 }, target.read(1, false));
+ assertEquals(8, target.bytesRemaining());
+ assertEquals(2, target.getIndex());
+ assertArrayEquals(new Byte[]{ 3, 4, 5, 6, 7 }, target.read(5, true));
+ assertEquals(3, target.bytesRemaining());
+ assertEquals(7, target.getIndex());
+ assertArrayEquals(new Byte[]{ 8, 9, 10 }, target.read(3, false));
+ assertEquals(3, target.bytesRemaining());
+ assertEquals(7, target.getIndex());
+ assertArrayEquals(new Byte[]{ 8, 9, 10 }, target.read(3, true));
+ assertEquals(0, target.bytesRemaining());
+ assertEquals(10, target.getIndex());
+ }
+
+ @Test
+ void testRequire() throws Exception { // TODO: Exception testing
+ assertEquals(10, target.bytesRemaining());
+ assertEquals(0, target.getIndex());
+ assertArrayEquals(new Byte[]{ 1, 2 }, target.require(2, true));
+ assertArrayEquals(new Byte[]{ 3, 4, 5, 6, 7, 8, 9 }, target.require(7, true));
+ assertArrayEquals(new Byte[]{ 10 }, target.require(1, false));
+ assertThrows(ParseException.class, () -> target.require(2, true));
+ assertArrayEquals(new Byte[]{ 10 }, target.require(1, true));
+ assertThrows(ParseException.class, () -> target.require(1, true));
+ }
+
+ @Test
+ void testValidateSize() throws Exception { // TODO: Exception testing
+ assertEquals(10, target.bytesRemaining());
+ assertEquals(0, target.getIndex());
+ assertArrayEquals(new Byte[]{ 1, 2 }, target.require(2, true));
+ assertArrayEquals(new Byte[]{ 3, 4, 5, 6, 7, 8, 9 }, target.require(7, true));
+ assertArrayEquals(new Byte[]{ 10 }, target.require(1, false));
+ target.validateSize(1);
+ assertThrows(ParseException.class, () -> target.validateSize(2));
+ assertArrayEquals(new Byte[]{ 10 }, target.require(1, true));
+ assertThrows(ParseException.class, () -> target.validateSize(1));
+ }
+
+ @Test
+ void testDetectTag() throws Exception {
+ final BytesReader reader = new BytesReader(new Byte[]{ -95, 0 });
+ assertTrue(reader.detectTag(new Tag(TagClass.CONTEXT_SPECIFIC, true, 1)));
+ assertFalse(reader.detectTag(new Tag(TagClass.CONTEXT_SPECIFIC, true, 0)));
+ assertFalse(reader.detectTag(new Tag(TagClass.UNIVERSAL, true, 0)));
+ assertFalse(reader.detectTag(new Tag(TagClass.CONTEXT_SPECIFIC, false, 0)));
+ }
+
+ @Test
+ void testGetTag() throws Exception {
+ BytesReader reader = new BytesReader(new Byte[]{ -95, 0 });
+ assertEquals(1, reader.getTag(false).getNumber());
+ reader = new BytesReader(new Byte[]{ -96, 0, -95, 0 });
+ assertEquals(1, reader.getTag(true).getNumber());
+ }
+}