コード例 #1
0
        public void Init()
        {
            startId = new MockRiderIdUnit("StartId");
            endId   = new MockRiderIdUnit("EndId");
            timer   = new MockTimingUnit();

            source = new CancellationTokenSource();

            TrackerConfig config = new TrackerConfig
            {
                EndMatchTimeout   = 20,
                StartTimingGateId = 0,
                EndTimingGateId   = 1
            };

            //riders are addded in the SimulateRace method
            tracker = new RaceTracker(timer, startId, endId, config, new List <Rider>());

            subject = new RaceManager();
            subject.Start(tracker, new List <IDisplayUnit> {
                timer
            });

            SimulateRace();

            //wait for the tracker to process all events
            Thread.Sleep(2000);

            subject.Stop();
        }
コード例 #2
0
        public void Init()
        {
            startId = new MockRiderIdUnit("StartId");
            endId   = new MockRiderIdUnit("EndId");
            timer   = new MockTimingUnit();

            source = new CancellationTokenSource();

            TrackerConfig config = new TrackerConfig
            {
                EndMatchTimeout   = 10,
                StartTimingGateId = 0,
                EndTimingGateId   = 1
            };

            subject = new RaceTracker(timer, startId, endId, config, new List <Rider> {
            });

            race = subject.Run(source.Token);
        }
コード例 #3
0
 /// <summary>
 /// Makes events for a lap finish at start + 1 minute
 /// </summary>
 /// <param name="riderName"></param>
 /// <param name="sensorId"></param>
 /// <param name="end"></param>
 /// <param name="id"></param>
 /// <param name="time"></param>
 private void MakeEndEvents(Rider rider, DateTime end, MockRiderIdUnit id, MockTimingUnit time)
 {
     id.EmitIdEvent(rider, end);
     time.EmitTriggerEvent(100, "Timer", 1, end);
     id.EmitExitEvent(rider, end);
 }
コード例 #4
0
 /// <summary>
 /// Makes events for a lap begin at start
 /// </summary>
 /// <param name="riderName"></param>
 /// <param name="sensorId"></param>
 /// <param name="start"></param>
 /// <param name="id"></param>
 /// <param name="time"></param>
 private void MakeStartEvents(Rider rider, DateTime start, MockRiderIdUnit id, MockTimingUnit time)
 {
     id.EmitIdEvent(rider, start);
     time.EmitTriggerEvent(100, "Timer", 0, start);
     id.EmitExitEvent(rider, start);
 }
コード例 #5
0
 /// <summary>
 /// Makes events for a lap finish at start + 1 minute
 /// </summary>
 /// <param name="riderName"></param>
 /// <param name="sensorId"></param>
 /// <param name="end"></param>
 /// <param name="id"></param>
 /// <param name="time"></param>
 private void MakeEndEvents(Rider rider, DateTime end, long microseconds, MockRiderIdUnit id, MockTimingUnit time)
 {
     id.EmitIdEvent(rider, end);
     time.EmitTriggerEvent(microseconds, "Timer", 1, end);
 }
コード例 #6
0
 /// <summary>
 /// Makes events for a lap begin at start
 /// </summary>
 /// <param name="riderName"></param>
 /// <param name="sensorId"></param>
 /// <param name="start"></param>
 /// <param name="id"></param>
 /// <param name="time"></param>
 private void MakeStartEvents(Rider rider, DateTime start, long microseconds, MockRiderIdUnit id, MockTimingUnit time)
 {
     id.EmitIdEvent(rider, start);
     time.EmitTriggerEvent(microseconds, "Timer", 0, start);
 }
コード例 #7
0
        private void MakeDNF(Rider rider, DateTime startTime, MockRiderIdUnit start, MockTimingUnit time)
        {
            long startMicroseconds = startTime.Ticks / (TimeSpan.TicksPerMillisecond / 1000);

            MakeStartEvents(rider, startTime, startMicroseconds, start, time);
        }
コード例 #8
0
        /// <summary>
        /// Makes the provided units emit events consistent with the rider completing a lap
        /// </summary>
        /// <param name="rider"></param>
        /// <param name="startTime"></param>
        /// <param name="lapMicroseconds"></param>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <param name="time"></param>
        /// <returns> the time at which the rider finishes the lap (start + lap time)</returns>
        private DateTime MakeLap(Rider rider, DateTime startTime, long lapMicroseconds, MockRiderIdUnit start, MockRiderIdUnit end, MockTimingUnit time)
        {
            long startMicroseconds = startTime.Ticks / (TimeSpan.TicksPerMillisecond / 1000);
            long endMicroseconds   = startMicroseconds + lapMicroseconds;

            DateTime endTime = startTime.AddMilliseconds(lapMicroseconds / 1000);

            MakeStartEvents(rider, startTime, startMicroseconds, start, time);
            MakeEndEvents(rider, endTime, endMicroseconds, end, time);

            return(endTime);
        }