public void Three_Verticals()
        {
            TrackLayout.AddTrack(1, 1);
            TrackLayout.AddTrack(1, 2);
            TrackLayout.AddTrack(1, 3);
            TrackLayout.AddTrack(1, 4);
            TrackLayout.AddTrack(1, 5);

            TrackLayout.AddTrack(2, 2);
            TrackLayout.AddTrack(2, 3);
            TrackLayout.AddTrack(2, 4);

            TrackLayout.AddTrack(3, 3);

            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 1).Direction);
            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 2).Direction);
            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 3).Direction);
            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 4).Direction);
            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 5).Direction);

            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 2).Direction);
            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 3).Direction);
            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 4).Direction);

            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(3, 3).Direction);
        }
        public void TwoCrosses()
        {
            TrackLayout.AddTrack(1, 2);
            TrackLayout.AddTrack(2, 2);
            TrackLayout.AddTrack(3, 2);
            TrackLayout.AddTrack(2, 1);

            TrackLayout.AddTrack(1, 4);
            TrackLayout.AddTrack(2, 4);
            TrackLayout.AddTrack(3, 4);
            TrackLayout.AddTrack(2, 5);

            TrackLayout.AddTrack(2, 3);

            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 1).Direction);
            Assert.Equal(TrackDirection.Cross, TrackLayout.GetTrackAt(2, 2).Direction);
            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 3).Direction);
            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(1, 2).Direction);
            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(3, 2).Direction);

            Assert.Equal(TrackDirection.Cross, TrackLayout.GetTrackAt(2, 4).Direction);
            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(1, 4).Direction);
            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(3, 4).Direction);

            Assert.True(TrackLayout.GetTrackAt(2, 3).Happy);
        }
 [TestInitialize] public void TestInitialize() {
     TestDataFactory.Init();
     layout = TestDataFactory.Layout();
     stretch = layout.TrackStretches.First();
     train = TestDataFactory.CreateTrain1();
     target = new TrackStretchCoordinator(stretch);
 }
    public static TrackLayout CreateFromTrackCollection(TrackCollection tc)
    {
        HashSet <TrackSectionSerializer>  sectionList  = new HashSet <TrackSectionSerializer>();
        HashSet <TrackJunctionSerializer> junctionList = new HashSet <TrackJunctionSerializer>();

        for (int i = 0; i < tc.sections.Length; i++)
        {
            if (tc.sections[i] != null)
            {
                TrackJunction j = tc.sections[i] as TrackJunction;
                if (j != null)
                {
                    junctionList.Add(new TrackJunctionSerializer(j));
                }
                else
                {
                    sectionList.Add(new TrackSectionSerializer(tc.sections[i]));
                }
            }
        }

        TrackLayout layout = ScriptableObject.CreateInstance <TrackLayout>();

        layout.trackSections = new TrackSectionSerializer[sectionList.Count];
        sectionList.CopyTo(layout.trackSections);
        layout.trackJunctions = new TrackJunctionSerializer[junctionList.Count];
        junctionList.CopyTo(layout.trackJunctions);

        return(layout);
    }
        public void Vertical()
        {
            TrackLayout.AddTrack(1, 1);
            TrackLayout.AddTrack(1, 2);

            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 1).Direction);
            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 2).Direction);
        }
        public void Horizontal()
        {
            TrackLayout.AddTrack(1, 1);
            TrackLayout.AddTrack(2, 1);

            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(1, 1).Direction);
            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(2, 1).Direction);
        }
Exemple #7
0
        public void Vertical_TrainMovement(float startAngle, int startColumn, int startRow, int endColumn, int endRow)
        {
            TrackLayout.AddTrack(1, 1);
            TrackLayout.AddTrack(1, 2);
            TrackLayout.AddTrack(1, 3);

            AssertTrainMovement(startAngle, startColumn, startRow, endColumn, endRow);
        }
Exemple #8
0
        [TestMethod] public void AddingSameStationTwiceThrows()
        {
            var target  = new TrackLayout("Test");
            var station = TestDataFactory.CreateStation1();

            target.Add(station);
            target.Add(station);
        }
