示例#1
0
        public void CompareTo_ShouldConsiderDNFSlowerThanDSQ()
        {
            Beacon martijnBeacon = new Beacon(new byte[] { 0, 0, 0, 0, 0, 1 }, 2);
            Rider  martijn       = new Rider("Martijn", martijnBeacon);

            //make a regular lap with DSQ
            IdEvent     startId     = new IdEvent(DateTime.Now, martijn, "StartId", Direction.Enter);
            TimingEvent startTiming = new TimingEvent(DateTime.Now, martijn, 100, 0);
            IdEvent     endId       = new IdEvent(DateTime.Now, martijn, "EndId", Direction.Enter);
            TimingEvent endTiming   = new TimingEvent(DateTime.Now, martijn, 200, 1);

            FinishedEvent finish = new FinishedEvent(startId, startTiming, endTiming, endId);

            Lap normalLap = new Lap(finish);

            normalLap.SetDsq(new DSQEvent(DateTime.Now, martijn, "staff", "reason"));

            //make a DNF lap
            IdEvent dnfStartId = new IdEvent(DateTime.Now, martijn, "StartId", Direction.Enter);

            ManualDNFEvent manualDnf = new ManualDNFEvent(dnfStartId, "staff");
            UnitDNFEvent   unitDnf   = new UnitDNFEvent(finish, dnfStartId);

            Lap manualDnfLap = new Lap(manualDnf);
            Lap unitDnfLap   = new Lap(unitDnf);

            //a dnf lap should always be slower (bigger) than a finished with DSQ lap
            Assert.AreEqual(1, manualDnfLap.CompareTo(normalLap));
            Assert.AreEqual(-1, normalLap.CompareTo(manualDnfLap));

            Assert.AreEqual(1, unitDnfLap.CompareTo(normalLap));
            Assert.AreEqual(-1, normalLap.CompareTo(unitDnfLap));
        }
示例#2
0
        public void CompareTo_ShouldConsiderDSQOnFinshedLaps()
        {
            Beacon martijnBeacon = new Beacon(new byte[] { 0, 0, 0, 0, 0, 1 }, 2);
            Rider  martijn       = new Rider("Martijn", martijnBeacon);

            //make a fast lap
            IdEvent     startId     = new IdEvent(DateTime.Now, martijn, "StartId", Direction.Enter);
            TimingEvent startTiming = new TimingEvent(DateTime.Now, martijn, 100, 0);
            IdEvent     endId       = new IdEvent(DateTime.Now, martijn, "EndId", Direction.Enter);
            TimingEvent endTiming   = new TimingEvent(DateTime.Now, martijn, 200, 1);

            FinishedEvent fastFinish = new FinishedEvent(startId, startTiming, endTiming, endId);

            Lap fast = new Lap(fastFinish);

            //make a slower lap without penalties
            IdEvent     slowStartId     = new IdEvent(DateTime.Now, martijn, "StartId", Direction.Enter);
            TimingEvent slowStartTiming = new TimingEvent(DateTime.Now, martijn, 100, 0);
            IdEvent     slowEndId       = new IdEvent(DateTime.Now, martijn, "EndId", Direction.Enter);
            TimingEvent slowEndTiming   = new TimingEvent(DateTime.Now, martijn, 300, 1);

            FinishedEvent slowFinish = new FinishedEvent(slowStartId, slowStartTiming, slowEndTiming, slowEndId);

            Lap slow = new Lap(slowFinish);

            //when both are not DSQ the lap time should decide the order
            Assert.AreEqual(1, slow.CompareTo(fast));
            Assert.AreEqual(-1, fast.CompareTo(slow));

            fast.SetDsq(new DSQEvent(DateTime.Now, martijn, "staff", "reason"));

            //the faster lap has a DSQ, so it should be considered slower
            Assert.AreEqual(-1, slow.CompareTo(fast));
            Assert.AreEqual(1, fast.CompareTo(slow));

            slow.SetDsq(new DSQEvent(DateTime.Now, martijn, "staff", "reason"));

            //both are now DSQ lap time should decide order again
            Assert.AreEqual(1, slow.CompareTo(fast));
            Assert.AreEqual(-1, fast.CompareTo(slow));
        }