[InlineData(105.0f)] // Extreme public void MoveVertical_MovingDown_WithinCell_VariedInitialAngles(float angle) { var position = new TrainPosition(0.5f, 0.0f, angle, 0.5f); var expectedPos = new TrainPosition(0.5f, 0.5f, 90, 0.0f); TrainMovement.MoveVertical(position); Assert.Equal(expectedPos.RelativeLeft, position.RelativeLeft, 3); Assert.Equal(expectedPos.RelativeTop, position.RelativeTop, 3); Assert.Equal(expectedPos.Angle, position.Angle, 3); Assert.Equal(expectedPos.Distance, position.Distance, 3); }
public void MoveHorizontal_MovingLeft_WithinCell_VariedDistance(float initalLeft, float distance, float expectedLeft) { var position = new TrainPosition(initalLeft, 0.5f, 180, distance); var expectedPos = new TrainPosition(expectedLeft, 0.5f, 180, 0.0f); TrainMovement.MoveHorizontal(position); Assert.Equal(expectedPos.RelativeLeft, position.RelativeLeft, 3); Assert.Equal(expectedPos.RelativeTop, position.RelativeTop, 3); Assert.Equal(expectedPos.Angle, position.Angle, 3); Assert.Equal(expectedPos.Distance, position.Distance, 3); }
public void MoveLeftDown_CounterClockwiseFromBottom_BeyondCell(float initalLeft, float initalTop, float initialAngle, float distance, float expectedDistance) { var position = new TrainPosition(initalLeft, initalTop, initialAngle, distance); var expectedPos = new TrainPosition(-0.1f, 0.5f, 180, expectedDistance); TrainMovement.MoveLeftDown(position); Assert.Equal(expectedPos.RelativeLeft, position.RelativeLeft, 3); Assert.Equal(expectedPos.RelativeTop, position.RelativeTop, 3); Assert.Equal(expectedPos.Angle, position.Angle, 3); Assert.Equal(expectedPos.Distance, position.Distance, 3); }
[InlineData(0.9f)] // Extreme public void MoveLeftDown_CounterClockwiseFromBottom_WithinCell_SnappingToCenter(float relativeLeft) { var position = new TrainPosition(relativeLeft, 1.0f, 270, (float)HalfCornerTrackDistance); var expectedPos = new TrainPosition(Cos45ByRadius, 1.0f - Sin45ByRadius, 225, 0.0f); TrainMovement.MoveLeftDown(position); Assert.Equal(expectedPos.RelativeLeft, position.RelativeLeft, 3); Assert.Equal(expectedPos.RelativeTop, position.RelativeTop, 3); Assert.Equal(expectedPos.Angle, position.Angle, 3); Assert.Equal(expectedPos.Distance, position.Distance, 3); }
public void MoveLeftDown_CounterClockwiseFromBottom_WithinCell_VariedDistance(float initalLeft, float initalTop, float initialAngle, float distance, float expectedLeft, float expectedTop, float expectedAngle) { var position = new TrainPosition(initalLeft, initalTop, initialAngle, distance); var expectedPos = new TrainPosition(expectedLeft, expectedTop, expectedAngle, 0.0f); TrainMovement.MoveLeftDown(position); Assert.Equal(expectedPos.RelativeLeft, position.RelativeLeft, 3); Assert.Equal(expectedPos.RelativeTop, position.RelativeTop, 3); Assert.Equal(expectedPos.Angle, position.Angle, 3); Assert.Equal(expectedPos.Distance, position.Distance, 3); }
public void MoveVertical_MovingDown_BeyondCell(float initalTop, float distance, float expectedDistance) { var position = new TrainPosition(0.5f, initalTop, 90, distance); var expectedPos = new TrainPosition(0.5f, 1.1f, 90, expectedDistance); TrainMovement.MoveVertical(position); Assert.Equal(expectedPos.RelativeLeft, position.RelativeLeft, 3); Assert.Equal(expectedPos.RelativeTop, position.RelativeTop, 3); Assert.Equal(expectedPos.Angle, position.Angle, 3); Assert.Equal(expectedPos.Distance, position.Distance, 3); }
[InlineData(TrainAngleHelper.TrainFacingUp + 15.0f)] // Extreme public void MoveLeftDown_CounterClockwiseFromBottom_WithinCell_VariedInitialAngles(float angle) { var position = new TrainPosition(0.5f, 1.0f, angle, (float)HalfCornerTrackDistance); var expectedPos = new TrainPosition(Cos45ByRadius, 1.0f - Sin45ByRadius, 225, 0.0f); TrainMovement.MoveLeftDown(position); Assert.Equal(expectedPos.RelativeLeft, position.RelativeLeft, 3); Assert.Equal(expectedPos.RelativeTop, position.RelativeTop, 3); Assert.Equal(expectedPos.Angle, position.Angle, 3); Assert.Equal(expectedPos.Distance, position.Distance, 3); }
[InlineData(0.9f)] // Extreme public void MoveVertical_MovingDown_WithinCell_SnappingToMiddle(float relativeLeft) { var position = new TrainPosition(relativeLeft, 0.0f, 90, 0.5f); var expectedPos = new TrainPosition(0.5f, 0.5f, 90, 0.0f); TrainMovement.MoveVertical(position); Assert.Equal(expectedPos.RelativeLeft, position.RelativeLeft, 3); Assert.Equal(expectedPos.RelativeTop, position.RelativeTop, 3); Assert.Equal(expectedPos.Angle, position.Angle, 3); Assert.Equal(expectedPos.Distance, position.Distance, 3); }
public void MoveVertical_MovingDown_WithinCell_VariedDistance(float initalTop, float distance, float expectedTop) { var position = new TrainPosition(0.5f, initalTop, 90, distance); var expectedPos = new TrainPosition(0.5f, expectedTop, 90, 0.0f); TrainMovement.MoveVertical(position); Assert.Equal(expectedPos.RelativeLeft, position.RelativeLeft, 3); Assert.Equal(expectedPos.RelativeTop, position.RelativeTop, 3); Assert.Equal(expectedPos.Angle, position.Angle, 3); Assert.Equal(expectedPos.Distance, position.Distance, 3); }
[InlineData(0.9f)] // Extreme public void MoveRightUp_CounterClockwiseFromTop_WithinCell_SnappingToCenter(float relativeLeft) { var position = new TrainPosition(relativeLeft, 0.0f, 90.0f, (float)HalfCornerTrackDistance); var expectedPos = new TrainPosition(1.0f - Cos45ByRadius, Sin45ByRadius, 45.0f, 0.0f); TrainMovement.MoveRightUp(position); Assert.Equal(expectedPos.RelativeLeft, position.RelativeLeft, 3); Assert.Equal(expectedPos.RelativeTop, position.RelativeTop, 3); Assert.Equal(expectedPos.Angle, position.Angle, 3); Assert.Equal(expectedPos.Distance, position.Distance, 3); }
internal override void Move(TrainPosition position) { if ((position.Angle > 45.0f && position.Angle < 135.0f) || (position.Angle > 225.0f && position.Angle < 315.0f)) { TrainMovement.MoveVertical(position); } else { TrainMovement.MoveHorizontal(position); } }
public void MoveHorizontal_MovingRight_BeyondCell(float initalLeft, float distance, float expectedDistance) { var position = new TrainPosition(initalLeft, 0.5f, 0, distance); var expectedPos = new TrainPosition(1.1f, 0.5f, 0, expectedDistance); TrainMovement.MoveHorizontal(position); Assert.Equal(expectedPos.RelativeLeft, position.RelativeLeft, 3); Assert.Equal(expectedPos.RelativeTop, position.RelativeTop, 3); Assert.Equal(expectedPos.Angle, position.Angle, 3); Assert.Equal(expectedPos.Distance, position.Distance, 3); }
[InlineData(0.9f)] // Extreme public void MoveHorizontal_MovingRight_WithinCell_SnappingToCenter(float relativeTop) { var position = new TrainPosition(0.0f, relativeTop, 0, 0.5f); var expectedPos = new TrainPosition(0.5f, 0.5f, 0, 0.0f); TrainMovement.MoveHorizontal(position); Assert.Equal(expectedPos.RelativeLeft, position.RelativeLeft, 3); Assert.Equal(expectedPos.RelativeTop, position.RelativeTop, 3); Assert.Equal(expectedPos.Angle, position.Angle, 3); Assert.Equal(expectedPos.Distance, position.Distance, 3); }
private TrainPosition GetPositionWithTraffic(TrainPathMessage message) { var result = new TrainPosition { Abfahrt = abfahrtGetter.Invoke(message), Ankunft = ankunftGetter.Invoke(message), Bemerkungen = message.Bemerkungen, Betriebsstelle = message.Betriebsstelle, Gleis = message.GleisSoll?.ToString(), VerkehrNicht = false, IstDurchfahrt = message.IstDurchfahrt, }; return(result); }
private TrainPosition GetPositionWithoutTraffic(TrainPathMessage message) { var result = new TrainPosition { Abfahrt = message.AbfahrtPlan, Ankunft = message.AnkunftPlan, Bemerkungen = message.Bemerkungen, Betriebsstelle = message.Betriebsstelle, Gleis = message.GleisSoll?.ToString(), VerkehrNicht = true, IstDurchfahrt = message.IstDurchfahrt, }; return(result); }
/// <summary> /// Constructor /// </summary> public GraphView() { InitializeComponent(); AllowDrop = true; DragEnter += GraphView_DragEnter; DragDrop += GraphView_DragDrop; Functions = new List <Function>(); TrainPosition = new TrainPosition(); DockAreas = DockAreas.Document; GraphVisualiser.InitializeChart(); foreach (TabPage tabPage in tabControl1.TabPages) { tabPage.MouseEnter += (s, e) => tabPage.Focus(); } }
private IEnumerable <TrainPosition> GetTrainPositions <T>(IEnumerable <Halt <T> > halte, bool preferPrognosis) where T : Zug { if (halte.AnyItem()) { foreach (var halt in halte) { var result = new TrainPosition { Abfahrt = halt.GetAbfahrtPath(preferPrognosis), Ankunft = halt.GetAnkunftPath(preferPrognosis), Bemerkungen = halt.Bemerkungen, Betriebsstelle = halt.Betriebsstelle, Gleis = halt.GleisPlan.ToString(), IstDurchfahrt = halt.IstDurchfahrt, VerkehrNicht = false, }; yield return(result); } } }