Пример #1
0
        public async Task CalculatesAggregationsProperly()
        {
            var sensorRepository = A.Fake <ISensorRepository>();

            A.CallTo(() => sensorRepository.GetByBoxIdAndTypeAsync("test", SensorType.Temperature)).Returns(new Sensor("test", SensorType.Temperature));
            var service = new SensorInputService(sensorRepository, A.Fake <ILogger <SensorInputService> >());

            var aggregatedSensorData = await service.ProcessInputAsync(SensorInput);

            aggregatedSensorData.First(a => a.AggregationType == AggregationType.Mean).Value.Should().Be(2d);
            aggregatedSensorData.First(a => a.AggregationType == AggregationType.Min).Value.Should().Be(1d);
            aggregatedSensorData.First(a => a.AggregationType == AggregationType.Max).Value.Should().Be(3d);
            aggregatedSensorData.First(a => a.AggregationType == AggregationType.StandardDeviation).Value.Should().Be(1d);
        }
Пример #2
0
        public async Task CreatesAllAggregations()
        {
            var sensorRepository = A.Fake <ISensorRepository>();

            A.CallTo(() => sensorRepository.GetByBoxIdAndTypeAsync("test", SensorType.Temperature)).Returns(new Sensor("test", SensorType.Temperature));
            var service = new SensorInputService(sensorRepository, A.Fake <ILogger <SensorInputService> >());

            var aggregatedSensorData = await service.ProcessInputAsync(SensorInput);

            aggregatedSensorData.Should().HaveCount(4);
            aggregatedSensorData.Should().Contain(x => x.AggregationType == AggregationType.Mean);
            aggregatedSensorData.Should().Contain(x => x.AggregationType == AggregationType.Min);
            aggregatedSensorData.Should().Contain(x => x.AggregationType == AggregationType.Max);
            aggregatedSensorData.Should().Contain(x => x.AggregationType == AggregationType.StandardDeviation);
        }
Пример #3
0
        public async Task ReturnsNoAggregationsIfInputIsEmpty()
        {
            var sensorRepository = A.Fake <ISensorRepository>();

            A.CallTo(() => sensorRepository.GetByBoxIdAndTypeAsync("test", SensorType.Temperature)).Returns(new Sensor("test", SensorType.Temperature));
            var service = new SensorInputService(sensorRepository, A.Fake <ILogger <SensorInputService> >());

            var aggregatedSensorData = await service.ProcessInputAsync(new SensorInput
            {
                SensorBoxId = "test",
                Timestamp   = DateTimeOffset.UtcNow,
                Data        = new List <SensorData>()
            });

            aggregatedSensorData.Should().BeEmpty();
        }