Exemple #9
0
        public void LeftDown_TrainMovement(float startAngle, int startColumn, int startRow, int endColumn, int endRow)
        {
            TrackLayout.AddTrack(1, 1);
            TrackLayout.AddTrack(2, 1);
            TrackLayout.AddTrack(2, 2);

            AssertTrainMovement(startAngle, startColumn, startRow, endColumn, endRow);
        }
Exemple #10
0
        public void Horizontal_TrainMovement(float startAngle, int startColumn, int startRow, int endColumn, int endRow)
        {
            TrackLayout.AddTrack(1, 1);
            TrackLayout.AddTrack(2, 1);
            TrackLayout.AddTrack(3, 1);

            AssertTrainMovement(startAngle, startColumn, startRow, endColumn, endRow);
        }
Exemple #11
0
        public void MovementTest_FullTrackLoop_FourLoopCorners(float initialTrainAngle)
        {
            var trackLayout = new TrackLayout();
            var board       = new GameBoard(trackLayout, null, null);

            trackLayout.AddTrack(3, 2);
            trackLayout.AddTrack(4, 2);
            trackLayout.AddTrack(5, 2);
            trackLayout.AddTrack(5, 1);
            trackLayout.AddTrack(4, 1);
            trackLayout.AddTrack(4, 3);
            trackLayout.AddTrack(4, 4);
            trackLayout.AddTrack(4, 5);
            trackLayout.AddTrack(5, 5);
            trackLayout.AddTrack(5, 4);
            trackLayout.AddTrack(3, 4);
            trackLayout.AddTrack(2, 4);
            trackLayout.AddTrack(1, 4);
            trackLayout.AddTrack(1, 5);
            trackLayout.AddTrack(2, 5);
            trackLayout.AddTrack(2, 3);
            // Skip until end!
            trackLayout.AddTrack(2, 1);
            trackLayout.AddTrack(1, 1);
            trackLayout.AddTrack(1, 2);
            // Finish it off
            trackLayout.AddTrack(2, 2);

            board.AddTrain(3, 2);

            var train = (Train)board.GetMovables().Single();

            float distance = (float)(12 * StraightTrackDistance +
                                     12 * CornerTrackDistance);

            train.Angle = initialTrainAngle;
            train.ForceSpeed(distance / _movementSteps / Train.SpeedScaleModifier);

            Assert.Equal(3, train.Column);
            Assert.Equal(2, train.Row);
            Assert.Equal(0.5f, train.RelativeLeft, MovementPrecision);
            Assert.Equal(0.5f, train.RelativeTop, MovementPrecision);
            Assert.Equal(initialTrainAngle, train.Angle, MovementPrecision);

            // Move it!
            for (int i = 0; i < _movementSteps; i++)
            {
                board.GameLoopStep();
            }

            Assert.Equal(3, train.Column);
            Assert.Equal(2, train.Row);
            Assert.Equal(0.5f, train.RelativeLeft, MovementPrecision);
            Assert.Equal(0.5f, train.RelativeTop, MovementPrecision);
            Assert.Equal(initialTrainAngle, train.Angle, MovementPrecision);
        }
 public static TrackLayout Layout() { 
     var layout = new TrackLayout("Test");
     foreach (var s in Stations) layout.Add(s);
     var timetableStretch = new TimetableStretch("1");
     var ss = Stations.ToArray();
     timetableStretch.Add(layout.Add(ss[0].Exit("Vänster"), ss[1].Exit("Höger"), 10));
     timetableStretch.Add(layout.Add(ss[1].Exit("Vänster"), ss[2].Exit("Höger"), 10));
     layout.Add(timetableStretch);
     return layout;
 }
        public void RightDown()
        {
            TrackLayout.AddTrack(2, 1);
            TrackLayout.AddTrack(1, 1);
            TrackLayout.AddTrack(1, 2);

            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(2, 1).Direction);
            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 2).Direction);
            Assert.Equal(TrackDirection.RightDown, TrackLayout.GetTrackAt(1, 1).Direction);
        }
 static TrackLayout GetLayout() {
     var layout = new TrackLayout("Test");
     var stations = TestDataFactory.Stations.ToArray();
     foreach (var station in stations) {
         layout.Add(station);
     }
     layout.Add(stations[0].Exit("Vänster"), stations[1].Exit("Höger"), 10);
     layout.Add(stations[2].Exit("Höger"), stations[1].Exit("Vänster"), 10);
     return layout;
 }
        public void LeftUp()
        {
            TrackLayout.AddTrack(1, 2);
            TrackLayout.AddTrack(2, 1);
            TrackLayout.AddTrack(2, 2);

            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(1, 2).Direction);
            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 1).Direction);
            Assert.Equal(TrackDirection.LeftUp, TrackLayout.GetTrackAt(2, 2).Direction);
        }
