internal void ToString_ReturnsExpectedString() { // Arrange var barSpec = new BarSpecification(1, BarStructure.Minute, PriceType.Bid); // Act var result = barSpec.ToString(); // Assert Assert.Equal("1-MINUTE-BID", result); }
internal void GetHashCode_ReturnsExpectedInt32() { // Arrange var barSpec = new BarSpecification(1, BarStructure.Minute, PriceType.Bid); // Act var result = barSpec.GetHashCode(); // Assert Assert.NotEqual(0, result); }
/// <summary> /// Perform a query operation for the give data request. /// </summary> /// <param name="request">The data request.</param> /// <returns>The response.</returns> internal Response FindData(DataRequest request) { try { var dataType = request.Query[DataType]; if (dataType != typeof(Bar[]).Name) { return(this.QueryFailure($"Incorrect DataType requested, was {dataType}", request.Id)); } // Query objects var symbol = Symbol.FromString(request.Query["Symbol"]); var barSpec = BarSpecification.FromString(request.Query["Specification"]); var barType = new BarType(symbol, barSpec); var fromDateTime = request.Query["FromDateTime"].ToNullableZonedDateTimeFromIso(); var toDateTime = request.Query["ToDateTime"].ToNullableZonedDateTimeFromIso(); long?limit = long.Parse(request.Query["Limit"]); if (limit == 0) { limit = null; } var data = this.repository.ReadBarData( barType, fromDateTime, toDateTime, limit); if (data.Length == 0) { var fromDateTimeString = fromDateTime is null ? "Min" : fromDateTime.ToString(); var toDateTimeString = toDateTime is null ? "Max" : toDateTime.ToString(); return(this.QueryFailure($"No data found for {barType} from " + $"{fromDateTimeString} to {toDateTimeString}", request.Id)); } return(new DataResponse( this.dataSerializer.SerializeBlob(data, request.Query), dataType, this.dataSerializer.BlobEncoding, request.Id, this.NewGuid(), this.TimeNow())); } catch (Exception ex) { this.Logger.LogError(LogId.Component, $"{ex}"); return(this.QueryFailure(ex.Message, request.Id)); } }
internal void Equals_WithUnequalObject_ReturnsTrue() { // Arrange var barSpec1 = new BarSpecification(1, BarStructure.Minute, PriceType.Bid); var barSpec2 = new BarSpecification(1, BarStructure.Hour, PriceType.Ask); // Act var result1 = barSpec1.Equals(barSpec2); var result2 = barSpec1 == barSpec2; // Assert Assert.False(result1); Assert.False(result2); }
internal void Create_WithValidString_ReturnsExpectedBarSpec() { // Arrange var barSpec1 = new BarSpecification(1, BarStructure.Minute, PriceType.Bid); var barSpec2 = new BarSpecification(1, BarStructure.Hour, PriceType.Mid); var string1 = barSpec1.ToString(); var string2 = barSpec2.ToString(); // Act var result1 = BarSpecification.FromString(string1); var result2 = BarSpecification.FromString(string2); // Assert Assert.Equal(barSpec1, result1); Assert.Equal(barSpec2, result2); }
internal void CanSerializeAndDeserialize_BarDataResponses() { // Arrange var dataSerializer = new BarSerializer(); var symbol = new Symbol("AUD/USD", new Venue("FXCM")); var barSpec = new BarSpecification(1, BarStructure.Minute, PriceType.Bid); var correlationId = Guid.NewGuid(); var bars = new[] { StubBarProvider.Build(), StubBarProvider.Build() }; var serializedBars = dataSerializer.Serialize(bars); var metadata = new Dictionary <string, string> { { "Symbol", symbol.Value }, { "Specification", barSpec.ToString() }, }; var data = dataSerializer.SerializeBlob(serializedBars, metadata); var response = new DataResponse( data, typeof(Bar[]).Name, dataSerializer.BlobEncoding, correlationId, Guid.NewGuid(), 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(bars, deserializedData); Assert.Equal(correlationId, deserializedResponse.CorrelationId); this.Output.WriteLine(Convert.ToBase64String(serializedResponse)); this.Output.WriteLine(Encoding.UTF8.GetString(serializedResponse)); }