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("",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);
}
}
}
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("",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);
}
}
}