public void ShouldNotRequireSeeking() { var model = TypeModel.Create(); byte[] raw; const int EXPECTED = 830; using (var fs = new FakeStream()) { var db = NWindTests.LoadDatabaseFromFile <Database>(model); Assert.AreEqual(EXPECTED, db.Orders.Count); model.Serialize(fs, db); raw = fs.ToArray(); } using (var fs = new FakeStream(raw)) { var db = (Database)model.Deserialize(fs, null, typeof(Database)); Assert.AreEqual(EXPECTED, db.Orders.Count); } using (var fs = new FakeStream(raw)) { var db = Serializer.Deserialize <Database>(fs); Assert.AreEqual(EXPECTED, db.Orders.Count); } }
private DatabaseCompat LoadFromDisk(out ReadOnlySpan <byte> contents) { var path = NWindTests.GetNWindBinPath(); byte[] arr = File.ReadAllBytes(path); Log?.WriteLine($"{arr.Length} bytes loaded from {path}"); contents = arr; using var readState = ProtoReader.State.Create(arr, RuntimeTypeModel.Default); var watch = Stopwatch.StartNew(); var obj = (DatabaseCompat)readState.DeserializeRoot <DatabaseCompat>(null); watch.Stop(); Log?.WriteLine($"Deserialized: {watch.ElapsedMilliseconds}ms"); return(obj); }
public void TestOrderLineGetDeserializedAndAttachedToOrder() { byte[] fileBytes = File.ReadAllBytes(NWindTests.GetNWindBinPath()); RuntimeTypeModel ordersModel = TypeModel.Create(); ordersModel.AutoCompile = false; Database database = (Database)ordersModel.Deserialize(new MemoryStream(fileBytes), null, typeof(Database)); List <Order> orders = database.Orders; DbMetrics("From File", orders); var roundTrippedOrders = (List <Order>)ordersModel.DeepClone(orders); Assert.NotSame(orders, roundTrippedOrders); DbMetrics("Round trip", roundTrippedOrders); Assert.Equal(orders.SelectMany(o => o.Lines).Count(), roundTrippedOrders.SelectMany(o => o.Lines).Count()); //, "total count"); }
public void TestCallTestMethodWithDatabase() { using (var server = CreateServer()) using (var client = new BasicServiceHttpClient()) { server.Start(); DAL.Database request = NWindTests.LoadDatabaseFromFile <DAL.Database>(); DAL.Database response = client.TestMethod(request); Assert.IsNotNull(response); Assert.AreNotSame(request, response); Assert.AreEqual(request.Orders.Count, response.Orders.Count, "Orders"); Assert.AreEqual( request.Orders.SelectMany(ord => ord.Lines).Count(), response.Orders.SelectMany(ord => ord.Lines).Count(), "Lines"); Assert.AreEqual( request.Orders.SelectMany(ord => ord.Lines).Sum(line => line.Quantity), response.Orders.SelectMany(ord => ord.Lines).Sum(line => line.Quantity), "Quantity"); Assert.AreEqual( request.Orders.SelectMany(ord => ord.Lines).Sum(line => line.Quantity * line.UnitPrice), response.Orders.SelectMany(ord => ord.Lines).Sum(line => line.Quantity * line.UnitPrice), "Value"); } }