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 class GalaxyCommodityTreeTests
{
    [Test] public void ObservedOriginalTokensPlaceCommodityInItsActualParentWithoutGuessingUnknownNames()
    {
        var groups=GalaxyCommodityTree.Build([new("gold","Gold"),new("newgoldenmedicine","A new golden medicine")]);
        Check.Equal(386,GalaxyCommodityTree.Definitions.Count);Check.Equal(15,groups.Count(g=>g.OriginalCategory));Check.Equal(64,GalaxyCommodityTree.SourceSha256.Length);
        var gold=groups.Single(g=>g.Children.Any(c=>c.Key=="gold"));Check.Equal("metals",gold.Key);Check.Equal("金属",gold.Label);
        var unknown=groups.Single(g=>g.Children.Any(c=>c.Key=="newgoldenmedicine"));Check.That(!unknown.OriginalCategory);Check.Equal("分类尚未确认",unknown.Label);
        Check.That(groups.SelectMany(g=>g.Children).Select(c=>c.Key).Distinct().Count()==groups.Sum(g=>g.Children.Count));
    }
    [Test] public void ParentTogglePreservesOtherCategoriesAndIndeterminateSelectionIsNotEmptyOrAll()
    {
        var children=new[]{new GalaxyFilterChoice("gold","Gold"),new("silver","Silver")};var all=new[]{"gold","silver","water","unknown"};
        Check.Equal((bool?)true,GalaxyCommodityTree.Selected(null,children));Check.Equal((bool?)false,GalaxyCommodityTree.Selected(new HashSet<string>(),children));Check.Equal((bool?)null,GalaxyCommodityTree.Selected(new HashSet<string>{"gold"},children));
        var deselected=GalaxyCommodityTree.SelectGroup(null,all,children.Select(c=>c.Key),false);Check.That(deselected.SetEquals(new[]{"water","unknown"}));
        var partial=GalaxyCommodityTree.SelectGroup(new HashSet<string>{"water","gold"},all,children.Select(c=>c.Key),true);Check.That(partial.SetEquals(new[]{"water","gold","silver"}));
        var empty=GalaxyCommodityTree.SelectGroup(new HashSet<string>{"gold","silver"},all,children.Select(c=>c.Key),false);Check.Equal(0,empty.Count);
    }
    [Test] public void HistoricalGroupsNeverAddCommoditiesAbsentFromTheActualCache()
    {
        var actual=new[]{new GalaxyFilterChoice("gold","Gold"),new("water","Water"),new("unclassifiedroutecommodity","Actual cache item")};
        var groups=GalaxyCommodityTree.Build(actual,includeDefinitions:false);
        Check.That(groups.SelectMany(g=>g.Children).Select(c=>c.Key).ToHashSet().SetEquals(actual.Select(c=>c.Key)));
        Check.Equal("metals",groups.Single(g=>g.Children.Any(c=>c.Key=="gold")).Key);
        Check.Equal(0,GalaxyCommodityTree.Build([],includeDefinitions:false).Count);
    }
}