using Sandbox.ModAPI.Ingame;
using VRage.Game.ModAPI.Ingame.Utilities;
using Xunit;
using P = AutoMiningScript.Program;
namespace AutoMiningScript.Tests
{
public class MarkerLocalizationTests
{
static P.MarkerController Marker()
{
var program = TestRig.Program();
TestRig.SetBase(program, "GridTerminalSystem", new Stub<IMyGridTerminalSystem>().Value);
TestRig.SetBase(program,"IGC",new Stub<IMyIntergridCommunicationSystem>()
.Set("UnicastListener",new Stub<IMyUnicastListener>().Value)
.Method("RegisterBroadcastListener",a=>new Stub<IMyBroadcastListener>().Value).Value);
program.Bus=new P.Wire(program);
return new P.MarkerController(program);
}
[Fact]
public void ManualRestoreUsesInvariantArgumentsAndTheInstalledLanguage()
{
var saved = new MyIni();
saved.Set("marker", "Status", "Manual");
saved.Set("marker", "Width", "12.5");
saved.Set("marker", "Height", "6");
saved.Set("marker", "Depth", "40");
saved.Set("marker", "Entry", "0,0,0");
saved.Set("marker", "Last", "Obsolete text from another language / 旧版提示");
var marker = Marker();
marker.Load(saved);
string localized = P.L.F(P.L.FleetMarkerSubmitted, "12.5", "6", "40", "0,0,0");
Assert.Contains(localized, marker.Diagnostics);
Assert.DoesNotContain("Obsolete text", marker.Diagnostics);
var roundTrip = new MyIni();
marker.Save(roundTrip);
Assert.Equal("Manual", roundTrip.Get("marker", "Status").ToString());
Assert.Equal("12.5", roundTrip.Get("marker", "Width").ToString());
Assert.Equal("6", roundTrip.Get("marker", "Height").ToString());
Assert.Equal("40", roundTrip.Get("marker", "Depth").ToString());
Assert.Equal("0,0,0", roundTrip.Get("marker", "Entry").ToString());
Assert.Equal(localized, roundTrip.Get("marker", "Last").ToString());
}
[Fact]
public void SurveyRestoreRebuildsTheMessageWithoutTranslatingItsStatusToken()
{
var saved = new MyIni();
saved.Set("marker", "Status", "Survey");
saved.Set("marker", "Last", "Obsolete survey message");
var marker = Marker();
marker.Load(saved);
Assert.Contains(P.L.FleetMarkerSurveySubmitted, marker.Diagnostics);
Assert.DoesNotContain("Obsolete survey message", marker.Diagnostics);
var roundTrip = new MyIni();
marker.Save(roundTrip);
Assert.Equal("Survey", roundTrip.Get("marker", "Status").ToString());
Assert.Equal(P.L.FleetMarkerSurveySubmitted, roundTrip.Get("marker", "Last").ToString());
}
[Fact]
public void LegacyPresentationOnlyStorageReturnsSafeLocalizedGuidance()
{
var saved = new MyIni();
saved.Set("marker", "Last", "Obsolete text without stable status");
var marker = Marker();
marker.Load(saved);
Assert.Contains(P.L.FleetMarkerGuidance, marker.Diagnostics);
Assert.DoesNotContain("Obsolete text", marker.Diagnostics);
var roundTrip = new MyIni();
marker.Save(roundTrip);
Assert.Equal("Guidance", roundTrip.Get("marker", "Status").ToString());
Assert.Equal(P.L.FleetMarkerGuidance, roundTrip.Get("marker", "Last").ToString());
}
}
}
using Sandbox.ModAPI.Ingame;
using VRage.Game.ModAPI.Ingame.Utilities;
using Xunit;
using P = AutoMiningScript.Program;
namespace AutoMiningScript.Tests
{
public class MarkerLocalizationTests
{
static P.MarkerController Marker()
{
var program = TestRig.Program();
TestRig.SetBase(program, "GridTerminalSystem", new Stub<IMyGridTerminalSystem>().Value);
TestRig.SetBase(program,"IGC",new Stub<IMyIntergridCommunicationSystem>()
.Set("UnicastListener",new Stub<IMyUnicastListener>().Value)
.Method("RegisterBroadcastListener",a=>new Stub<IMyBroadcastListener>().Value).Value);
program.Bus=new P.Wire(program);
return new P.MarkerController(program);
}
[Fact]
public void ManualRestoreUsesInvariantArgumentsAndTheInstalledLanguage()
{
var saved = new MyIni();
saved.Set("marker", "Status", "Manual");
saved.Set("marker", "Width", "12.5");
saved.Set("marker", "Height", "6");
saved.Set("marker", "Depth", "40");
saved.Set("marker", "Entry", "0,0,0");
saved.Set("marker", "Last", "Obsolete text from another language / 旧版提示");
var marker = Marker();
marker.Load(saved);
string localized = P.L.F(P.L.FleetMarkerSubmitted, "12.5", "6", "40", "0,0,0");
Assert.Contains(localized, marker.Diagnostics);
Assert.DoesNotContain("Obsolete text", marker.Diagnostics);
var roundTrip = new MyIni();
marker.Save(roundTrip);
Assert.Equal("Manual", roundTrip.Get("marker", "Status").ToString());
Assert.Equal("12.5", roundTrip.Get("marker", "Width").ToString());
Assert.Equal("6", roundTrip.Get("marker", "Height").ToString());
Assert.Equal("40", roundTrip.Get("marker", "Depth").ToString());
Assert.Equal("0,0,0", roundTrip.Get("marker", "Entry").ToString());
Assert.Equal(localized, roundTrip.Get("marker", "Last").ToString());
}
[Fact]
public void SurveyRestoreRebuildsTheMessageWithoutTranslatingItsStatusToken()
{
var saved = new MyIni();
saved.Set("marker", "Status", "Survey");
saved.Set("marker", "Last", "Obsolete survey message");
var marker = Marker();
marker.Load(saved);
Assert.Contains(P.L.FleetMarkerSurveySubmitted, marker.Diagnostics);
Assert.DoesNotContain("Obsolete survey message", marker.Diagnostics);
var roundTrip = new MyIni();
marker.Save(roundTrip);
Assert.Equal("Survey", roundTrip.Get("marker", "Status").ToString());
Assert.Equal(P.L.FleetMarkerSurveySubmitted, roundTrip.Get("marker", "Last").ToString());
}
[Fact]
public void LegacyPresentationOnlyStorageReturnsSafeLocalizedGuidance()
{
var saved = new MyIni();
saved.Set("marker", "Last", "Obsolete text without stable status");
var marker = Marker();
marker.Load(saved);
Assert.Contains(P.L.FleetMarkerGuidance, marker.Diagnostics);
Assert.DoesNotContain("Obsolete text", marker.Diagnostics);
var roundTrip = new MyIni();
marker.Save(roundTrip);
Assert.Equal("Guidance", roundTrip.Get("marker", "Status").ToString());
Assert.Equal(P.L.FleetMarkerGuidance, roundTrip.Get("marker", "Last").ToString());
}
}
}