Ejemplo n.º 1
0
        public void Read_MontrealTrack_HasExpectedBehaviorData()
        {
            var trackData = TrackFactsHelper.GetTrackMontreal();

            using (var reader = new BinaryReader(MemoryStreamProvider.Open(trackData.Path)))
            {
                var settings = TrackSettingsReader.Read(reader, trackData.KnownComputerCarBehaviorStart);

                settings.LapCount.Should().Be(69);
            }
        }
Ejemplo n.º 2
0
        public void Montreal_ObjectShapes()
        {
            var trackData = TrackFactsHelper.GetTrackMontreal();

            using (var reader = new BinaryReader(MemoryStreamProvider.Open(trackData.Path)))
            {
                var objects = ObjectShapesReader.Read(reader, trackData.KnownOffsets.ObjectData);

                objects.Count.Should().Be(31);
                objects.First().AllData.Length.Should().Be(596);
                objects.Last().AllData.Length.Should().Be(308);
            }
        }
Ejemplo n.º 3
0
        public void Read_MontrealTrack_HasExpectedData()
        {
            var trackData = TrackFactsHelper.GetTrackMontreal();

            using (var reader = new BinaryReader(MemoryStreamProvider.Open(trackData.Path)))
            {
                var result = ComputerCarDataReader.Read(reader, trackData.KnownOffsets.ComputerCarSetup);
                var data   = result.ComputerCarData;

                data.GripFactor.Should().Be(16384);
                data.Acceleration.Should().Be(16384);
                data.AirResistance.Should().Be(16384);
                data.FuelLoad.Should().Be(5203);
            }
        }
Ejemplo n.º 4
0
        public void MontrealOffsetsReader()
        {
            var trackData = TrackFactsHelper.GetTrackMontreal();

            using (var reader = new BinaryReader(MemoryStreamProvider.Open(trackData.Path)))
            {
                var offsets = OffsetReader.Read(reader);

                offsets.UnknownLong1.Should().Be(trackData.KnownOffsets.UnknownLong1);
                offsets.UnknownLong2.Should().Be(trackData.KnownOffsets.UnknownLong2);
                offsets.ChecksumPosition.Should().Be(trackData.KnownOffsets.ChecksumPosition);
                offsets.ObjectData.Should().Be(trackData.KnownOffsets.ObjectData);
                offsets.TrackData.Should().Be(trackData.KnownOffsets.TrackData);
                offsets.PitLaneData.Should().Be(trackData.KnownOffsets.PitLaneData);
            }
        }
Ejemplo n.º 5
0
        public ObjectSettingsReaderFacts()
        {
            var trackDataMontreal = TrackFactsHelper.GetTrackMontreal();

            using (var reader = new BinaryReader(MemoryStreamProvider.Open(trackDataMontreal.Path)))
            {
                _montrealObjectSettings = TrackObjectSettingsReader.Read(reader,
                                                                         trackDataMontreal.KnownOffsets.ObjectData, trackDataMontreal.KnownOffsets.TrackData);
            }

            var trackDataSilverstone = TrackFactsHelper.GetTrackSilverstone();

            using (var reader = new BinaryReader(MemoryStreamProvider.Open(trackDataSilverstone.Path)))
            {
                _silverstoneObjectSettings = TrackObjectSettingsReader.Read(reader,
                                                                            trackDataSilverstone.KnownOffsets.ObjectData, trackDataSilverstone.KnownOffsets.TrackData);
            }
        }
