public void ListOfBits() { bool ValueGen(int index) { return((index % 3) == 0); } DynamicSerializerState CreateListBulk(int count) { var mb = MessageBuilder.Create(8); var alloc = mb.Allocator; var ds = new DynamicSerializerState(mb); ds.SetListOfValues(1, count); var list = new List <bool>(); for (int i = 0; i < count; i++) { list.Add(ValueGen(i)); } ds.ListWriteValues(list); return(ds); } DynamicSerializerState CreateListSingle(int count) { var mb = MessageBuilder.Create(8); var alloc = mb.Allocator; var ds = new DynamicSerializerState(mb); ds.SetListOfValues(1, count); for (int i = 0; i < count; i++) { ds.ListWriteValue(i, ValueGen(i)); } return(ds); } void VerifyList(DeserializerState d, int count) { Assert.AreEqual(ObjectKind.ListOfBits, d.Kind); Assert.AreEqual(count, d.ListElementCount); var rlist = d.RequireList().CastBool(); Assert.AreEqual(count, rlist.Count); for (int i = 0; i < count; i++) { bool expected = ValueGen(i); bool actual = rlist[i]; Assert.AreEqual(expected, actual); } Assert.ThrowsException <IndexOutOfRangeException>(() => { var dummy = rlist[-1]; }); Assert.ThrowsException <IndexOutOfRangeException>(() => { var dummy = rlist[count]; }); } int c = 123; VerifyList(CreateListBulk(c), c); VerifyList(CreateListSingle(c), c); }