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().Value); TestRig.SetBase(program,"IGC",new Stub() .Set("UnicastListener",new Stub().Value) .Method("RegisterBroadcastListener",a=>new Stub().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()); } } }