60 EXPECT_EQ((bytes.b1 >> 2), 5) <<
"X coordinate should be in upper 6 bits of b1";
61 EXPECT_EQ((bytes.b2 >> 2), 7) <<
"Y coordinate should be in upper 6 bits of b2";
62 EXPECT_EQ(bytes.b3, 0x10) <<
"Object ID should be in b3";
92 size_t initial_count = room.GetTileObjects().size();
97 auto status = room.AddObject(new_obj);
99 EXPECT_TRUE(status.ok()) <<
"Failed to add object: " << status.message();
100 EXPECT_EQ(room.GetTileObjects().size(), initial_count + 1);
107 size_t initial_count = room.GetTileObjects().size();
108 ASSERT_GT(initial_count, 0) <<
"Room should have at least one object";
111 auto status = room.RemoveObject(0);
113 EXPECT_TRUE(status.ok()) <<
"Failed to remove object: " << status.message();
114 EXPECT_EQ(room.GetTileObjects().size(), initial_count - 1);
121 ASSERT_FALSE(room.GetTileObjects().empty());
128 auto status = room.UpdateObject(0, updated_obj);
130 EXPECT_TRUE(status.ok()) <<
"Failed to update object: " << status.message();
131 EXPECT_EQ(room.GetTileObjects()[0].x_, 15);
132 EXPECT_EQ(room.GetTileObjects()[0].y_, 15);
144 EXPECT_TRUE(room.ValidateObject(valid_obj));
147 EXPECT_TRUE(room.ValidateObject(valid_obj2));
150 EXPECT_TRUE(room.ValidateObject(valid_obj3));
154 EXPECT_FALSE(room.ValidateObject(invalid_obj));
157 EXPECT_FALSE(room.ValidateObject(invalid_obj2));
168 size_t original_count = room.GetTileObjects().size();
171 auto encoded = room.EncodeObjects();
172 EXPECT_FALSE(encoded.empty());
179 EXPECT_EQ(room2.GetTileObjects().size(), original_count);
190 ASSERT_FALSE(room.GetTileObjects().empty());
193 auto& obj = room.GetTileObjects()[0];
197 EXPECT_FALSE(obj.tiles_.empty()) <<
"Object should have tiles after loading";
212 room.AddObject(obj_bg1);
213 room.AddObject(obj_bg2);
214 room.AddObject(obj_bg3);
217 auto encoded = room.EncodeObjects();
220 int terminator_count = 0;
221 for (
size_t i = 0; i < encoded.size() - 1; i++) {
222 if (encoded[i] == 0xFF && encoded[i+1] == 0xFF) {
227 EXPECT_GE(terminator_count, 2) <<
"Should have at least 2 layer terminators";