public void TestConvert_Simple()
        {
            var input        = TestDataset1.Create();
            var numberOfDays = input.Days.Length;

            var numberOfSantas = 2;
            var actual         = Converter.Convert(input, 0);

            Assert.AreEqual(numberOfDays * numberOfSantas, actual.SantaIds.Length);
            Assert.AreEqual(TestDataset1.SantaId1, actual.SantaIds[0]);
            Assert.AreEqual(TestDataset1.SantaId2, actual.SantaIds[1]);
            Assert.AreEqual(TestDataset1.SantaId1, actual.SantaIds[2]);
            Assert.AreEqual(TestDataset1.SantaId2, actual.SantaIds[3]);
        }
        public void TestConvert_Additional()
        {
            var input  = TestDataset1.Create();
            var actual = Converter.Convert(input, 1);

            CheckSantas(actual);
            CheckVisits(actual);
            CheckUnavailable(actual);
            CheckDesired(actual);
            CheckStartEnd(actual);
            CheckNumberOfSantas(actual);
            CheckNumberOfVisits(actual);
            CheckOverallStart(actual);
            CheckOverallEnd(actual);
            CheckGetDayFromSanta(actual);
        }
        public void TestGetRealDesiredLength()
        {
            var data = new RoutingData(TestDataset1.Create());

            var durationDay1 = TestDataset1.EndDay1 - TestDataset1.StartDay1;
            var durationDay2 = TestDataset1.EndDay2 - TestDataset1.StartDay2;
            var tests        = new List <(int expected, (int from, int to) desired)>
            {
                (0, (TestDataset1.StartDay1, TestDataset1.StartDay1)),
                (durationDay1, (TestDataset1.StartDay1, TestDataset1.EndDay1)),
                (durationDay1, (TestDataset1.StartDay1, TestDataset1.EndDay1 + 100)),
                (durationDay1 - 100, (TestDataset1.StartDay1, TestDataset1.EndDay1 - 100)),
                (durationDay1, (TestDataset1.StartDay1 - 100, TestDataset1.EndDay1)),
                (durationDay1 - 100, (TestDataset1.StartDay1 + 100, TestDataset1.EndDay1)),
                (Math.Max(durationDay1, durationDay2), (TestDataset1.StartDay1, TestDataset1.EndDay2)),
                (100, (TestDataset1.StartDay2 + 100, TestDataset1.StartDay2 + 200)),
            };


            foreach (var(expected, desired) in tests)
            {
                Assert.AreEqual(expected, Routing.Algorithm.Utility.GetRealDesiredLength(data, desired));
            }
        }