-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathtest_pm_compat.cpp
More file actions
95 lines (76 loc) · 3.51 KB
/
test_pm_compat.cpp
File metadata and controls
95 lines (76 loc) · 3.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <gtest/gtest.h>
import std;
import mcpp.pm.compat;
import mcpp.pm.dependency_selector;
TEST(PmCompat, InstallDirCandidatesIncludeNestedNamespaceFallback) {
auto candidates = mcpp::pm::compat::install_dir_candidates(
"mcpplibs", "capi.lua", "mcpplibs");
EXPECT_NE(
std::find(candidates.begin(), candidates.end(),
"mcpplibs.capi-x-mcpplibs.capi.lua"),
candidates.end());
}
TEST(PmCompat, NormalizeNestedNamespacePreservesQualifiedName) {
std::string ns = "mcpplibs";
std::string shortName = "capi.lua";
mcpp::pm::compat::normalize_nested_namespace(ns, shortName,
/*legacyDottedKey=*/true);
EXPECT_EQ(ns, "mcpplibs.capi");
EXPECT_EQ(shortName, "lua");
EXPECT_EQ(mcpp::pm::compat::qualified_name(ns, shortName),
"mcpplibs.capi.lua");
}
TEST(PmCompat, SplitLegacyDependencyKeyMarksDottedKeyAsCompat) {
auto key = mcpp::pm::compat::split_legacy_dependency_key(
"mcpplibs.capi.lua");
EXPECT_EQ(key.namespace_, "mcpplibs");
EXPECT_EQ(key.shortName, "capi.lua");
EXPECT_TRUE(key.legacyDottedKey);
}
TEST(PmCompat, NormalizeNestedNamespaceSkipsCanonicalNamespacedDeps) {
std::string ns = "mcpplibs.capi";
std::string shortName = "lua.extra";
mcpp::pm::compat::normalize_nested_namespace(ns, shortName,
/*legacyDottedKey=*/false);
EXPECT_EQ(ns, "mcpplibs.capi");
EXPECT_EQ(shortName, "lua.extra");
}
TEST(DependencySelector, DottedSelectorBuildsOmittedMcpplibsPriorityCandidates) {
auto selector = mcpp::pm::resolve_dependency_selector(
"imgui.backend.glfw_opengl3",
mcpp::pm::DependencySelectorMode::OmittedMcpplibsPriority);
EXPECT_EQ(selector.stableMapKey, "imgui.backend.glfw_opengl3");
ASSERT_EQ(selector.candidates.size(), 2u);
EXPECT_EQ(selector.candidates[0].namespace_, "mcpplibs.imgui.backend");
EXPECT_EQ(selector.candidates[0].shortName, "glfw_opengl3");
EXPECT_EQ(selector.candidates[1].namespace_, "imgui.backend");
EXPECT_EQ(selector.candidates[1].shortName, "glfw_opengl3");
}
TEST(DependencySelector, BareSelectorBuildsOmittedMcpplibsThenPeerRootCandidates) {
auto selector = mcpp::pm::resolve_dependency_selector(
"imgui",
mcpp::pm::DependencySelectorMode::OmittedMcpplibsPriority);
EXPECT_EQ(selector.stableMapKey, "imgui");
ASSERT_EQ(selector.candidates.size(), 2u);
EXPECT_EQ(selector.candidates[0].namespace_, "mcpplibs");
EXPECT_EQ(selector.candidates[0].shortName, "imgui");
EXPECT_EQ(selector.candidates[1].namespace_, "");
EXPECT_EQ(selector.candidates[1].shortName, "imgui");
}
TEST(DependencySelector, ExplicitMcpplibsPrefixDoesNotAddPeerFallback) {
auto selector = mcpp::pm::resolve_dependency_selector(
"mcpplibs.capi.lua",
mcpp::pm::DependencySelectorMode::OmittedMcpplibsPriority);
EXPECT_EQ(selector.stableMapKey, "mcpplibs.capi.lua");
ASSERT_EQ(selector.candidates.size(), 1u);
EXPECT_EQ(selector.candidates[0].namespace_, "mcpplibs.capi");
EXPECT_EQ(selector.candidates[0].shortName, "lua");
}
TEST(DependencySelector, ExplicitRootSelectorHasOnlyThatRoot) {
auto selector = mcpp::pm::make_direct_dependency_selector(
"compat", "gtest", "compat.gtest");
EXPECT_EQ(selector.stableMapKey, "compat.gtest");
ASSERT_EQ(selector.candidates.size(), 1u);
EXPECT_EQ(selector.candidates[0].namespace_, "compat");
EXPECT_EQ(selector.candidates[0].shortName, "gtest");
}