Beispiel #1
0
        public void AddToServiceThrowsExceptionWhenNotMatchingId(bool isMain)
        {
            var schedule    = TestSchedules.CreateScheduleWithService("Q11111");
            var association = TestAssociations.CreateAssociation();

            var ex = Assert.Throws <ArgumentException>(() => association.SetService(schedule.Service, isMain));
        }
Beispiel #2
0
        public void NotConsistentLocationWhenCannotFindTheStop(bool isMain)
        {
            var association = TestAssociations.CreateAssociation(location: TestLocations.Weybridge);
            var schedule    = TestSchedules.CreateScheduleWithService();

            Assert.False(association.HasConsistentLocation(schedule, isMain));
        }
        public void AddSameAssociationWithDifferentLocationsResolveToCorrectForAssociated(string activities, AssociationCategory joinSplit, bool expectedHasAssociation)
        {
            Test(TestLocations.CLPHMJN, TestLocations.Woking);
            Test(TestLocations.Woking, TestLocations.CLPHMJN);

            void Test(Location location1, Location location2)
            {
                var stops        = CreateAssociateStopsSettingClaphamActivities(joinSplit, activities);
                var service      = TestSchedules.CreateScheduleWithService("A12345", stops: stops).Service;
                var association1 = TestAssociations.CreateAssociation(mainUid: "A67890", associatedUid: "A12345",
                                                                      category: joinSplit, location: location1);
                var association2 = TestAssociations.CreateAssociation(mainUid: "A67890", associatedUid: "A12345",
                                                                      category: joinSplit, location: location2);

                service.AddAssociation(association1, false);
                service.AddAssociation(association2, false);

                Assert.Equal(expectedHasAssociation, service.HasAssociations());
                if (expectedHasAssociation)
                {
                    var associations = service.GetAssociations()["A67890"];
                    Assert.Single(associations);
                    Assert.Equal(TestLocations.CLPHMJN, associations.Single().Value.AtLocation);
                }
            }
        }
Beispiel #4
0
        public void AddToServiceThrowsExceptionWhenNotMatchingId(string uid, bool success)
        {
            var schedule           = TestSchedules.CreateScheduleWithService(uid);
            var associationService = TestAssociations.CreateAssociation().Main;

            Assert.Equal(success, associationService.TrySetService(schedule.Service));
        }
Beispiel #5
0
        public void ThrowsExceptionWhenDateIndicatorNotSet()
        {
            var association = TestAssociations.CreateAssociation(
                calendar: TestSchedules.CreateAugust2019Calendar(DaysFlag.Monday),
                dateIndicator: AssociationDateIndicator.None);

            Assert.Throws <ArgumentException>(() => association.ResolveDate(MondayAugust12, AssociatedUid));
        }
Beispiel #6
0
        public void DoesNotThrowExceptionIsMain()
        {
            var association = TestAssociations.CreateAssociation(
                calendar: TestSchedules.CreateAugust2019Calendar(DaysFlag.Monday),
                dateIndicator: AssociationDateIndicator.None);

            Assert.True(association.AppliesOn(MondayAugust12, MainUid));
        }
Beispiel #7
0
        public void GetsAssociationAppliesOnDate(DateTime date, string timetableUID, AssociationDateIndicator dateIndicator, bool expected)
        {
            var association = TestAssociations.CreateAssociation(
                calendar: TestSchedules.CreateAugust2019Calendar(DaysFlag.Monday),
                dateIndicator: dateIndicator);

            Assert.Equal(expected, association.AppliesOn(date, timetableUID));
        }
Beispiel #8
0
        public void HasConsistentLocationOnAssociated(string activities, AssociationCategory joinSplit, bool expected)
        {
            var stops       = AssociationDictionaryTest.CreateAssociateStopsSettingClaphamActivities(joinSplit, activities);
            var schedule    = TestSchedules.CreateScheduleWithService(stops: stops);
            var association = TestAssociations.CreateAssociation(category: joinSplit);

            Assert.Equal(expected, association.HasConsistentLocation(schedule, false));
        }
Beispiel #9
0
        public void ResolveDateWhenCancelledWhenNoDateIndicator(string timetableUid)
        {
            var association = TestAssociations.CreateAssociation(
                calendar: TestSchedules.CreateAugust2019Calendar(DaysFlag.Monday),
                indicator: StpIndicator.Cancelled,
                dateIndicator: AssociationDateIndicator.None);

            Assert.Equal(MondayAugust12, association.ResolveDate(MondayAugust12, timetableUid));
        }
