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

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
using System.Text.Json;
using XFEEDToolBox.Core.Galaxy;
using XFEExtension.NetCore.XUnit.Attributes;

namespace XFEEDToolBox.Test;

[TestFixture]
public sealed class GalaxyMissionMarkerStylesTests
{
    [Test] public void PublishedFullAddressSetsKeepActiveAndCompletedMissionIconsAtTheSameSystem()
    {
        const long shared=9007199254740993;
        var result=GalaxyMissionMarkerStyles.BySystem([
            new(11,[shared,42,shared],42){MarkerType=4},
            new(12,[shared,43],43){MarkerType=45},
            new(13,[],99){MarkerType=45},
            new(14,[100],100){MarkerType=7}]);
        Check.That(result[shared].SequenceEqual([4,45]));Check.That(result[42].SequenceEqual([4])&&result[43].SequenceEqual([45]));
        Check.That(!result.ContainsKey(99)&&!result.ContainsKey(100));
        Check.Equal("GM_DisplayOptions_Missions",GalaxyMissionMarkerStyles.OriginalFrameFor(4));Check.Equal("GM_Marker_MissionComplete",GalaxyMissionMarkerStyles.OriginalFrameFor(45));Check.That(GalaxyMissionMarkerStyles.OriginalFrameFor(7) is null);
    }
    [Test] public void MissionStylesCannotSurviveDiskAccountOrProcessChangesAndExplicitRefreshReplacesThem()
    {
        var style=new GalaxyNativeAccountMarkerState("F1",7,["mission"]){MissionMarkerTypes=[4,45]};
        var data=new GalaxySystemData{AccountFid="F1",PersonalMarkers=["mission"],NativeAccountMarkers=style};
        var json=JsonSerializer.Serialize(data);Check.That(!json.Contains("MissionMarkerTypes")&&!json.Contains("NativeAccountMarkers"));
        var restored=JsonSerializer.Deserialize<GalaxySystemData>(json)!;Check.That(restored.NativeAccountMarkers is null&&restored.PersonalMarkers!.Contains("mission"));
        Check.That(data.ForAccount("F2").NativeAccountMarkers is null&&data.ForNativeContext("F1",8,null).NativeAccountMarkers is null);
        var next=data.Merge(new(){NativeAccountMarkers=new("F1",7,["mission"]){MissionMarkerTypes=[45]}});Check.That(next.NativeAccountMarkers!.MissionMarkerTypes.SequenceEqual([45]));
        Check.That(ReferenceEquals(data,data.Merge(new(){NativeAccountMarkers=style})));
    }
}