XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

AutoMiningScript

【SpaceEngineer】全自动挖矿脚本

公开
关注 0 Fork 0 Star 0
UTF-8
using System;
using System.Globalization;
using VRage.Game.ModAPI.Ingame.Utilities;
using Xunit;
using P = AutoMiningScript.Program;

namespace AutoMiningScript.Tests
{
    public class LocalizationTests
    {
        [Fact]
        public void LocalizedDiagnosticsKeepConfigurationFieldAndInvariantNumbers()
        {
            var original = CultureInfo.CurrentCulture;
            try
            {
                CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("de-DE");
                var settings = new P.Settings("[Flight]\nCruiseSpeed=100", "miner", "miner-01");
                var error = Assert.Throws<ArgumentException>(() => settings.Number("Flight", "CruiseSpeed", 15, .5, 95));
                Assert.Equal(P.L.F(P.L.CommonConfigRange,P.Settings.SectionName("Flight"),P.Settings.ParameterName("CruiseSpeed"),.5,95), error.Message);
                Assert.Contains("0.5", error.Message);
                Assert.DoesNotContain("0,5", error.Message);
            }
            finally { CultureInfo.CurrentCulture = original; }
        }

        [Theory]
        [InlineData("miner")]
        [InlineData("fleet")]
        [InlineData("marker")]
        [InlineData("watchdog")]
        public void LocalizedTemplateUsesLocalizedDefaultsAndReadsStableInternalKeys(string role)
        {
            var text = P.Settings.Template(role,"unit-01");
            Assert.Contains("XFE AMS",text);
            var config = new P.Settings(text,role,"unused");
            Assert.Equal("unit-01",config.Id);
            Assert.Equal(P.Settings.DefaultFleetId,config.FleetId);
            Assert.Equal(P.Settings.DefaultBaseId,config.BaseId);
            Assert.Equal("Iron,Nickel,Cobalt",config.Text("Mining","TargetOres",""));
            Assert.Equal(P.Settings.DefaultName("AMS Docks"),config.Text("Fleet","DockGroup",""));
            Assert.Equal(.25,config.Number("Energy","ReturnBattery",0,0,1));
        }

        [Fact]
        public void LabelsDoNotReplaceWireOrSavedStateIdentifiers()
        {
            var job = new P.Job { Id="job-01",Kind=P.JobKind.Manual,Outcome="Complete",TargetOre="Iron" };
            var ini = new MyIni(); job.Write(ini,"job");
            var restored = P.Job.Read(ini,"job");
            Assert.Equal("Complete",restored.Outcome);
            Assert.Equal("Iron",restored.TargetOre);
            var telemetry = new P.Telemetry { Id="unit-01",State=P.FlightState.Drilling,OreSummary="Iron:12" };
            Assert.Equal((int)P.FlightState.Drilling,(int)P.Data.ReadLong(telemetry.ToIni(),"telemetry","State"));
            Assert.Equal(telemetry.State,P.Telemetry.FromIni(telemetry.ToIni()).State);
            Assert.Equal("Iron:12",P.Telemetry.FromIni(telemetry.ToIni()).OreSummary);
        }
    }
}