Exemple #16
0
        public static StationExit GetStationExit(this TrackLayout me, string stationSignature, string exitName)
        {
            var station = me.Stations.Where(t => t.Signature == stationSignature).SingleOrDefault();

            if (station == null)
            {
                throw new ArgumentOutOfRangeException("Station " + stationSignature + " does not exits in layout " + me.Name + ".");
            }
            var result = new StationExit(exitName);

            station.Add(result);
            return(result);
        }
        private static TrackLayout GetTestLayout(string name)
        {
            var layout   = new TrackLayout(name);
            var stations = TestDataFactory.Stations.ToArray();

            foreach (var station in stations)
            {
                layout.Add(station);
            }
            layout.Add(stations[0].Exit("Vänster"), stations[1].Exit("Höger"), 10);
            layout.Add(stations[2].Exit("Höger"), stations[1].Exit("Vänster"), 10);
            return(layout);
        }
        public void SidewaysHairpin()
        {
            TrackLayout.AddTrack(1, 2);
            TrackLayout.AddTrack(2, 2);
            TrackLayout.AddTrack(3, 2);
            TrackLayout.AddTrack(3, 1);
            TrackLayout.AddTrack(2, 1);

            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(1, 2).Direction);
            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(2, 2).Direction);
            Assert.Equal(TrackDirection.LeftUp, TrackLayout.GetTrackAt(3, 2).Direction);
            Assert.Equal(TrackDirection.LeftDown, TrackLayout.GetTrackAt(3, 1).Direction);
            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(2, 1).Direction);
        }
        public void VerticalHairpin()
        {
            TrackLayout.AddTrack(1, 3);
            TrackLayout.AddTrack(1, 2);
            TrackLayout.AddTrack(1, 1);
            TrackLayout.AddTrack(2, 1);
            TrackLayout.AddTrack(2, 2);

            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 3).Direction);
            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 2).Direction);
            Assert.Equal(TrackDirection.RightDown, TrackLayout.GetTrackAt(1, 1).Direction);
            Assert.Equal(TrackDirection.LeftDown, TrackLayout.GetTrackAt(2, 1).Direction);
            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 2).Direction);
        }
        public void CrossMiddleLast()
        {
            TrackLayout.AddTrack(1, 2);
            TrackLayout.AddTrack(3, 2);
            TrackLayout.AddTrack(2, 1);
            TrackLayout.AddTrack(2, 3);
            TrackLayout.AddTrack(2, 2);

            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 1).Direction);
            Assert.Equal(TrackDirection.Cross, TrackLayout.GetTrackAt(2, 2).Direction);
            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 3).Direction);
            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(1, 2).Direction);
            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(3, 2).Direction);
        }
Exemple #21
0
        private static IEnumerable <Message> GetStations(TrackLayout layout, Excel.Workbook book)
        {
            var messages = new List <Message>();

            Excel.Worksheet sheet   = book.Worksheets["StationTrack"] as Excel.Worksheet;
            var             r       = 1;
            Station         current = null;
            var             loop    = true;

            while (loop)
            {
                var row  = (Array)(sheet.get_Range(Cell("A", r), Cell("G", r)).Cells.Value);
                var col1 = row.Value(1)?.ToString();
                if (col1 == null)
                {
                    break;
                }

                if (col1 != "Name")
                {
                    var rowType = row.Value(6).ToUpperInvariant();
                    switch (rowType)
                    {
                    case "STATION":
                        if (current != null)
                        {
                            layout.Add(current);
                        }
                        current = new Station(row.Value(5), row.Value(1));
                        break;

                    case "TRACK":

                        current.Add(new StationTrack(row.Value(3)));
                        break;

                    default:
                        loop = false;
                        break;
                    }
                }
                r++;
            }
            if (current != null)
            {
                layout.Add(current);
            }
            return(messages);
        }
