Exemplo n.º 1
0
        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);
        }