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}"); } } }
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); }