Exemple #22
0
        private static IEnumerable <Message> GetStretches(TrackLayout layout, Excel.Workbook book)
        {
            var messages = new List <Message>();

            Excel.Worksheet sheet = book.Worksheets["Routes"] as Excel.Worksheet;
            for (var r = 2; ; r++)
            {
                var row = (Array)sheet.get_Range(Cell("A", r), Cell("I", r)).Cells.Value;
                if (row.GetValue(1, 1) == null)
                {
                    break;
                }
                else
                {
                    var timetableStretchNumber = row.Value(1);
                    var tracksCount            = int.Parse(row.Value(8), CultureInfo.InvariantCulture);
                    var fromName = row.Value(3);
                    var toName   = row.Value(5);
                    var distance = double.Parse(row.Value(9).Replace(",", "."), NumberStyles.Float, CultureInfo.InvariantCulture);

                    var fromStation = layout.Station(fromName);
                    if (fromStation.IsNone)
                    {
                        messages.Add(Message.Error(fromStation.Message));
                        continue;
                    }
                    var fromExit = new StationExit(toName);
                    fromStation.Value.Add(fromExit);
                    var toStation = layout.Station(toName);
                    if (toStation.IsNone)
                    {
                        messages.Add(Message.Error(toStation.Message));
                    }
                    else
                    {
                        var toExit = new StationExit(fromName);
                        toStation.Value.Add(toExit);
                        var addedStretch = layout.Add(fromExit, toExit, distance, tracksCount);
                        if (!layout.HasTimetableStretch(timetableStretchNumber))
                        {
                            layout.Add(new TimetableStretch(timetableStretchNumber));
                        }
                        layout.TimetableStretch(timetableStretchNumber).Add(addedStretch);
                    }
                }
            }
            return(messages);
        }
Exemple #23
0
        public static TrackLayout Layout()
        {
            var layout = new TrackLayout("Test");

            foreach (var s in Stations)
            {
                layout.Add(s);
            }
            var timetableStretch = new TimetableStretch("1");
            var ss = Stations.ToArray();

            timetableStretch.Add(layout.Add(ss[0].Exit("Vänster"), ss[1].Exit("Höger"), 10));
            timetableStretch.Add(layout.Add(ss[1].Exit("Vänster"), ss[2].Exit("Höger"), 10));
            layout.Add(timetableStretch);
            return(layout);
        }
        public void Happiness()
        {
            TrackLayout.AddTrack(1, 1);

            Assert.False(TrackLayout.GetTrackAt(1, 1).Happy);

            TrackLayout.AddTrack(1, 2);

            Assert.False(TrackLayout.GetTrackAt(1, 1).Happy);
            Assert.False(TrackLayout.GetTrackAt(1, 2).Happy);

            TrackLayout.AddTrack(1, 3);

            Assert.False(TrackLayout.GetTrackAt(1, 1).Happy);
            Assert.True(TrackLayout.GetTrackAt(1, 2).Happy);
            Assert.False(TrackLayout.GetTrackAt(1, 3).Happy);
        }
        public void LeftAngleWithCircleOnTop()
        {
            TrackLayout.AddTrack(1, 3);
            TrackLayout.AddTrack(2, 3);
            TrackLayout.AddTrack(2, 4);
            TrackLayout.AddTrack(1, 1);
            TrackLayout.AddTrack(2, 1);
            TrackLayout.AddTrack(2, 2);
            TrackLayout.AddTrack(1, 2);

            Assert.Equal(TrackDirection.RightUp, TrackLayout.GetTrackAt(1, 3).Direction);
            Assert.Equal(TrackDirection.LeftDown, TrackLayout.GetTrackAt(2, 3).Direction);
            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 4).Direction);
            Assert.Equal(TrackDirection.RightDown, TrackLayout.GetTrackAt(1, 1).Direction);
            Assert.Equal(TrackDirection.LeftDown, TrackLayout.GetTrackAt(2, 1).Direction);
            Assert.Equal(TrackDirection.LeftUp, TrackLayout.GetTrackAt(2, 2).Direction);
            Assert.Equal(TrackDirection.RightUpDown, TrackLayout.GetTrackAt(1, 2).Direction);
        }
        public void LeftRightDown_DrawOver()
        {
            TrackLayout.AddTrack(1, 1);
            TrackLayout.AddTrack(2, 1);
            TrackLayout.AddTrack(3, 1);
            TrackLayout.AddTrack(2, 2);

            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(1, 1).Direction);
            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(2, 1).Direction);
            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(3, 1).Direction);
            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(2, 2).Direction);

            TrackLayout.AddTrack(2, 1);

            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(1, 1).Direction);
            Assert.Equal(TrackDirection.RightDown_LeftDown, TrackLayout.GetTrackAt(2, 1).Direction);
            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(3, 1).Direction);
            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 2).Direction);
        }
        public void Two_Verticals()
        {
            TrackLayout.AddTrack(1, 1);
            TrackLayout.AddTrack(1, 2);
            TrackLayout.AddTrack(1, 3);
            TrackLayout.AddTrack(1, 4);

            TrackLayout.AddTrack(2, 2);
            TrackLayout.AddTrack(2, 3);


            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 1).Direction);
            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 2).Direction);
            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 3).Direction);
            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 4).Direction);

            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 2).Direction);
            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 3).Direction);
        }
        public void LeftRightUp_DrawOver()
        {
            TrackLayout.AddTrack(1, 3);
            TrackLayout.AddTrack(2, 3);
            TrackLayout.AddTrack(3, 3);
            TrackLayout.AddTrack(2, 2);

            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(1, 3).Direction);
            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(2, 3).Direction);
            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(3, 3).Direction);
            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(2, 2).Direction);

            TrackLayout.AddTrack(2, 3);

            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(1, 3).Direction);
            Assert.Equal(TrackDirection.LeftRightUp, TrackLayout.GetTrackAt(2, 3).Direction);
            Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(3, 3).Direction);
            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 2).Direction);
        }
