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