示例#1
0
        public void ShouldReturnAllTankQuantityByReadingTime()
        {
            var tank1Detail   = _tanks.First();
            var tank2Detail   = _tanks.Last();
            var tank1Readings = TankRunout.GetRunoutReadingsByHour(tank1Detail, new DateTime(2020, 10, 7, 0, 0, 0));
            var tank2Readings = TankRunout.GetRunoutReadingsByHour(tank2Detail, new DateTime(2020, 10, 7, 0, 0, 0));
            var tankReadings  = new List <RunoutReading> {
                new RunoutReading {
                    TankId       = tank1Detail.Id, Bottom = tank1Detail.Measurement.Bottom,
                    TankReadings = tank1Readings
                },
                new RunoutReading {
                    TankId       = tank2Detail.Id, Bottom = tank2Detail.Measurement.Bottom,
                    TankReadings = tank2Readings
                },
            };
            var lowestTankReadings = TankRunout.GetFastestRunoutTankReading(tankReadings);

            var allTankQuantities = TankRunout.GetTanksQuantityByReadingTime(tankReadings
                                                                             , lowestTankReadings.TankReading.ReadingTime);
            var tank1 = allTankQuantities.First(x => x.TankId == tank1Detail.Id);
            var tank2 = allTankQuantities.First(x => x.TankId == tank2Detail.Id);

            Assert.Equal(1166.67, tank1.TankReading.Quantity);
            Assert.Equal(new DateTime(2020, 10, 10, 20, 0, 0), tank1.TankReading.ReadingTime);
            Assert.Equal(250, tank2.TankReading.Quantity);
            Assert.Equal(new DateTime(2020, 10, 10, 20, 0, 0), tank2.TankReading.ReadingTime);
        }
示例#2
0
        public void ShouldMatchRunTimeAndRunoutTimeWhenTankQtyIsLessThanBottomQty()
        {
            var tank = _tanks.First();

            tank.Measurement.UpdateQuantity(tank.Measurement.Bottom - 50);
            var readings = TankRunout.GetRunoutReadingsByHour(tank, new DateTime(2020, 10, 7, 0, 0, 0));

            Assert.Equal(new DateTime(2020, 10, 7, 0, 0, 0), readings.LastOrDefault().ReadingTime);
        }
示例#3
0
        public void ShouldGetRunoutDateTime()
        {
            var tank1         = _tanks.First();
            var tank2         = _tanks.Last();
            var tank1Readings = TankRunout.GetRunoutReadingsByHour(tank1, new DateTime(2020, 10, 7, 0, 0, 0));
            var tank2Readings = TankRunout.GetRunoutReadingsByHour(tank2, new DateTime(2020, 10, 7, 0, 0, 0));

            Assert.Equal(new DateTime(2020, 10, 11, 20, 0, 0), tank1Readings.LastOrDefault().ReadingTime);
            Assert.Equal(new DateTime(2020, 10, 10, 21, 0, 0), tank2Readings.LastOrDefault().ReadingTime);
        }
示例#4
0
        public void ShouldReturnFastestRunoutTankReading()
        {
            var tank1              = _tanks.First();
            var tank2              = _tanks.Last();
            var tank1Readings      = TankRunout.GetRunoutReadingsByHour(tank1, new DateTime(2020, 10, 7, 0, 0, 0));
            var tank2Readings      = TankRunout.GetRunoutReadingsByHour(tank2, new DateTime(2020, 10, 7, 0, 0, 0));
            var lowestTankReadings = TankRunout.GetFastestRunoutTankReading(new List <RunoutReading> {
                new RunoutReading {
                    TankId       = tank1.Id, Bottom = tank1.Measurement.Bottom,
                    TankReadings = tank1Readings
                },
                new RunoutReading {
                    TankId       = tank2.Id, Bottom = tank2.Measurement.Bottom,
                    TankReadings = tank2Readings
                },
            });

            Assert.Equal(250, lowestTankReadings.TankReading.Quantity);
            Assert.Equal(new DateTime(2020, 10, 10, 20, 0, 0), lowestTankReadings.TankReading.ReadingTime);
            Assert.Equal(tank2.Id, lowestTankReadings.TankId);
        }