コード例 #1
0
 public void ItTurnLightRedAtCrossingStation()
 {
     //Given
     var signalS0 = new Signal() {Name = "S0", Light = Light.GREEN};
     var track = new Track(signalS0);
     //When
     track.TrainCrosses(signalS0);
     //Then
     Assert.AreEqual(Light.RED, signalS0.Light);
 }
コード例 #2
0
 public void ItTurnLightYellowAtLastStation()
 {
     //Given
     var signalS0 = new Signal() { Name = "S0", Light = Light.RED };
     var signalS1 = new Signal() { Name = "S1", Light = Light.GREEN };
     var track = new Track(signalS0, signalS1);
     //When
     track.TrainCrosses(signalS1);
     //Then
     Assert.AreEqual(Light.YELLOW, signalS0.Light);
 }
コード例 #3
0
 public void ItTurnLightDoubleYellowTwoStationBack()
 {
     //Given
     var signalS0 = new Signal() { Name = "S0", Light = Light.YELLOW };
     var signalS1 = new Signal() { Name = "S1", Light = Light.RED };
     var signalS2 = new Signal() { Name = "S2", Light = Light.GREEN };
     var track = new Track(signalS0, signalS1, signalS2);
     //When
     track.TrainCrosses(signalS2);
     //Then
     Assert.AreEqual(Light.DOUBLE_YELLOW, signalS0.Light);
 }
コード例 #4
0
ファイル: Track.cs プロジェクト: shantanusinghal/grepo
 private List<Signal> GetTailingSignalsFrom(Signal currentSignal)
 {
     var endIndex = Signals.IndexOf(currentSignal);
     var startIndex = endIndex - MIN_BLOCKS >= 0 ? endIndex - MIN_BLOCKS : 0;
     return Signals.GetRange(startIndex, endIndex + 1);
 }
コード例 #5
0
ファイル: Track.cs プロジェクト: shantanusinghal/grepo
 public void TrainCrosses(Signal currentSignal)
 {
     GetTailingSignalsFrom(currentSignal).ForEach(signal =>
     signal.ToggleLight());
 }