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);
        }
Beispiel #3
0
        /// <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));
        }