// EXEC: cjc %import-path %L %l %f --test
// EXEC: ./main
import std.unittest.*
import std.unittest.testmacro.*
import std.io.*
import std.collection.*
import std.math.numeric.BigInt
import cbor4cj.*
@Test
public class ReadMeTest2 {
@TestCase
public func Example02Test() {
var except: Array<Byte> = [100, 116, 101, 120, 116, 25, 4, 210, 65, 16, 130, 1, 100, 116, 101, 120, 116]
let baos = ByteBuffer();
baos.write(except)
var dataItems: LinkedList<DataItem> = CborDecoder(baos).decode();
@Assert(dataItems.size,4)
var iter = dataItems.iterator()
var value1 = iter.next().getOrThrow()
@Assert((value1 as UnicodeString).getOrThrow().toString(), "text")
var value2 = iter.next().getOrThrow()
@Assert((value2 as UnsignedInteger).getOrThrow().getValue(), BigInt(1234))
var value3 = iter.next().getOrThrow()
@Assert((value3 as ByteString).getOrThrow().getBytes(), [0x10u8])
var value4 = iter.next().getOrThrow()
@Assert(value4.getMajorType(),MajorType.ARRAY)
var items = (value4 as CborArray).getOrThrow().getDataItems()
@Assert(items.size, 2)
@Assert((items[0] as UnsignedInteger).getOrThrow(), UnsignedInteger(BigInt(1)))
@Assert((items[1] as UnicodeString).getOrThrow().toString(), "text")
}
}