• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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