Exemple #29
0
        public void MovementTest_FullTrackLoop_3x3Square(float initialTrainAngle)
        {
            var trackLayout = new TrackLayout();
            var board       = new GameBoard(trackLayout, null, null);

            trackLayout.AddTrack(1, 1);
            trackLayout.AddTrack(2, 1);
            trackLayout.AddTrack(3, 1);
            trackLayout.AddTrack(3, 2);
            trackLayout.AddTrack(3, 3);
            trackLayout.AddTrack(2, 3);
            trackLayout.AddTrack(1, 3);
            trackLayout.AddTrack(1, 2);

            board.AddTrain(2, 1);

            var train = (Train)board.GetMovables().Single();

            float distance = (float)(4 * StraightTrackDistance +
                                     4 * CornerTrackDistance);

            // Train speed & angle
            train.ForceSpeed(distance / _movementSteps / Train.SpeedScaleModifier);
            train.SetAngle(initialTrainAngle);

            Assert.Equal(2, train.Column);
            Assert.Equal(1, train.Row);
            Assert.Equal(0.5f, train.RelativeLeft, MovementPrecision);
            Assert.Equal(0.5f, train.RelativeTop, MovementPrecision);
            Assert.Equal(initialTrainAngle, train.Angle, MovementPrecision);

            // Move it!
            for (int i = 0; i < _movementSteps; i++)
            {
                board.GameLoopStep();
            }

            Assert.Equal(2, train.Column);
            Assert.Equal(1, train.Row);
            Assert.Equal(0.5f, train.RelativeLeft, MovementPrecision);
            Assert.Equal(0.5f, train.RelativeTop, MovementPrecision);
            Assert.Equal(initialTrainAngle, train.Angle, MovementPrecision);
        }
        public void Trident()
        {
            TrackLayout.AddTrack(1, 1);
            TrackLayout.AddTrack(1, 2);
            TrackLayout.AddTrack(2, 2);
            TrackLayout.AddTrack(3, 2);
            TrackLayout.AddTrack(3, 1);
            TrackLayout.AddTrack(2, 3);
            TrackLayout.AddTrack(2, 2);

            TrackLayout.AddTrack(2, 1);

            Assert.Equal(TrackDirection.RightDown, TrackLayout.GetTrackAt(1, 1).Direction);
            Assert.Equal(TrackDirection.RightUp, TrackLayout.GetTrackAt(1, 2).Direction);
            Assert.Equal(TrackDirection.Cross, TrackLayout.GetTrackAt(2, 2).Direction);
            Assert.Equal(TrackDirection.LeftUp, TrackLayout.GetTrackAt(3, 2).Direction);
            Assert.Equal(TrackDirection.LeftDown, TrackLayout.GetTrackAt(3, 1).Direction);
            Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 3).Direction);

            Assert.Equal(TrackDirection.LeftRightDown, TrackLayout.GetTrackAt(2, 1).Direction);
        }
