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

AutoMiningScript

【SpaceEngineer】全自动挖矿脚本

公开
关注 0 Fork 0 Star 0
UTF-8
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());
        }
    }
}