1 package co.nstant.in.cbor.examples; 2 3 import java.io.ByteArrayInputStream; 4 import java.io.ByteArrayOutputStream; 5 import java.io.InputStream; 6 import java.util.List; 7 8 import org.junit.Assert; 9 import org.junit.Test; 10 11 import co.nstant.in.cbor.CborBuilder; 12 import co.nstant.in.cbor.CborDecoder; 13 import co.nstant.in.cbor.CborEncoder; 14 import co.nstant.in.cbor.CborException; 15 import co.nstant.in.cbor.model.Array; 16 import co.nstant.in.cbor.model.DataItem; 17 import co.nstant.in.cbor.model.Number; 18 19 /** 20 * [1, [2, 3], [4, 5]] -> 0x83 01 82 02 03 82 04 05 21 */ 22 public class Example65Test { 23 24 private static final List<DataItem> VALUE = new CborBuilder().addArray() 25 .add(1).addArray().add(2).add(3).end().addArray().add(4).add(5) 26 .end().end().build(); 27 28 private static final byte[] ENCODED_VALUE = new byte[] { (byte) 0x83, 0x01, 29 (byte) 0x82, 0x02, 0x03, (byte) 0x82, 0x04, 0x05 }; 30 31 @Test shouldEncode()32 public void shouldEncode() throws CborException { 33 ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream(); 34 CborEncoder encoder = new CborEncoder(byteOutputStream); 35 encoder.encode(VALUE); 36 Assert.assertArrayEquals(ENCODED_VALUE, byteOutputStream.toByteArray()); 37 } 38 39 @Test shouldDecode()40 public void shouldDecode() throws CborException { 41 InputStream inputStream = new ByteArrayInputStream(ENCODED_VALUE); 42 CborDecoder decoder = new CborDecoder(inputStream); 43 DataItem dataItem = decoder.decodeNext(); 44 Assert.assertTrue(dataItem instanceof Array); 45 Array array = (Array) dataItem; 46 Assert.assertEquals(3, array.getDataItems().size()); 47 48 DataItem dataItem1 = array.getDataItems().get(0); 49 DataItem dataItem2 = array.getDataItems().get(1); 50 DataItem dataItem3 = array.getDataItems().get(2); 51 52 Assert.assertTrue(dataItem1 instanceof Number); 53 Assert.assertTrue(dataItem2 instanceof Array); 54 Assert.assertTrue(dataItem3 instanceof Array); 55 56 Number number = (Number) dataItem1; 57 Array array1 = (Array) dataItem2; 58 Array array2 = (Array) dataItem3; 59 60 Assert.assertEquals(1, number.getValue().intValue()); 61 Assert.assertEquals(2, array1.getDataItems().size()); 62 Assert.assertEquals(2, array2.getDataItems().size()); 63 64 DataItem array1item1 = array1.getDataItems().get(0); 65 DataItem array1item2 = array1.getDataItems().get(1); 66 67 Assert.assertTrue(array1item1 instanceof Number); 68 Assert.assertTrue(array1item2 instanceof Number); 69 70 Number array1number1 = (Number) array1item1; 71 Number array1number2 = (Number) array1item2; 72 73 Assert.assertEquals(2, array1number1.getValue().intValue()); 74 Assert.assertEquals(3, array1number2.getValue().intValue()); 75 76 DataItem array2item1 = array2.getDataItems().get(0); 77 DataItem array2item2 = array2.getDataItems().get(1); 78 79 Assert.assertTrue(array2item1 instanceof Number); 80 Assert.assertTrue(array2item2 instanceof Number); 81 82 Number array2number1 = (Number) array2item1; 83 Number array2number2 = (Number) array2item2; 84 85 Assert.assertEquals(4, array2number1.getValue().intValue()); 86 Assert.assertEquals(5, array2number2.getValue().intValue()); 87 } 88 89 } 90