yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
resource_catalog_test.cc
Go to the documentation of this file.
2
3#include <algorithm>
4#include <string>
5
6#include "gtest/gtest.h"
7
8namespace yaze {
9namespace cli {
10namespace {
11
12TEST(ResourceCatalogTest, SerializeResourceIncludesReturnsArray) {
13 const auto& catalog = ResourceCatalog::Instance();
14 auto overworld_schema = catalog.GetResource("overworld");
15 ASSERT_TRUE(overworld_schema.ok());
16
17 std::string output = catalog.SerializeResource(overworld_schema.value());
18 EXPECT_NE(output.find("\"resources\""), std::string::npos);
19 EXPECT_NE(output.find("\"returns\":"), std::string::npos);
20 EXPECT_NE(output.find("\"tile\""), std::string::npos);
21}
22
23TEST(ResourceCatalogTest, SerializeAllResourcesIncludesAgentDescribeMetadata) {
24 const auto& catalog = ResourceCatalog::Instance();
25 std::string output = catalog.SerializeResources(catalog.AllResources());
26
27 EXPECT_NE(output.find("\"agent\""), std::string::npos);
28 EXPECT_NE(output.find("\"effects\":"), std::string::npos);
29 EXPECT_NE(output.find("\"returns\":"), std::string::npos);
30}
31
32TEST(ResourceCatalogTest, RomSchemaExposesActionsAndMetadata) {
33 const auto& catalog = ResourceCatalog::Instance();
34 auto rom_schema = catalog.GetResource("rom");
35 ASSERT_TRUE(rom_schema.ok());
36
37 const auto& actions = rom_schema->actions;
38 ASSERT_EQ(actions.size(), 3);
39 EXPECT_EQ(actions[0].name, "validate");
40 EXPECT_FALSE(actions[0].effects.empty());
41 EXPECT_FALSE(actions[0].returns.empty());
42 EXPECT_EQ(actions[1].name, "diff");
43 EXPECT_EQ(actions[2].name, "generate-golden");
44}
45
46TEST(ResourceCatalogTest, PatchSchemaIncludesAsarAndCreateActions) {
47 const auto& catalog = ResourceCatalog::Instance();
48 auto patch_schema = catalog.GetResource("patch");
49 ASSERT_TRUE(patch_schema.ok());
50
51 const auto& actions = patch_schema->actions;
52 ASSERT_GE(actions.size(), 3);
53 EXPECT_EQ(actions[0].name, "apply");
54 EXPECT_FALSE(actions[0].returns.empty());
55
56 auto has_asar = std::find_if(actions.begin(), actions.end(), [](const auto& action) {
57 return action.name == "apply-asar";
58 });
59 EXPECT_NE(has_asar, actions.end());
60
61 auto has_create = std::find_if(actions.begin(), actions.end(), [](const auto& action) {
62 return action.name == "create";
63 });
64 EXPECT_NE(has_create, actions.end());
65}
66
67TEST(ResourceCatalogTest, DungeonSchemaListsMetadataAndObjectsReturns) {
68 const auto& catalog = ResourceCatalog::Instance();
69 auto dungeon_schema = catalog.GetResource("dungeon");
70 ASSERT_TRUE(dungeon_schema.ok());
71
72 const auto& actions = dungeon_schema->actions;
73 ASSERT_EQ(actions.size(), 2);
74 EXPECT_EQ(actions[0].name, "export");
75 EXPECT_FALSE(actions[0].returns.empty());
76 EXPECT_EQ(actions[1].name, "list-objects");
77 EXPECT_FALSE(actions[1].returns.empty());
78}
79
80TEST(ResourceCatalogTest, YamlSerializationIncludesMetadataAndActions) {
81 const auto& catalog = ResourceCatalog::Instance();
82 std::string yaml = catalog.SerializeResourcesAsYaml(
83 catalog.AllResources(), "0.1.0", "2025-10-01");
84
85 EXPECT_NE(yaml.find("version: \"0.1.0\""), std::string::npos);
86 EXPECT_NE(yaml.find("name: \"patch\""), std::string::npos);
87 EXPECT_NE(yaml.find("effects:"), std::string::npos);
88 EXPECT_NE(yaml.find("returns:"), std::string::npos);
89}
90
91} // namespace
92} // namespace cli
93} // namespace yaze
static const ResourceCatalog & Instance()
TEST(ResourceCatalogTest, SerializeResourceIncludesReturnsArray)
Main namespace for the application.
Definition controller.cc:20