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

XFEEDToolBox

【WinUI】XFE精英危险工具箱

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

namespace XFEEDToolBox.Test;

[TestFixture]
public sealed class GalaxyOriginalCommodityTests
{
    [Test] public void SavedUidResolvesOnlyThroughActualDefinitionsAndKeepsItsActualParentIndependentOfMarketIds()
    {
        var actual=new GalaxyNativeCommodityOption(671333304,"gold","Chemicals",1,true);
        var f=GalaxyOriginalSettings.Parse("<Root><RealisticView Value='1'/><ColourVisIndex Value='9'/><CommodityIndex Value='671333304'/><CommodityPriceMode Value='1'/></Root>",new(){OriginalCommodityOptions=[actual]}).Filter;
        Check.That(f.Values!.SetEquals(["gold"]));Check.Equal(GalaxyCommodityDirection.Imports,f.CommodityDirection);Check.Equal(671333304u,f.OriginalCommodityUid);
        var observed=GalaxyCommodityTree.Definitions.Single(d=>d.Symbol=="gold");Check.That(observed.Id!=actual.Uid);Check.That(GalaxyOriginalCommodities.Resolve([actual],(uint)observed.Id) is null);
        var tree=GalaxyCommodityTree.Build([],originalOptions:[actual]);Check.Equal(1,tree.Count);Check.Equal("Chemicals",tree[0].Key);Check.That(tree[0].Children.Single().Key=="gold");
        Check.That(ReferenceEquals(f,GalaxyOriginalCommodities.WithOptions(f,[actual])));
    }
    [Test] public void MissingDefinitionRetainsRawUidForLaterResolutionAndVerifiedBothModesAreRestored()
    {
        var current=new GalaxyMapFilter{Category=GalaxyFilterCategory.Commodity,Values=new HashSet<string>{"previous"},CommodityDirection=GalaxyCommodityDirection.Exports};
        var imported=GalaxyOriginalSettings.Parse("<Root><CommodityIndex Value='-268435455'/><CommodityPriceMode Value='0'/></Root>",current);
        Check.Equal(0xF0000001u,imported.Filter.OriginalCommodityUid);Check.Equal(GalaxyCommodityDirection.Both,imported.Filter.CommodityDirection);Check.That(imported.Filter.Values!.Contains("previous"));Check.That(imported.Limitations.Any(l=>l.Contains("UID"))&&!imported.Limitations.Any(l=>l.Contains("尚未完整恢复")));
        var actual=new GalaxyNativeCommodityOption(0xF0000001,"Actual item","Actual category",2,null);
        var ready=GalaxyOriginalCommodities.WithOptions(imported.Filter,[actual]);Check.That(ready.Values!.SetEquals(["actualitem"]));Check.That(ready.OriginalCommodityOptions[0].PublisherEligible is null);
        var unavailable=GalaxyOriginalCommodities.WithOptions(ready,[actual with{PublisherEligible=false}]);Check.That(unavailable.Values!.Count==0&&unavailable.OriginalCommodityUid==actual.Uid);
        Check.Equal(0,GalaxyCommodityTree.Build([],originalOptions:[actual with{PublisherEligible=false}]).Count);
        var extra=GalaxyCommodityTree.Build([new("actualitem","Actual item")],originalOptions:[actual with{PublisherEligible=false}]);Check.Equal("__notpublished",extra.Single().Key);Check.That(!extra.Single().OriginalCategory);
        var edited=ready with{OriginalCommodityUid=null,Values=new HashSet<string>{"chosen"}};Check.That(GalaxyOriginalCommodities.WithOptions(edited,[actual]).Values!.Contains("chosen"));
        Check.That(GalaxyOriginalCommodities.TrySavedUid("0",out var zero)&&zero==0);Check.That(GalaxyOriginalCommodities.TrySavedUid("4294967294",out var high)&&high==uint.MaxValue-1);Check.That(!GalaxyOriginalCommodities.TrySavedUid("-1",out _));
        Check.Equal(GalaxyCommodityDirection.Exports,GalaxyOriginalCommodities.SingleDirectionFromSavedPriceMode(2));Check.That(GalaxyOriginalCommodities.SingleDirectionFromSavedPriceMode(3) is null);
    }
}