public void RailwayPartGenerator_Generate_ExpectEqual()
        {
            Railway.RailwayParts.Clear();
            var dataRead  = TrackReader.Read(new string[] { "[1]" });
            var railParts = RailwayPartsORM.Map(dataRead);
            var expected  = new List <IRailwayPart>
            {
                new Rail()
                {
                    Char        = '[',
                    CoordinateX = 0,
                    CoordinateY = 0,
                },
                new Station()
                {
                    Char        = '1',
                    CoordinateX = 1,
                    CoordinateY = 0,
                },
                new Rail()
                {
                    Char        = ']',
                    CoordinateX = 2,
                    CoordinateY = 0,
                },
            };
            var railString = JsonConvert.SerializeObject(railParts);
            var expString  = JsonConvert.SerializeObject(expected);

            Assert.Equal(expString, railString);
        }
        public void Station_Generate_ExpectStation()
        {
            Railway.RailwayParts.Clear();
            var dataRead  = TrackReader.Read(new string[] { "-1-" });
            var railParts = RailwayPartsORM.Map(dataRead);

            Assert.IsType <Station>(railParts[1]);
        }
        public void RailwayPartGenerator_Generate_ExpectThree2()
        {
            Railway.RailwayParts.Clear();
            var dataRead  = TrackReader.Read(new string[] { "-1-" });
            var railParts = RailwayPartsORM.Map(dataRead);

            Assert.True(railParts.Count == 3);
        }
Example #4
0
        public void SilverstoneDataIntegration()
        {
            var trackData   = TrackFactsHelper.GetTrackSilverstone();
            var trackReader = new TrackReader();
            var track       = trackReader.Read(trackData.Path);

            track.TrackSections.Count.Should().Be(126, "contains 125 sections and 1 with only command data");
        }
