Exemple #1
0
        [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);
        }
Exemple #2
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #8
0
        [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);
        }
Exemple #9
0
        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);
        }
Exemple #11
0
 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);
     }
 }
Exemple #12
0
        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);
        }
Exemple #13
0
        [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);
        }
Exemple #16
0
        /// <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();
            }
        }
Exemple #17
0
        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);
                }
            }
        }