internal void CanSerializeAndDeserialize_TickDataResponse() { // Arrange var dataSerializer = new QuoteTickSerializer(); var datetimeFrom = StubZonedDateTime.UnixEpoch() + Duration.FromMinutes(1); var datetimeTo = datetimeFrom + Duration.FromMinutes(1); var symbol = new Symbol("AUD/USD", new Venue("FXCM")); var tick1 = new QuoteTick( symbol, Price.Create(1.00000m), Price.Create(1.00000m), Quantity.One(), Quantity.One(), datetimeFrom); var tick2 = new QuoteTick( symbol, Price.Create(1.00010m), Price.Create(1.00020m), Quantity.One(), Quantity.One(), datetimeTo); var ticks = new[] { tick1, tick2 }; var correlationId = Guid.NewGuid(); var id = Guid.NewGuid(); var metadata = new Dictionary <string, string> { { "Symbol", symbol.Value } }; var serializedTicks = dataSerializer.Serialize(ticks); var data = dataSerializer.SerializeBlob(serializedTicks, metadata); var response = new DataResponse( data, typeof(Tick[]).Name, dataSerializer.BlobEncoding, correlationId, id, StubZonedDateTime.UnixEpoch()); // Act var serializedResponse = this.serializer.Serialize(response); var deserializedResponse = (DataResponse)this.serializer.Deserialize(serializedResponse); var deserializedData = dataSerializer.DeserializeBlob(deserializedResponse.Data); // Assert Assert.Equal(response, deserializedResponse); Assert.Equal(tick1, deserializedData[0]); Assert.Equal(tick2, deserializedData[1]); Assert.Equal(correlationId, deserializedResponse.CorrelationId); this.Output.WriteLine(Convert.ToBase64String(serializedResponse)); this.Output.WriteLine(Encoding.UTF8.GetString(serializedResponse)); }
public TickProviderTests(ITestOutputHelper output) : base(output) { // Fixture Setup this.container = TestComponentryContainer.Create(output); this.messagingAdapter = new MockMessageBusProvider(this.container).Adapter; this.tickSerializer = new QuoteTickSerializer(); this.repository = new MockMarketDataRepository( this.container, this.tickSerializer, new TradeTickSerializer(), new BarSerializer(), DataBusFactory.Create(this.container)); }