Example #5
0
        public void ConnectStations_raw_2_Check_last()
        {
            Railway.RailwayParts.Clear();
            var read  = TrackReader.Read(File.ReadAllLines(@"TrainTestTrack.txt"));
            var parts = RailwayPartsORM.Map(read);

            Railway.AppendParts(parts);

            var station = parts[^ 1];
Example #6
0
        public void Phoenix8990_Contains_22_PitLane_Sections()
        {
            var trackData   = TrackFactsHelper.GetTrackPhoenix8990();
            var trackReader = new TrackReader();
            var track       = trackReader.Read(trackData.Path);

            track.PitLaneSections.Count.Should().Be(22);
            track.PitLaneSections[20].Length.Should().Be(0);
        }
Example #7
0
        public void ConnectStations_raw_2_test_to_Railway()
        {
            Railway.RailwayParts.Clear();
            var read  = TrackReader.Read(File.ReadAllLines(@"TrainTestTrack.txt"));
            var parts = RailwayPartsORM.Map(read);

            Railway.AppendParts(parts);

            Assert.True(parts.Count == 5);
        }
Example #8
0
        public void AidaDataIntegration()
        {
            var trackData   = TrackFactsHelper.GetTrackAida();
            var trackReader = new TrackReader();
            var track       = trackReader.Read(trackData.Path);

            track.TrackSections.Count.Should().Be(70);
            track.PitLaneSections.Count.Should().Be(24);
            track.ComputerCarLineSegments.Count.Should().Be(53);
        }
Example #9
0
    /// <summary>
    /// Loads a MIDI file into the Sequence.
    /// </summary>
    /// <param name="fileName">
    /// The MIDI file's name.
    /// </param>
    public void Load(string fileName)
    {
        #region Require

        if (disposed)
        {
            throw new ObjectDisposedException("Sequence");
        }
        else if (IsBusy)
        {
            throw new InvalidOperationException();
        }
        else if (fileName == null)
        {
            throw new ArgumentNullException("fileName");
        }

        #endregion

        FileStream stream = new FileStream(fileName, FileMode.Open,
                                           FileAccess.Read, FileShare.Read);

        using (stream)
        {
            MidiFileProperties newProperties = new MidiFileProperties();
            TrackReader        reader        = new TrackReader();
            List <Track>       newTracks     = new List <Track>();

            newProperties.Read(stream);

            for (int i = 0; i < newProperties.TrackCount; i++)
            {
                reader.Read(stream, i);
                newTracks.Add(reader.Track);
                if (timeSignatureNumerator == -1)
                {
                    timeSignatureNumerator = reader.TimeSignatureNumerator;
                }
                if (timeSignatureDenominator == -1)
                {
                    timeSignatureDenominator = reader.TimeSignatureDenominator;
                }
            }

            properties = newProperties;
            tracks     = newTracks;
        }

        #region Ensure

        Debug.Assert(Count == properties.TrackCount);

        #endregion
    }
Example #10
0
        public void ConnectStations_raw_2_CheckStation()
        {
            Railway.RailwayParts.Clear();
            var read  = TrackReader.Read(File.ReadAllLines(@"TrainTestTrack.txt"));
            var parts = RailwayPartsORM.Map(read);

            Railway.AppendParts(parts);

            var station = parts[0];

            Assert.IsType <Station>(station);
        }
Example #11
0
        public void MonacoDataIntegration()
        {
            var trackData   = TrackFactsHelper.GetTrackMonaco();
            var trackReader = new TrackReader();
            var track       = trackReader.Read(trackData.Path);

            track.TrackSections.Count.Should().Be(132);
            track.PitLaneSections.Count.Should().Be(22);
            track.ComputerCarLineSegments.Count.Should().Be(68);

            track.TrackSettings.LapCount.Should().Be(78);
        }
Example #12
0
        public void ConnectionRoutesAddedCorrectly()
        {
            // Arrange
            var p1 = new Waypoint("P1", 0.0, 0.0);
            var p2 = new Waypoint("P2", 5.0, 5.0);

            var q1 = new Waypoint("Q1", 3.0, 3.0);
            var q2 = new Waypoint("Q2", 2.0, 3.0);
            var q3 = new Waypoint("Q3", 1.0, 3.0);

            var wptList = new WaypointList();
            int p1Index = wptList.AddWaypoint(p1);

            wptList.AddWaypoint(p2);

            int q1Index  = wptList.AddWaypoint(q1);
            int q2Index  = wptList.AddWaypoint(q2);
            int q3Index  = wptList.AddWaypoint(q3);
            var neighbor = new Neighbor("A1", q1.Distance(q2));

            wptList.AddNeighbor(q1Index, q2Index, neighbor);

            var reader = new TrackReader <PacificTrack>(
                wptList, new AirportManager());

            string[] routeFrom = { "Q1", "A1", "Q2", "UPR", "Q3", "P1" };

            // Act
            var nodes = reader.Read(
                new PacificTrack(
                    PacotDirection.Westbound,
                    "A",
                    "",
                    "",
                    "",
                    RouteString.From("P1", "P2"),
                    new[] { routeFrom.ToRouteString() },
                    new[] { RouteString.Empty },
                    new LatLon(0.0, 0.0),
                    new LatLon(0.0, 0.0)));

            // Assert
            var pairs = nodes.ConnectionRoutes.ToList();

            Assert.AreEqual(1, pairs.Count);

            var pair = pairs.First();

            Assert.AreEqual(q3Index, pair.IndexFrom);
            Assert.AreEqual(p1Index, pair.IndexTo);
        }
Example #13
0
    private void LoadDoWork(object sender, DoWorkEventArgs e)
    {
        string fileName = (string)e.Argument;

        FileStream stream = new FileStream(fileName, FileMode.Open,
                                           FileAccess.Read, FileShare.Read);

        using (stream)
        {
            MidiFileProperties newProperties = new MidiFileProperties();
            TrackReader        reader        = new TrackReader();
            List <Track>       newTracks     = new List <Track>();

            newProperties.Read(stream);

            float percentage;

            for (int i = 0; i < newProperties.TrackCount && !loadWorker.CancellationPending; i++)
            {
                reader.Read(stream, i);
                newTracks.Add(reader.Track);
                if (timeSignatureNumerator == -1)
                {
                    timeSignatureNumerator = reader.TimeSignatureNumerator;
                }
                if (timeSignatureDenominator == -1)
                {
                    timeSignatureDenominator = reader.TimeSignatureDenominator;
                }

                percentage = (i + 1f) / newProperties.TrackCount;

                loadWorker.ReportProgress((int)(100 * percentage));
            }

            if (loadWorker.CancellationPending)
            {
                e.Cancel = true;
            }
            else
            {
                properties = newProperties;
                tracks     = newTracks;
            }
        }
    }
Example #14
0
        public void MontrealDataIntegration()
        {
            var trackData   = TrackFactsHelper.GetTrackMontreal();
            var trackReader = new TrackReader();
            var track       = trackReader.Read(trackData.Path);

            track.TrackSections.Count.Should().Be(79, "contains 78 normal sections and 1 with only command data");
            track.PitLaneSections.Count.Should().Be(26);
            track.ComputerCarLineSegments.Count.Should().Be(48);
            track.ObjectShapes.Count.Should().Be(31);
            track.ObjectSettings.Count.Should().Be(153);

            track.ComputerCarLineHeader.LineStartX.Should().Be(4);
            track.ComputerCarSetup.FrontWing.Should().Be(11);

            track.TrackSettings.LapCount.Should().Be(69);
        }
Example #15
0
        public void TrackReader_ReadFile_ExpectEqual()
        {
            var dataRead = TrackReader.Read(File.ReadAllLines(@"Railway/test-track.txt"));
            var expected = new List <(char chr, int X, int Y)>
            {
                ('[', 0, 0),
                ('1', 1, 0),
                ('-', 2, 0),
                ('<', 3, 0),
                ('>', 4, 0),
                (']', 5, 0),
                ('/', 6, 0),
                ('\\', 7, 0),
                ('=', 9, 0),
            };

            Assert.Equal(expected, dataRead);
        }
Example #16
0
        public void AddsMainRouteCorrectly()
        {
            // Arrange
            var p1 = new Waypoint("P1", 0.0, 0.0);
            var p2 = new Waypoint("P2", 5.0, 5.0);

            var wptList = new WaypointList();

            wptList.AddWaypoint(p1);
            wptList.AddWaypoint(p2);

            var reader = new TrackReader <PacificTrack>(
                wptList,
                new AirportManager());

            // Act
            var nodes = reader.Read(
                new PacificTrack(
                    PacotDirection.Westbound,
                    "A",
                    "",
                    "",
                    "",
                    RouteString.From("P1", "P2"),
                    new[] { RouteString.Empty },
                    new[] { RouteString.Empty },
                    new LatLon(0.0, 0.0),
                    new LatLon(0.0, 0.0)));

            // Assert
            var route = nodes.MainRoute;

            Assert.AreEqual(2, route.Count);

            var n = route.First.Value;

            Assert.IsTrue(n.Waypoint.Equals(p1));
            Assert.IsTrue(n.Neighbor.Airway == "DCT" &&
                          n.Neighbor.Distance == p1.Distance(p2));
            Assert.IsTrue(route.LastWaypoint.Equals(p2));
        }