@Test public void shouldMarshalAllNumbers() throws IOException { ShortNumbers sn = new ShortNumbers(); sn.setI8((byte) 5); sn.setU8((short) 200); sn.setI16((short) 1000); sn.setU16(50000); LongNumbers ln = new LongNumbers(); ln.setI32(-100000); ln.setU32(3_000_000_000L); ln.setI24(5_000_000); ln.setU24(10_000_000); AllNumbers an = new AllNumbers(); an.setShortNumbers(sn); an.setLongNumbers(ln); ByteArrayOutputStream os = new ByteArrayOutputStream(); Marshaller marshaller = dadlContext.createMarshaller(); marshaller.marshal(an, os); byte[] bytes = os.toByteArray(); assertThat(bytes.length, is(20)); ByteArrayBitStreamReader reader = new ByteArrayBitStreamReader(bytes); assertThat(reader.readByte(), is((byte) 5)); assertThat(reader.readUnsignedByte(), is(200)); assertThat(reader.readShort(), is((short) 1000)); assertThat(reader.readUnsignedShort(), is(50000)); assertThat(reader.readBits(24), is(5_000_000L)); assertThat(reader.readBits(24), is(10_000_000L)); assertThat(reader.readInt(), is(-100000)); assertThat(reader.readUnsignedInt(), is(3_000_000_000L)); reader.close(); }
@Test public void shouldMarshalBcdSequence() throws Exception { BcdSequence bcdSequence = new BcdSequence(); bcdSequence.setI16(9999); bcdSequence.setBcd(2011); Marshaller marshaller = dadlContext.createMarshaller(); ByteArrayOutputStream os = new ByteArrayOutputStream(); marshaller.marshal(bcdSequence, os); assertThat(os.toByteArray().length, is(4)); ByteArrayBitStreamReader reader = new ByteArrayBitStreamReader(os.toByteArray()); assertThat(reader.readShort(), is((short) 9999)); assertThat(reader.readByte(), is((byte) 0x20)); assertThat(reader.readByte(), is((byte) 0x11)); reader.close(); }
@Test public void shouldMarshalNumberWithColour() throws Exception { NumberWithColour nwc = new NumberWithColour(); nwc.setI1(99); nwc.setC(Colour.GREEN); Marshaller marshaller = dadlContext.createMarshaller(); ByteArrayOutputStream os = new ByteArrayOutputStream(); marshaller.marshal(nwc, os); assertThat(os.toByteArray().length, is(2)); ByteArrayBitStreamReader reader = new ByteArrayBitStreamReader(os.toByteArray()); assertThat(reader.readByte(), is((byte) 99)); assertThat(reader.readByte(), is((byte) 17)); reader.close(); }
@Test public void shouldMarshalSeqMinLength() throws Exception { SeqMinLength sml = new SeqMinLength(); NumberList list = new NumberList(); list.getItems().add(17); list.getItems().add(39); sml.setNumberList(list); Marshaller marshaller = dadlContext.createMarshaller(); ByteArrayOutputStream os = new ByteArrayOutputStream(); marshaller.marshal(sml, os); assertThat(os.toByteArray().length, is(20)); ByteArrayBitStreamReader reader = new ByteArrayBitStreamReader(os.toByteArray()); assertThat(reader.readByte(), is((byte) 2)); assertThat(reader.readInt(), is(17)); assertThat(reader.readInt(), is(39)); reader.close(); }
@Test public void shouldMarshalOpaqueContainer() throws Exception { OpaqueContainer oc = new OpaqueContainer(); oc.setContent("DADL".getBytes()); oc.setLength(oc.getContent().length); Marshaller marshaller = dadlContext.createMarshaller(); ByteArrayOutputStream os = new ByteArrayOutputStream(); marshaller.marshal(oc, os); ByteArrayBitStreamReader reader = new ByteArrayBitStreamReader(os.toByteArray()); assertThat(reader.readInt(), is(4)); assertThat(reader.readByte(), is((byte) 'D')); assertThat(reader.readByte(), is((byte) 'A')); assertThat(reader.readByte(), is((byte) 'D')); assertThat(reader.readByte(), is((byte) 'L')); reader.close(); }
@Test public void shouldIgnoreMemberWhenOutputValueCalc() throws Exception { NumberList numberList = new NumberList(); numberList.getItems().addAll(Arrays.asList(16, 25, 36)); Marshaller marshaller = dadlContext.createMarshaller(); ByteArrayOutputStream os = new ByteArrayOutputStream(); marshaller.marshal(numberList, os); assertThat(os.toByteArray().length, is(13)); ByteArrayBitStreamReader reader = new ByteArrayBitStreamReader(os.toByteArray()); assertThat(reader.readUnsignedByte(), is(3)); assertThat(reader.readInt(), is(16)); assertThat(reader.readInt(), is(25)); assertThat(reader.readInt(), is(36)); reader.close(); }
@Test public void shouldMarshalSequenceWithPresentOptionalElement() throws IOException { Option1 opt1 = new Option1(); opt1.setI11(17); opt1.setI12(22); Option2 opt2 = new Option2(); opt2.setI21(42); opt2.setI22(12345678); SequenceWithOptional seq = new SequenceWithOptional(); seq.setOpt1(opt1); seq.setOpt2(opt2); Marshaller marshaller = dadlContext.createMarshaller(); ByteArrayOutputStream os = new ByteArrayOutputStream(); marshaller.marshal(seq, os); ByteArrayBitStreamReader reader = new ByteArrayBitStreamReader(os.toByteArray()); assertThat(reader.readUnsignedByte(), is(0x0A)); assertThat(reader.readUnsignedByte(), is(3)); assertThat(reader.readBits(16), is(17L)); assertThat(reader.readBits(8), is(22L)); assertThat(reader.readUnsignedByte(), is(0x0B)); assertThat(reader.readUnsignedByte(), is(7)); assertThat(reader.readBits(24), is(42L)); assertThat(reader.readBits(32), is(12345678L)); reader.close(); }
@Test public void shouldMarshalBitField() throws Exception { BitField bitField = new BitField(); bitField.setB2(3); bitField.setB3(6); bitField.setB4(11); bitField.setB7(125); Marshaller marshaller = dadlContext.createMarshaller(); ByteArrayOutputStream os = new ByteArrayOutputStream(); marshaller.marshal(bitField, os); assertThat(os.toByteArray().length, is(2)); ByteArrayBitStreamReader reader = new ByteArrayBitStreamReader(os.toByteArray()); assertThat(reader.readBits(2), is(3L)); assertThat(reader.readBits(3), is(6L)); assertThat(reader.readBits(4), is(11L)); assertThat(reader.readBits(7), is(125L)); reader.close(); }
@Test public void shouldMarshalChoice() throws Exception { Option2 opt2 = new Option2(); opt2.setI21(42); opt2.setI22(12345678); MyChoice myChoice = new MyChoice(); myChoice.setOpt2(opt2); Marshaller marshaller = dadlContext.createMarshaller(); ByteArrayOutputStream os = new ByteArrayOutputStream(); marshaller.marshal(myChoice, os); ByteArrayBitStreamReader reader = new ByteArrayBitStreamReader(os.toByteArray()); assertThat(reader.readUnsignedByte(), is(0x0B)); assertThat(reader.readUnsignedByte(), is(7)); assertThat(reader.readBits(24), is(42L)); assertThat(reader.readBits(32), is(12345678L)); reader.close(); }
@Test public void shouldMarshalWithPadding() throws Exception { PaddedInner inner = new PaddedInner(); inner.setA(12); inner.setB(34); PaddedOuter outer = new PaddedOuter(); outer.setInner(inner); outer.setC(56); Marshaller marshaller = dadlContext.createMarshaller(); ByteArrayOutputStream os = new ByteArrayOutputStream(); marshaller.marshal(outer, os); assertThat(os.toByteArray().length, is(11)); ByteArrayBitStreamReader reader = new ByteArrayBitStreamReader(os.toByteArray()); assertThat(reader.readShort(), is((short) 12)); assertThat(reader.readShort(), is((short) 34)); reader.skipBytes(5); assertThat(reader.readShort(), is((short) 56)); reader.close(); }
@Test public void shouldMarshalTaggedString() throws Exception { NumberWithColour nwc = new NumberWithColour(); nwc.setI1(22); nwc.setC(Colour.GREEN); String text = "Hello DADL!"; TaggedString taggedString = new TaggedString(); taggedString.setNwc(nwc); taggedString.setText(text); Marshaller marshaller = dadlContext.createMarshaller(); ByteArrayOutputStream os = new ByteArrayOutputStream(); marshaller.marshal(taggedString, os); ByteArrayBitStreamReader reader = new ByteArrayBitStreamReader(os.toByteArray()); assertThat(reader.readByte(), is((byte) 0x0A)); assertThat(reader.readByte(), is((byte) (2 + text.length()))); assertThat(reader.readByte(), is((byte) 22)); assertThat(reader.readByte(), is((byte) 17)); byte[] bytes = new byte[11]; reader.read(bytes); assertThat(new String(bytes, StandardCharsets.UTF_8), is(text)); reader.close(); }
@Test public void shouldMarshalTaggedListWithSuffix() throws IOException { TaggedListWithSuffix tlws = new TaggedListWithSuffix(); TaggedList tl = new TaggedList(); tlws.setTaggedList(tl); tlws.setSuffix(999); tl.getIndexes().addAll(Arrays.asList(500, 600, 700, 800)); Marshaller marshaller = dadlContext.createMarshaller(); ByteArrayOutputStream os = new ByteArrayOutputStream(); marshaller.marshal(tlws, os); assertThat(os.toByteArray().length, is(14)); ByteArrayBitStreamReader reader = new ByteArrayBitStreamReader(os.toByteArray()); assertThat(reader.readBits(8), is(0x8CL)); assertThat(reader.readBits(8), is(8L)); assertThat(reader.readBits(16), is(500L)); assertThat(reader.readBits(16), is(600L)); assertThat(reader.readBits(16), is(700L)); assertThat(reader.readBits(16), is(800L)); assertThat(reader.readBits(32), is(999L)); reader.close(); }