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(() => 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("",config.Text("Mining","TargetOres","missing")); Assert.Equal("Iron,Cobalt,Nickel,Silicon",config.Text("Mining","PriorityOres","")); 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); } } }