Exemple #31
0
    public static void PopulateTrackCollection(TrackLayout layout, TrackCollection target)
    {
        target.Clear();
        foreach (TrackSectionSerializer serializedTrack in layout.trackSections)
        {
            TrackSection track = serializedTrack.ToTrackSection();
            if (!target.Add(track, track.index))
            {
                Debug.LogError("Could not add track section to collection at index " + track.index);
            }
        }

        foreach (TrackJunctionSerializer serializedJunction in layout.trackJunctions)
        {
            TrackJunction track = serializedJunction.ToTrackJunction();
            if (!target.Add(track, track.index))
            {
                Debug.LogError("Could not add track junction to collection at index " + track.index);
            }
        }
    }
Exemple #32
0
        public (Maybe <TrackLayout> item, IEnumerable <Message> messages) GetLayout(string name)
        {
            var messages = new List <Message>();
            var result   = new TrackLayout(name);
            var app      = Excel;

            Excel.Workbook book = null;
            try
            {
                var fileName = GetFullFilename(name);
                book = app.Workbooks.Open(fileName);
                messages.AddRange(GetStations(result, book));
                if (messages.CanContinue())
                {
                    messages.AddRange(GetStretches(result, book));
                }
            }
            finally
            {
                book?.Close(false, GetFullFilename(name));
            }
            return(Maybe <TrackLayout> .NoneIfError(result, messages.HasStoppingErrors()), messages);
        }
Exemple #33
0
        public override string ToString()
        {
            var builder = new System.Text.StringBuilder();

            builder.AppendFormat("{0} {{", nameof(SessionInfo)).AppendLine();
            builder.AppendFormat("    {0} = {1}", nameof(Version), Version.ToString()).AppendLine();
            builder.AppendFormat("    {0} = {1}", nameof(MessageSessionIndex), MessageSessionIndex.ToString()).AppendLine();
            builder.AppendFormat("    {0} = {1}", nameof(ServerSessionIndex), ServerSessionIndex.ToString()).AppendLine();
            builder.AppendFormat("    {0} = {1}", nameof(SessionCount), SessionCount.ToString()).AppendLine();
            builder.AppendFormat("    {0} = {1}", nameof(ServerName), ServerName.ToString()).AppendLine();
            builder.AppendFormat("    {0} = {1}", nameof(TrackName), TrackName.ToString()).AppendLine();
            builder.AppendFormat("    {0} = {1}", nameof(TrackLayout), TrackLayout.ToString()).AppendLine();
            builder.AppendFormat("    {0} = {1}", nameof(SessionName), SessionName.ToString()).AppendLine();
            builder.AppendFormat("    {0} = {1}", nameof(SessionType), SessionType.ToString()).AppendLine();
            builder.AppendFormat("    {0} = {1}", nameof(SessionLengthLaps), SessionLengthLaps.ToString()).AppendLine();
            builder.AppendFormat("    {0} = {1}", nameof(SessionLengthMinutes), SessionLengthMinutes.ToString()).AppendLine();
            builder.AppendFormat("    {0} = {1}", nameof(WaitTime), WaitTime.ToString()).AppendLine();
            builder.AppendFormat("    {0} = {1}", nameof(AmbientTemperature), AmbientTemperature.ToString()).AppendLine();
            builder.AppendFormat("    {0} = {1}", nameof(RoadTemperature), RoadTemperature.ToString()).AppendLine();
            builder.AppendFormat("    {0} = {1}", nameof(Weather), Weather.ToString()).AppendLine();
            builder.AppendFormat("    {0} = {1}", nameof(Elapsed), Elapsed.ToString()).AppendLine();
            builder.AppendFormat("}}").AppendLine();
            return(builder.ToString());
        }
 [TestMethod] public void AddingSameStationTwiceThrows() {
     var target = new TrackLayout("Test");
     var station = TestDataFactory.CreateStation1();
     target.Add(station);
     target.Add(station);
 }