33 std::string command =
"overworld set-tile --map 0 --x 10 --y 20 --tile 0x02E";
35 auto result = generator_->ParseSetTileCommand(command,
nullptr);
37 ASSERT_TRUE(result.ok()) << result.status().message();
38 EXPECT_EQ(result->map_id, 0);
39 EXPECT_EQ(result->x, 10);
40 EXPECT_EQ(result->y, 20);
41 EXPECT_EQ(result->new_tile, 0x02E);
45 std::string command =
"overworld set-tile --map 0";
47 auto result = generator_->ParseSetTileCommand(command,
nullptr);
49 EXPECT_FALSE(result.ok());
50 EXPECT_THAT(result.status().message(),
51 ::testing::HasSubstr(
"Invalid command format"));
55 std::string command =
"overworld get-tile --map 0 --x 10 --y 20";
57 auto result = generator_->ParseSetTileCommand(command,
nullptr);
59 EXPECT_FALSE(result.ok());
60 EXPECT_THAT(result.status().message(),
61 ::testing::HasSubstr(
"Not a set-tile command"));
70 "overworld set-area --map 0 --x 10 --y 20 --width 5 --height 3 --tile 0x02E";
72 auto result = generator_->ParseSetAreaCommand(command,
nullptr);
74 ASSERT_TRUE(result.ok()) << result.status().message();
75 EXPECT_EQ(result->size(), 15);
78 EXPECT_EQ((*result)[0].map_id, 0);
79 EXPECT_EQ((*result)[0].x, 10);
80 EXPECT_EQ((*result)[0].y, 20);
81 EXPECT_EQ((*result)[0].new_tile, 0x02E);
84 EXPECT_EQ((*result)[14].x, 14);
85 EXPECT_EQ((*result)[14].y, 22);
90 "overworld set-area --map 0 --x 10 --y 20 --width 1 --height 1 --tile 0x02E";
92 auto result = generator_->ParseSetAreaCommand(command,
nullptr);
94 ASSERT_TRUE(result.ok());
95 EXPECT_EQ(result->size(), 1);
100 "overworld set-area --map 0 --x 0 --y 0 --width 32 --height 32 --tile 0x000";
102 auto result = generator_->ParseSetAreaCommand(command,
nullptr);
104 ASSERT_TRUE(result.ok());
105 EXPECT_EQ(result->size(), 1024);
109 std::string command =
"overworld set-area --map 0 --x 10";
111 auto result = generator_->ParseSetAreaCommand(command,
nullptr);
113 EXPECT_FALSE(result.ok());
114 EXPECT_THAT(result.status().message(),
115 ::testing::HasSubstr(
"Invalid set-area command format"));
123 std::string command =
124 "overworld replace-tile --map 0 --old-tile 0x02E --new-tile 0x030";
126 auto result = generator_->ParseReplaceTileCommand(command,
nullptr);
128 EXPECT_FALSE(result.ok());
129 EXPECT_THAT(result.status().message(),
130 ::testing::HasSubstr(
"ROM must be loaded"));
134 std::string command =
"overworld replace-tile --map 0";
136 auto result = generator_->ParseReplaceTileCommand(command,
nullptr);
138 EXPECT_FALSE(result.ok());
139 EXPECT_THAT(result.status().message(),
140 ::testing::HasSubstr(
"Invalid replace-tile command format"));
148 std::vector<std::string> commands = {
149 "overworld set-tile --map 0 --x 10 --y 20 --tile 0x02E",
150 "overworld set-area --map 0 --x 5 --y 5 --width 2 --height 2 --tile 0x030"
153 auto result = generator_->GenerateFromCommands(
154 "Test prompt", commands,
"test_ai",
nullptr);
156 ASSERT_TRUE(result.ok()) << result.status().message();
157 EXPECT_EQ(result->changes.size(), 5);
158 EXPECT_EQ(result->prompt,
"Test prompt");
159 EXPECT_EQ(result->ai_service,
"test_ai");
164 std::vector<std::string> commands = {};
166 auto result = generator_->GenerateFromCommands(
167 "Test prompt", commands,
"test_ai",
nullptr);
169 EXPECT_FALSE(result.ok());
170 EXPECT_THAT(result.status().message(),
171 ::testing::HasSubstr(
"No valid tile16 changes found"));
175 std::vector<std::string> commands = {
176 "# This is a comment",
177 "overworld set-tile --map 0 --x 10 --y 20 --tile 0x02E",
182 auto result = generator_->GenerateFromCommands(
183 "Test prompt", commands,
"test_ai",
nullptr);
185 ASSERT_TRUE(result.ok());
186 EXPECT_EQ(result->changes.size(), 1);
201 std::string result = change.
ToString();
203 EXPECT_THAT(result, ::testing::HasSubstr(
"Map 5"));
204 EXPECT_THAT(result, ::testing::HasSubstr(
"(10,20)"));
205 EXPECT_THAT(result, ::testing::HasSubstr(
"0x2e"));
206 EXPECT_THAT(result, ::testing::HasSubstr(
"0x30"));
215 original.
id =
"test_id_123";
216 original.
prompt =
"Test prompt";
227 original.
changes.push_back(change);
229 std::string json = original.
ToJson();
232 ASSERT_TRUE(result.ok()) << result.status().message();
233 EXPECT_EQ(result->id, original.
id);
234 EXPECT_EQ(result->prompt, original.
prompt);
235 EXPECT_EQ(result->ai_service, original.
ai_service);
236 EXPECT_EQ(result->reasoning, original.
reasoning);
237 EXPECT_EQ(result->status, original.
status);
238 EXPECT_EQ(result->changes.size(), 1);
239 EXPECT_EQ(result->changes[0].map_id, 5);