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(); }
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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
private void MakeDNF(Rider rider, DateTime startTime, MockRiderIdUnit start, MockTimingUnit time) { long startMicroseconds = startTime.Ticks / (TimeSpan.TicksPerMillisecond / 1000); MakeStartEvents(rider, startTime, startMicroseconds, start, time); }
/// <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); }