Beispiel #10
0
        public void AddToServiceAddAssociatedService()
        {
            var schedule    = TestSchedules.CreateScheduleWithService("A98765");
            var association = TestAssociations.CreateAssociation();

            association.SetService(schedule.Service, false);
            Assert.Equal(schedule.Service, association.Associated.Service);
            Assert.Null(association.Main.Service);
        }
        public void FailToAddAssociation()
        {
            var service     = TestSchedules.CreateScheduleWithService().Service;
            var association = TestAssociations.CreateAssociation();

            service.AddAssociation(association, true);
            // Adding same association can result in failing to add
            Assert.False(service.AddAssociation(association, true));
            Assert.False(service.HasAssociations());
        }
        public void WhenIsAssociatedAddMainUid()
        {
            var service     = TestSchedules.CreateScheduleWithService("A98765").Service;
            var association = TestAssociations.CreateAssociation();

            Assert.True(service.AddAssociation(association, false));
            Assert.True(service.HasAssociations());
            var associations = service.GetAssociations();

            Assert.NotEmpty(associations["X12345"]);
        }
        public void WhenIsMainAddsAssociatedUid()
        {
            var service     = TestSchedules.CreateScheduleWithService().Service;
            var association = TestAssociations.CreateAssociation();

            Assert.True(service.AddAssociation(association, true));
            Assert.True(service.HasAssociations());
            var associations = service.GetAssociations();

            Assert.NotEmpty(associations["A98765"]);
        }
        public void IsMain(string timetableId, bool expected)
        {
            var association = new ResolvedAssociation(
                TestAssociations.CreateAssociation(),
                DateTime.Today,
                false,
                null);

            ;

            Assert.Equal(expected, association.IsMain(timetableId));
        }
        public void AddSameAssociationTwiceResultsInNeitherBeingAdded()
        {
            var service   = TestSchedules.CreateScheduleWithService().Service;
            var permanent = TestAssociations.CreateAssociation();

            service.AddAssociation(permanent, true);
            service.AddAssociation(permanent, true);

            Assert.False(service.HasAssociations());
            var associations = service.GetAssociations();

            Assert.Empty(associations);
        }
        public void AddReversedAssociationTwiceResultsInNeitherBeingAdded()
        {
            var service     = TestSchedules.CreateScheduleWithService("A12345").Service;
            var association = TestAssociations.CreateAssociation(mainUid: "A12345", associatedUid: "A67890");
            var reversed    = TestAssociations.CreateAssociation(mainUid: "A67890", associatedUid: "A12345");

            service.AddAssociation(association, true);
            service.AddAssociation(reversed, false);

            Assert.False(service.HasAssociations());
            var associations = service.GetAssociations();

            Assert.Empty(associations);
        }
        public void CanAddAssociationWithDifferentStpIndicator()
        {
            var service   = TestSchedules.CreateScheduleWithService().Service;
            var permanent = TestAssociations.CreateAssociation(indicator: StpIndicator.Permanent);
            var overlay   = TestAssociations.CreateAssociation(indicator: StpIndicator.Override);

            service.AddAssociation(permanent, true);
            service.AddAssociation(overlay, true);

            Assert.True(service.HasAssociations());
            var associations = service.GetAssociations();

            Assert.Single(associations);
            Assert.Equal(2, associations["A98765"].Count);
        }
        public void CanAddAssociationsWithSameStpIndicator()
        {
            var service    = TestSchedules.CreateScheduleWithService().Service;
            var permanent  = TestAssociations.CreateAssociation(indicator: StpIndicator.Permanent);
            var permanent2 = TestAssociations.CreateAssociation(indicator: StpIndicator.Permanent, calendar: TestSchedules.CreateAugust2019Calendar(DaysFlag.Monday));

            service.AddAssociation(permanent, true);
            service.AddAssociation(permanent2, true);

            Assert.True(service.HasAssociations());
            var associations = service.GetAssociations();

            Assert.Single(associations);
            Assert.Equal(2, associations["A98765"].Count);
        }
        public void CanAddAssociationWithDifferentTimetableUids()
        {
            var service = TestSchedules.CreateScheduleWithService().Service;
            var uid1    = TestAssociations.CreateAssociation(associatedUid: "A12345");
            var uid2    = TestAssociations.CreateAssociation(associatedUid: "A67890");

            service.AddAssociation(uid1, true);
            service.AddAssociation(uid2, true);

            Assert.True(service.HasAssociations());
            var associations = service.GetAssociations();

            Assert.Equal(2, associations.Count);
            Assert.Single(associations["A12345"]);
            Assert.Single(associations["A67890"]);
        }
        public void DoNotHaveOverlappingAssociationsWithTheSameStpIndicator()
        {
            var everydayIn2019 =
                TestSchedules.CreateEverydayCalendar(new DateTime(2019, 1, 1), new DateTime(2019, 12, 31));
            var service     = TestSchedules.CreateScheduleWithService("A12345").Service;
            var association = TestAssociations.CreateAssociation(mainUid: "A12345", associatedUid: "A67890");
            var overlapping = TestAssociations.CreateAssociation(mainUid: "A12345", associatedUid: "A67890", calendar: everydayIn2019);

            service.AddAssociation(association, true);
            service.AddAssociation(overlapping, true);

            Assert.False(service.HasAssociations());
            var associations = service.GetAssociations();

            Assert.Empty(associations);
        }