Ejemplo n.º 6
0
        public void MontrealBestLine()
        {
            var trackData = TrackFactsHelper.GetTrackMontreal();

            using (var reader = new BinaryReader(MemoryStreamProvider.Open(trackData.Path)))
            {
                var bestLines = ComputerCarLineReader.Read(reader, trackData.KnownBestLineSectionDataStart);

                bestLines.Header.LineStartX.Should().Be(4);
                bestLines.Header.LineStartXHigh.Should().Be(208);
                bestLines.Header.LineStartY.Should().Be(0);
                //bestLines.Header.LineStartYHigh.Should().Be(0);
                bestLines.Header.Unknown1.Should().Be(65354);
                bestLines.Header.Unknown2.Should().Be(0);
                bestLines.Header.Unknown3.Should().Be(0);
                bestLines.Header.Unknown4.Should().Be(0);

                var firstSegment = bestLines.Segments[0];
                firstSegment.Length.Should().Be(26);
                firstSegment.Command.Should().Be(0x50);
                firstSegment.SignScale.Should().Be(1);
                firstSegment.Radius.Should().Be(65092);

                var segment2 = bestLines.Segments[1];
                segment2.Length.Should().Be(37);
                segment2.Radius.Should().Be(0);

                var segment3 = bestLines.Segments[2];
                segment3.Correction.Should().Be(185);

                var segment6 = bestLines.Segments[5];
                segment6.Length.Should().Be(17);
                segment6.Command.Should().Be(0x70);
                segment6.Radius.Should().Be(8280);
                segment6.Sign0x70.Should().Be(0);
                segment6.Radius0x70.Should().Be(9650);

                var lastSegment = bestLines.Segments.Last();
                lastSegment.Length.Should().Be(48);
                lastSegment.Command.Should().Be(0x50);
                lastSegment.Radius.Should().Be(48032);
            }
        }
Ejemplo n.º 7
0
        public void Read_MontrealTrack_HasExpectedSetup()
        {
            var trackData = TrackFactsHelper.GetTrackMontreal();

            using (var reader = new BinaryReader(MemoryStreamProvider.Open(trackData.Path)))
            {
                var result = ComputerCarDataReader.Read(reader, trackData.KnownOffsets.ComputerCarSetup);
                var setup  = result.Setup;

                setup.FrontWing.Should().Be(11);
                setup.RearWing.Should().Be(10);
                setup.GearRatio1.Should().Be(28);
                setup.GearRatio2.Should().Be(35);
                setup.GearRatio3.Should().Be(42);
                setup.GearRatio4.Should().Be(49);
                setup.GearRatio5.Should().Be(55);
                setup.GearRatio6.Should().Be(61);
                setup.TyreCompound.Should().Be(SetupTyreCompound.C);
                setup.BrakeBalance.Should().Be(0);
            }
        }
Ejemplo n.º 8
0
        public TrackSectionReaderFacts()
        {
            var trackDataMontreal = TrackFactsHelper.GetTrackMontreal();

            using (var reader = new BinaryReader(MemoryStreamProvider.Open(trackDataMontreal.Path)))
            {
                _montrealTrackSections = TrackSectionReader.Read(reader, trackDataMontreal.KnownTrackSectionDataStart,
                                                                 new TrackSectionCommandOptions {
                    Command0xC5Length = 7
                });
            }

            var trackDataSilverstone = TrackFactsHelper.GetTrackSilverstone();

            using (var reader = new BinaryReader(MemoryStreamProvider.Open(trackDataSilverstone.Path)))
            {
                _silverstoneTrackSections = TrackSectionReader.Read(reader, trackDataSilverstone.KnownTrackSectionDataStart,
                                                                    new TrackSectionCommandOptions {
                    Command0xC5Length = 8
                });
            }
        }
Ejemplo n.º 9
0
        public void MontrealHeader()
        {
            var trackData = TrackFactsHelper.GetTrackMontreal();

            using (var reader = new BinaryReader(MemoryStreamProvider.Open(trackData.Path)))
            {
                var header = TrackSectionHeaderReader.Read(reader, trackData.KnownOffsets.TrackData);

                header.FirstSectionAngle.Should().Be(65354);
                header.FirstSectionHeight.Should().Be(0);
                header.TrackCenterX.Should().Be(13000);
                header.TrackCenterZ.Should().Be(1328);
                header.TrackCenterY.Should().Be(-4299);
                header.StartWidth.Should().Be(1203);

                header.PoleSide.Should().Be(TrackSide.Left);
                header.PitsSide.Should().Be(TrackSide.Left);

                header.CommandLength0xC5.Should().Be(7);

                header.LeftVergeStartWidth.Should().Be(8);
                header.RightVergeStartWidth.Should().Be(20);
            }
        }