public void LoadCoalTest()
        {
            CoalMovement coalMovement1 = new CoalMovement("05N_46_F25", "Truck10", "2017-12-12 04:45:52");
            CoalMovement coalMovement2 = new CoalMovement("13_36_J17", "Truck2", "2017-12-12 04:48:00");


            CoalMovement coalMovement3 = new CoalMovement("05N_46_F25", "Truck6", "2017-12-20 12:42:21");
            CoalMovement coalMovement4 = new CoalMovement("13_36_J17", "Truck10", "2017-12-20 12:48:00");
            CoalMovement coalMovement5 = new CoalMovement("05N_46_F25", "Truck4", "2017-12-20 12:52:56");

            List <CoalMovement> incomingCoalMovements = new List <CoalMovement>();

            incomingCoalMovements.Add(coalMovement1);
            incomingCoalMovements.Add(coalMovement2);
            incomingCoalMovements.Add(coalMovement3);
            incomingCoalMovements.Add(coalMovement4);
            incomingCoalMovements.Add(coalMovement5);

            List <string> coalCycle = new List <string>();

            coalCycle.Add("05N_46_F25");
            coalCycle.Add("13_36_J17");
            coalCycle.Add("05N_46_F25");
            coalCycle.Add("03S_46_F25");
            coalCycle.Add("13_36_J17");
            coalCycle.Add("03S_46_F25");
            coalCycle.Add("13_36_J17");
            coalCycle.Add("03S_46_J19");
            coalCycle.Add("03S_46_J19");

            TimeSpan waitTimeSpan = new TimeSpan(0, 2, 0);
            TimeSpan loadTimeSpan = new TimeSpan(0, 5, 0);

            ROMLoader loader = new ROMLoader(coalCycle, waitTimeSpan, loadTimeSpan);

            DateTime            minimumTime = new DateTime(2017, 12, 12, 04, 44, 52);
            List <CoalMovement> result      = loader.AllocateCoalMovements(minimumTime, incomingCoalMovements);

            Assert.True(true);
        }
        public async Task GetMovements()
        {
            Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
            DatabaseServices database = new DatabaseServices("ConsoleDB.db");

            DateTime date  = new DateTime(2017, 12, 13, 04, 54, 26);
            DateTime date1 = new DateTime(2017, 12, 13, 04, 55, 28);
            DateTime date3 = new DateTime(2017, 12, 13, 04, 56, 03);
            DateTime date2 = new DateTime(2017, 12, 13, 04, 56, 28);

            CoalMovement movement1 = new CoalMovement("05N_46_F25", "Truck3", "2017-12-13 04:56:28");
            CoalMovement movement2 = new CoalMovement("13_36_J17", "Truck1", "2017-12-13 05:04:00");
            CoalMovement movement3 = new CoalMovement("05N_46_F25", "Truck10", "2017-12-13 05:07:03");
            CoalMovement movement4 = new CoalMovement("05N_46_F25", "Truck1", "2017-12-13 05:17:38");

            // Test for empty movements
            List <CoalMovement> movements1 = await database.GetCoalMovements(date, 1);

            Assert.True(movements1.Count == 0);

            // Test for 0 movements where minimum time matches only movement.
            List <CoalMovement> movements2 = await database.GetCoalMovements(date2, 1);

            Assert.True(movements2.Count == 0);

            // Test for 1 movements normal case.
            List <CoalMovement> movements3 = await database.GetCoalMovements(date3, 3);

            Assert.True(movements3.Count == 1);
            Assert.True(movements3.Contains(movement1));

            // Test for 1 movements time where movement matches maximum time.
            List <CoalMovement> movements4 = await database.GetCoalMovements(date1, 1);

            Assert.True(movements4.Count == 1);
            Assert.True(movements4.Contains(movement1));

            // Test for 2 movements.
            List <CoalMovement> movements5 = await database.GetCoalMovements(date, 10);

            Assert.True(movements5.Count == 2);
            Assert.True(movements5.Contains(movement1));
            Assert.True(movements5.Contains(movement2));

            // Test for 3 movements.
            List <CoalMovement> movements6 = await database.GetCoalMovements(date, 15);

            Assert.True(movements6.Count == 3);
            Assert.True(movements6.Contains(movement1));
            Assert.True(movements6.Contains(movement2));
            Assert.True(movements6.Contains(movement3));

            // Test for 4 movements.
            List <CoalMovement> movements7 = await database.GetCoalMovements(date, 24);

            Assert.True(movements7.Count == 4);
            Assert.True(movements7.Contains(movement1));
            Assert.True(movements7.Contains(movement2));
            Assert.True(movements7.Contains(movement3));
            Assert.True(movements7.Contains(movement4));
        }