示例#1
0
        void TouchAndVerify(ProtocBookShelf data, int nExpectedBooks, int optionalPayloadDataSize)
        {
            if (!VerifyAndTouch)
            {
                return;
            }

            string tmpTitle = null;
            int    tmpId    = 0;

            if (nExpectedBooks != data.Books.Count)
            {
                throw new InvalidOperationException($"Number of deserialized Books was {data.Books.Count} but expected {nExpectedBooks}. This Serializer seem to have lost data.");
            }

            for (int i = 0; i < data.Books.Count; i++)
            {
                tmpTitle = data.Books[i].Title;
                tmpId    = data.Books[i].Id;
                if (data.Books[i].Id != i + 1)
                {
                    throw new InvalidOperationException($"Book Id was {data.Books[i].Id} but exepcted {i + 1}");
                }
                if (optionalPayloadDataSize > 0 && data.Books[i].BookData.Length != optionalPayloadDataSize)
                {
                    throw new InvalidOperationException($"BookData length was {data.Books[i].BookData.Length} but expected {optionalPayloadDataSize}");
                }
            }
        }
示例#2
0
        ProtocBookShelf ProtocData(int nToCreate)
        {
            var bookData = ByteString.CopyFrom(CreateAndFillByteBuffer());
            var books    = Enumerable.Range(1, nToCreate).Select(i =>
                                                                 new ProtocBook
            {
                Id       = i,
                Title    = $"Book {i}",
                BookData = bookData,
            }).ToList();

            var lret = new ProtocBookShelf();

            lret.Books.AddRange(books);
            return(lret);
        }