Exemple #1
0
        public void BattleMechEngineTypeCheck()
        {
            string           sFilePath        = AtlasTestFile;
            BattleMechDesign battleMechDesign = MTFReader.ReadBattleMechDesignFile(sFilePath);

            Assert.Equal("Standard", battleMechDesign.Engine.EngineType);
        }
Exemple #2
0
        public void BattleMechTonnageCheck()
        {
            string           sFilePath        = AtlasTestFile;
            BattleMechDesign battleMechDesign = MTFReader.ReadBattleMechDesignFile(sFilePath);

            Assert.Equal(100, battleMechDesign.Tonnage);
        }
Exemple #3
0
        public void MassCheckMegaMekFiles()
        {
            string[] sFiles     = Utilities.GetFiles($"{Utilities.DataDirectory}{Path.DirectorySeparatorChar}megamek-master{Path.DirectorySeparatorChar}megamek{Path.DirectorySeparatorChar}data{Path.DirectorySeparatorChar}mechfiles{Path.DirectorySeparatorChar}mechs", "*.mtf");
            int      iLoadCount = 0;

            foreach (string sFile in sFiles)
            {
                try
                {
                    BattleMechDesign bmd = MTFReader.ReadBattleMechDesignFile(sFile);
                    double           dComputedTonnage = bmd.ComputedTonnage;
                    if (bmd.Tonnage < dComputedTonnage || (bmd.Tonnage - dComputedTonnage > 0.5 && !Utilities.IsUndertonnageDesign(bmd)))
                    {
                        _outputHelper.WriteLine($"{bmd.Variant} {bmd.Model} rated at {bmd.Tonnage}, computed as {bmd.ComputedTonnage}");
                        _outputHelper.WriteLine(bmd.TonnageLedger);
                    }
                    else
                    {
                        iLoadCount++;
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception($"Error loading {sFile}", ex);
                }
            }
            _outputHelper.WriteLine($"Checked {sFiles.Length} MTF files.");
            Assert.Equal(sFiles.Length, iLoadCount);
        }
Exemple #4
0
        public void BattleMechEngineTonnageCheck()
        {
            string           sFilePath        = AtlasTestFile;
            BattleMechDesign battleMechDesign = MTFReader.ReadBattleMechDesignFile(sFilePath);

            Assert.Equal(300, battleMechDesign.Engine.EngineRating);
        }
Exemple #5
0
        public void BattleMechModelNameCheck()
        {
            string           sFilePath        = AtlasTestFile;
            BattleMechDesign battleMechDesign = MTFReader.ReadBattleMechDesignFile(sFilePath);

            Assert.Equal("Atlas", battleMechDesign.Model);
        }
Exemple #6
0
        public void BattleMechVariantNameCheck()
        {
            string           sFilePath        = AtlasTestFile;
            BattleMechDesign battleMechDesign = MTFReader.ReadBattleMechDesignFile(sFilePath);

            Assert.Equal("AS7-D", battleMechDesign.Variant);
        }
Exemple #7
0
        public void TestMegaMekFiles()
        {
            string[] sFiles = Utilities.GetFiles($"{Utilities.DataDirectory}{Path.DirectorySeparatorChar}megamek-master{Path.DirectorySeparatorChar}megamek{Path.DirectorySeparatorChar}data{Path.DirectorySeparatorChar}mechfiles{Path.DirectorySeparatorChar}mechs", "*.mtf");

            int iLoadCount = 0;

            foreach (string sFile in sFiles)
            {
                try
                {
                    BattleMechDesign bmd = MTFReader.ReadBattleMechDesignFile(sFile);

                    iLoadCount++;
                }
                catch (Exception ex)
                {
                    string sText = "";
                    while (ex != null)
                    {
                        sText += ex.Message;
                        sText += "/";
                        ex     = ex.InnerException;
                    }
                    sText += Path.GetFileNameWithoutExtension(sFile);
                    _outputHelper.WriteLine(sText);
                }
            }

            Assert.Equal(sFiles.Length, iLoadCount);
        }
Exemple #8
0
        public void CheckGOL1HStructure()
        {
            BattleMechDesign designGoliath = MTFReader.ReadBattleMechDesignFile(GoliathTestFile);

            Element element = ConvertBattletechObject.ToAlphaStrike(designGoliath);

            Assert.Equal(6, element.MaxStructure);
        }
Exemple #9
0
        public void GoliathTonnageCheck()
        {
            string           sFilePath        = GoliathTestFile;
            BattleMechDesign battleMechDesign = MTFReader.ReadBattleMechDesignFile(sFilePath);

            _outputHelper.WriteLine(battleMechDesign.TonnageLedger);
            Assert.Equal(80, battleMechDesign.ComputedTonnage);
        }
Exemple #10
0
        public void CheckAS7DStructure()
        {
            BattleMechDesign designAtlas = MTFReader.ReadBattleMechDesignFile(AtlasTestFile);

            Element element = ConvertBattletechObject.ToAlphaStrike(designAtlas);

            Assert.Equal(8, element.MaxStructure);
        }
Exemple #11
0
        public void CheckAS7DMovement()
        {
            BattleMechDesign designAtlas = MTFReader.ReadBattleMechDesignFile(AtlasTestFile);

            Element      element = ConvertBattletechObject.ToAlphaStrike(designAtlas);
            MovementMode m       = element.GetMovementMode("");

            Assert.Equal(3, m.Points);
        }
Exemple #12
0
        public void BattlemechCTISCheck()
        {
            string           sFilePath        = AtlasTestFile;
            BattleMechDesign battleMechDesign = MTFReader.ReadBattleMechDesignFile(sFilePath);

            StructureLocation structure = GetBattleMechStructureLocation(battleMechDesign, "CT");

            Assert.Equal(31, structure.MaxStructurePoints);
        }
Exemple #13
0
        public void CheckGOL1HMovement()
        {
            BattleMechDesign designGoliath = MTFReader.ReadBattleMechDesignFile(GoliathTestFile);

            Element      element = ConvertBattletechObject.ToAlphaStrike(designGoliath);
            MovementMode m       = element.GetMovementMode("");

            Assert.Equal(4, m.Points);
        }
Exemple #14
0
        public void BattlemechRLLISCheck()
        {
            string           sFilePath        = GoliathTestFile;
            BattleMechDesign battleMechDesign = MTFReader.ReadBattleMechDesignFile(sFilePath);

            StructureLocation structure = GetBattleMechStructureLocation(battleMechDesign, "RLL");

            Assert.Equal(17, structure.MaxStructurePoints);
        }
Exemple #15
0
        public void BattleMechRLArmorCheck()
        {
            string           sFilePath        = AtlasTestFile;
            BattleMechDesign battleMechDesign = MTFReader.ReadBattleMechDesignFile(sFilePath);

            ArmorFacing Facing = GetBattleMechArmorFacing(battleMechDesign, "RL");

            Assert.Equal(41, Facing.ArmorPoints);
        }
Exemple #16
0
        public void ReadGoliathFile()
        {
            string           sFilePath        = GoliathTestFile;
            BattleMechDesign battleMechDesign = MTFReader.ReadBattleMechDesignFile(sFilePath);

            Assert.Equal("Goliath", battleMechDesign.Model);
            Assert.Equal("GOL-1H", battleMechDesign.Variant);
            Assert.Equal(80, battleMechDesign.Tonnage);
            Assert.Equal(320, battleMechDesign.Engine.EngineRating);
            Assert.Equal("Standard", battleMechDesign.Engine.EngineType);
        }
Exemple #17
0
        public void ReadAtlasFile()
        {
            string           sFilePath        = AtlasTestFile;
            BattleMechDesign battleMechDesign = MTFReader.ReadBattleMechDesignFile(sFilePath);

            Assert.Equal("Atlas", battleMechDesign.Model);
            Assert.Equal("AS7-D", battleMechDesign.Variant);
            Assert.Equal(100, battleMechDesign.Tonnage);
            Assert.Equal(300, battleMechDesign.Engine.EngineRating);
            Assert.Equal("Standard", battleMechDesign.Engine.EngineType);
        }
Exemple #18
0
        public static IEnumerable <object[]> GetBVTestCases()
        {
            List <object[]> retval = new List <object[]>();
            //Load Variants
            string sDirectory = $".{Path.DirectorySeparatorChar}TestFiles{Path.DirectorySeparatorChar}MassTesting{Path.DirectorySeparatorChar}";

            if (!Directory.Exists(sDirectory))
            {
                sDirectory = $".{Path.DirectorySeparatorChar}TestFiles{Path.DirectorySeparatorChar}";
            }
            string[] mtfFiles = Utilities.GetFiles(sDirectory, "*.mtf");
            Dictionary <string, BattleTechNET.TotalWarfare.BattleMechDesign> designs = new Dictionary <string, BattleTechNET.TotalWarfare.BattleMechDesign>();

            foreach (string mtfFile in mtfFiles)
            {
                try
                {
                    BattleMechDesign design = MTFReader.ReadBattleMechDesignFile(File.OpenRead(mtfFile));


                    designs.Add($"{design.Model} {design.Variant}", design);
                }
                catch (Exception ex)
                {
                }
            }


            //Load Test Data Points
            string    sTestCaseFileName = $".{System.IO.Path.DirectorySeparatorChar}TestFiles{System.IO.Path.DirectorySeparatorChar}BVTestCases.json";
            string    sJSONFile         = System.IO.File.ReadAllText(sTestCaseFileName);
            BVTestSet testSet           = JsonSerializer.Deserialize <BVTestSet>(sJSONFile);


            foreach (BVDataPoint dataPoint in testSet.testCases)
            {
                if (designs.ContainsKey(dataPoint.ToString()))
                {
                    retval.Add(new object[] { designs[dataPoint.ToString()], dataPoint });
                }
                //Commented out to allow Github Actions to not error on this test.
                //else
                //throw new Exception($"Could not find variant {dataPoint.ToString()}");
            }


            return(retval);
        }
Exemple #19
0
        public void MassCheckMixedTechbaseMegaMekFiles()
        {
            string[] sFiles     = Utilities.GetFiles($"{Utilities.DataDirectory}{Path.DirectorySeparatorChar}megamek-master{Path.DirectorySeparatorChar}megamek{Path.DirectorySeparatorChar}data{Path.DirectorySeparatorChar}mechfiles{Path.DirectorySeparatorChar}mechs", "*.mtf");
            int      iLoadCount = 0;
            int      iMixedTechBaseMechCount = 0;

            if (sFiles == null)
            {
                return;
            }
            foreach (string sFile in sFiles)
            {
                try
                {
                    BattleMechDesign bmd = MTFReader.ReadBattleMechDesignFile(sFile);
                    if (bmd.TechnologyBase == BattleTechNET.Common.TECHNOLOGY_BASE.BOTH)
                    {
                        double dComputedTonnage = bmd.ComputedTonnage;
                        if (bmd.Tonnage < dComputedTonnage || (bmd.Tonnage - dComputedTonnage > 0.5 && !Utilities.IsUndertonnageDesign(bmd)))
                        {
                            _outputHelper.WriteLine($"{bmd.Variant} {bmd.Model} rated at {bmd.Tonnage}, computed as {bmd.ComputedTonnage}");
                            _outputHelper.WriteLine($"Located at {sFile}");
                            if (bmd.Tonnage < dComputedTonnage)
                            {
                                _outputHelper.WriteLine("Computed tonnage exceeds nominal tonnage.");
                            }
                            if (bmd.Tonnage - dComputedTonnage > 0.5)
                            {
                                _outputHelper.WriteLine("Computed tonnage more than 0.5 tons below nominal tonnage.");
                            }
                            _outputHelper.WriteLine(bmd.TonnageLedger);
                        }
                        else
                        {
                            iLoadCount++;
                        }
                        iMixedTechBaseMechCount++;
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception($"Error loading {sFile}", ex);
                }
            }
            _outputHelper.WriteLine($"Checked {sFiles.Length} MTF files.");
            Assert.Equal(iMixedTechBaseMechCount, iLoadCount);
        }
Exemple #20
0
        public void CheckAS7DREARAbility()
        {
            BattleMechDesign designAtlas = MTFReader.ReadBattleMechDesignFile(AtlasTestFile);

            Element        element   = ConvertBattletechObject.ToAlphaStrike(designAtlas);
            SpecialAbility abilityAC = null;

            foreach (SpecialAbility ability in element.SpecialAbilities)
            {
                if (ability.Code.Equals("REAR"))
                {
                    abilityAC = ability;
                }
            }

            Assert.NotNull(abilityAC);

            Assert.Equal("REAR1/1", abilityAC.ToString());
        }
Exemple #21
0
        public void CheckGOL1HLRMAbility()
        {
            BattleMechDesign designGoliath = MTFReader.ReadBattleMechDesignFile(GoliathTestFile);

            Element        element   = ConvertBattletechObject.ToAlphaStrike(designGoliath);
            SpecialAbility abilityAC = null;

            foreach (SpecialAbility ability in element.SpecialAbilities)
            {
                if (ability.Code.Equals("LRM"))
                {
                    abilityAC = ability;
                }
            }

            Assert.NotNull(abilityAC);

            Assert.Equal("LRM1/1/1", abilityAC.ToString());
        }
Exemple #22
0
        public void TestCount()
        {
            string[] sFiles = Utilities.GetFiles($"{Utilities.DataDirectory}{Path.DirectorySeparatorChar}megamek-master{Path.DirectorySeparatorChar}megamek{Path.DirectorySeparatorChar}data{Path.DirectorySeparatorChar}mechfiles{Path.DirectorySeparatorChar}mechs", "*.mtf");

            int iLoadCount = 0;
            int iFileCount = 0;

            foreach (string sFile in sFiles)
            {
                try
                {
                    iFileCount++;
                    BattleMechDesign bmd = MTFReader.ReadBattleMechDesignFile(sFile);

                    iLoadCount++;
                }
                catch (Exception ex)
                {
                    _outputHelper.WriteLine($"{sFile}: {ex.Message}");
                }
            }

            Assert.Equal(sFiles.Length, iLoadCount);
        }
Exemple #23
0
        public void BattlemechAtlasWeaponsLoaded()
        {
            string           sFilePath        = AtlasTestFile;
            BattleMechDesign battleMechDesign = MTFReader.ReadBattleMechDesignFile(sFilePath);

            bool bMLaserCT1 = false;
            bool bMLaserCT2 = false;
            bool bAC20RT    = false;
            bool bLRM20LT   = false;
            bool bSRM6LT    = false;
            bool bMLaserRA1 = false;
            bool bMLaserLA1 = false;

            foreach (UnitComponent componentWeapon in battleMechDesign.Components)
            {
                if (BattleTechNET.Common.Utilities.IsSynonymFor(componentWeapon.HitLocation.Name, "Center Torso") &&
                    BattleTechNET.Common.Utilities.IsSynonymFor(componentWeapon.Component, "Medium Laser") &&
                    bMLaserCT1 == true)
                {
                    bMLaserCT2 = true;
                }
                if (BattleTechNET.Common.Utilities.IsSynonymFor(componentWeapon.HitLocation.Name, "Center Torso") &&
                    BattleTechNET.Common.Utilities.IsSynonymFor(componentWeapon.Component, "Medium Laser") &&
                    bMLaserCT1 == false)
                {
                    bMLaserCT1 = true;
                }
                if (BattleTechNET.Common.Utilities.IsSynonymFor(componentWeapon.HitLocation.Name, "Right Torso") &&
                    BattleTechNET.Common.Utilities.IsSynonymFor(componentWeapon.Component, "AC/20"))
                {
                    bAC20RT = true;
                }
                if (BattleTechNET.Common.Utilities.IsSynonymFor(componentWeapon.HitLocation.Name, "Left Torso") &&
                    BattleTechNET.Common.Utilities.IsSynonymFor(componentWeapon.Component, "LRM20"))
                {
                    bLRM20LT = true;
                }
                if (BattleTechNET.Common.Utilities.IsSynonymFor(componentWeapon.HitLocation.Name, "Left Torso") &&
                    BattleTechNET.Common.Utilities.IsSynonymFor(componentWeapon.Component, "SRM6"))
                {
                    bSRM6LT = true;
                }
                if (BattleTechNET.Common.Utilities.IsSynonymFor(componentWeapon.HitLocation.Name, "Right Arm") &&
                    BattleTechNET.Common.Utilities.IsSynonymFor(componentWeapon.Component, "Medium Laser"))
                {
                    bMLaserRA1 = true;
                }
                if (BattleTechNET.Common.Utilities.IsSynonymFor(componentWeapon.HitLocation.Name, "Left Arm") &&
                    BattleTechNET.Common.Utilities.IsSynonymFor(componentWeapon.Component, "Medium Laser"))
                {
                    bMLaserLA1 = true;
                }
            }



            Assert.True(bMLaserCT1);
            Assert.True(bMLaserCT2);
            Assert.True(bAC20RT);
            Assert.True(bLRM20LT);
            Assert.True(bSRM6LT);
            Assert.True(bMLaserRA1);
            Assert.True(bMLaserLA1);
        }
Exemple #24
0
        public void ConvertGOL1H()
        {
            BattleMechDesign designGoliath = MTFReader.ReadBattleMechDesignFile(GoliathTestFile);

            Element element = ConvertBattletechObject.ToAlphaStrike(designGoliath);
        }
Exemple #25
0
        public void ConvertAS7D()
        {
            BattleMechDesign atlasDesign = MTFReader.ReadBattleMechDesignFile(AtlasTestFile);

            Element element = ConvertBattletechObject.ToAlphaStrike(atlasDesign);
        }