Files
ClaudeDo/tests/ClaudeDo.Worker.Tests/Runner/SkillResolutionTests.cs
T

45 lines
1.4 KiB
C#

using ClaudeDo.Worker.Runner;
using Xunit;
namespace ClaudeDo.Worker.Tests.Runner;
public class SkillResolutionTests
{
[Fact]
public void Null_and_empty_sources_contribute_nothing()
=> Assert.Empty(TaskRunner.UnionSkillNames(null, "", " ", "[]"));
[Fact]
public void Single_source_is_returned_in_order()
=> Assert.Equal(["a", "b"], TaskRunner.UnionSkillNames("""["a","b"]"""));
[Fact]
public void Unions_across_task_list_global_levels()
{
var result = TaskRunner.UnionSkillNames("""["a"]""", """["b"]""", """["c"]""");
Assert.Equal(["a", "b", "c"], result);
}
[Fact]
public void Dedups_ordinal_preserving_first_occurrence_order()
{
var result = TaskRunner.UnionSkillNames("""["a","b"]""", """["b","c"]""", """["a","d"]""");
Assert.Equal(["a", "b", "c", "d"], result);
}
[Fact]
public void Dedup_is_case_sensitive_ordinal()
{
var result = TaskRunner.UnionSkillNames("""["Foo"]""", """["foo"]""");
Assert.Equal(["Foo", "foo"], result);
}
[Fact]
public void Malformed_json_is_ignored_not_thrown()
=> Assert.Equal(["a"], TaskRunner.UnionSkillNames("not json", """["a"]"""));
[Fact]
public void Blank_entries_within_array_are_skipped()
=> Assert.Equal(["a"], TaskRunner.UnionSkillNames("""["a", "", " ", null]"""));
}