Integrate Refactor solver sources and dual MSVC CMake builds

This commit is contained in:
KOKO\Mimi
2026-10-18 02:10:51 +09:00
parent 7ee32e5837
commit 12d51480de
218 changed files with 17842 additions and 9689 deletions
@@ -133,3 +133,41 @@ TEST(SourceTargetResolver,
EXPECT_EQ(result.GetStatus().Diagnostics()[1U].message,
"Duplicate resolved source target 10.");
}
TEST(SourceTargetResolver, OwnsNodeCandidateIndexBeforeDomainCommit) {
using fesa::SourceEntityKind;
const auto index = [] {
const std::vector<fesa::Node> nodes{{{"Part-1", 20, "0020"}, {}, {}},
{{"Part-1", 10, "0010"}, {}, {}},
{{"Part-2", 10, "0010"}, {}, {}}};
const std::vector<fesa::NodeSet> sets{
{"Ends", "Part-1", {1U, 0U}, {}},
{"Ends", "Part-2", {2U}, {}},
{"Repeated", "Part-1", {0U, 1U, 0U, 1U}, {}}};
return fesa::SourceTargetIndex::FromNodeDefinitions(nodes, sets);
}();
const fesa::SourceTargetResolver resolver{index};
const auto ends =
resolver.Resolve({SourceEntityKind::kNode, "part-1", "ENDS"});
ASSERT_TRUE(ends.HasValue());
EXPECT_EQ(Indices(ends.Value()), (std::vector<fesa::EntityIndex>{1U, 0U}));
EXPECT_EQ(ends.Value()[0U].source_id.source_label_text, "0010");
EXPECT_EQ(ends.Value()[1U].source_id.source_label_text, "0020");
const auto direct =
resolver.Resolve({SourceEntityKind::kNode, "Part-2", "10"});
ASSERT_TRUE(direct.HasValue());
EXPECT_EQ(Indices(direct.Value()), (std::vector<fesa::EntityIndex>{2U}));
ExpectFailure(index, {SourceEntityKind::kNode, "", "Ends"},
"ambiguous-source-target");
const auto repeated =
resolver.Resolve({SourceEntityKind::kNode, "Part-1", "Repeated"});
ASSERT_FALSE(repeated.HasValue());
ASSERT_EQ(repeated.GetStatus().Diagnostics().size(), 2U);
EXPECT_EQ(repeated.GetStatus().Diagnostics()[0U].message,
"Duplicate resolved source target 0020.");
EXPECT_EQ(repeated.GetStatus().Diagnostics()[1U].message,
"Duplicate resolved source target 0010.");
const auto empty = fesa::SourceTargetIndex::FromNodeDefinitions({}, {});
ExpectFailure(empty, {SourceEntityKind::kNode, "", "1"},
"unresolved-source-target");
}