Beispiel #21
0
        public void AddAssociationToServices()
        {
            var timetable = CreateTimetable();

            TestSchedules.CreateScheduleInTimetable(timetable, "X12345");
            TestSchedules.CreateScheduleInTimetable(timetable, "A98765");

            var associations = new [] {
                TestAssociations.CreateAssociation("X12345", "A98765")
            };

            var count = timetable.AddAssociations(associations);

            Assert.Equal(1, count);
            var service = timetable.GetService("X12345");

            Assert.Single(service.GetAssociations());
        }
Beispiel #22
0
        public void OnlyAddAssociationIfBothMainAndAssociatedServiceExist()
        {
            var timetable = CreateTimetable();

            TestSchedules.CreateScheduleInTimetable(timetable, "X12345");

            var associations = new [] {
                TestAssociations.CreateAssociation("X12345", "A98765"),
                TestAssociations.CreateAssociation("A98765", "X12345")
            };

            var count = timetable.AddAssociations(associations);

            Assert.Equal(0, count);
            var service = timetable.GetService("X12345");

            Assert.Null(service.GetAssociations());
        }
Beispiel #23
0
        public void AddMultipleVersionsOfAnAssociationToServices()
        {
            var timetable = CreateTimetable();

            TestSchedules.CreateScheduleInTimetable(timetable, "X12345");
            TestSchedules.CreateScheduleInTimetable(timetable, "A98765");

            var associations = new [] {
                TestAssociations.CreateAssociation("X12345", "A98765", StpIndicator.Permanent),
                TestAssociations.CreateAssociation("X12345", "A98765", StpIndicator.Override),
                TestAssociations.CreateAssociation("X12345", "A98765",
                                                   calendar: TestSchedules.CreateEverydayCalendar(new DateTime(2019, 9, 1), new DateTime(2019, 9, 30)))
            };

            var count = timetable.AddAssociations(associations);

            Assert.Equal(3, count);
            var service = timetable.GetService("X12345");

            Assert.Single(service.GetAssociations());
        }
Beispiel #24
0
        public void DoNotAddToOtherServiceIfAddingToMainFails()
        {
            var timetable = CreateTimetable();

            TestSchedules.CreateScheduleInTimetable(timetable, "X12345");
            TestSchedules.CreateScheduleInTimetable(timetable, "A98765");

            var associations = new [] {
                TestAssociations.CreateAssociation("X12345", "A98765", StpIndicator.Permanent),
                TestAssociations.CreateAssociation("X12345", "A98765", StpIndicator.Override),
                TestAssociations.CreateAssociation("X12345", "A98765", StpIndicator.Override),
            };

            var count = timetable.AddAssociations(associations);

            Assert.Equal(2, count);
            //TODO Inconsistent We remove original association in main but leave the original in the other service.
            var service = timetable.GetService("X12345");

            Assert.Single(service.GetAssociations().First().Value);
            var other = timetable.GetService("A98765");

            Assert.Equal(2, other.GetAssociations().First().Value.Count);
        }
Beispiel #25
0
        public void IsService(string uid, bool success)
        {
            var associationService = TestAssociations.CreateAssociation().Main;

            Assert.Equal(success, associationService.IsService(uid));
        }
Beispiel #26
0
        public void IsCancelled(StpIndicator indicator, bool expected)
        {
            var association = TestAssociations.CreateAssociation(indicator: indicator);

            Assert.Equal(expected, association.IsCancelled());
        }