|
32 | 32 |
|
33 | 33 | using namespace chip;
|
34 | 34 | using namespace chip::app::DataModel;
|
| 35 | +using namespace chip::app::DataModel::detail; |
35 | 36 |
|
36 | 37 | namespace {
|
37 | 38 |
|
@@ -204,4 +205,54 @@ TEST_F(TestMetadataList, ListBuilderConvertersWorks)
|
204 | 205 | }
|
205 | 206 | }
|
206 | 207 |
|
| 208 | +TEST_F(TestMetadataList, BufferMoveOperationsWork) |
| 209 | +{ |
| 210 | + { |
| 211 | + using LIST = ListBuilder<int>; |
| 212 | + |
| 213 | + LIST movedFromList{}; |
| 214 | + |
| 215 | + ASSERT_EQ(movedFromList.EnsureAppendCapacity(3), CHIP_NO_ERROR); |
| 216 | + |
| 217 | + movedFromList.Append(10); |
| 218 | + movedFromList.Append(11); |
| 219 | + movedFromList.Append(12); |
| 220 | + |
| 221 | + LIST movedToList{ std::move(movedFromList) }; |
| 222 | + |
| 223 | + ASSERT_EQ(movedFromList.Size(), size_t{ 0 }); // NOLINT(bugprone-use-after-move) |
| 224 | + ASSERT_TRUE(movedFromList.IsEmpty()); // NOLINT(bugprone-use-after-move) |
| 225 | + |
| 226 | + ASSERT_EQ(movedToList.Size(), size_t{ 3 }); |
| 227 | + ASSERT_FALSE(movedToList.IsEmpty()); |
| 228 | + |
| 229 | + auto movedToListSpan = movedToList.TakeBuffer(); |
| 230 | + |
| 231 | + EXPECT_EQ(movedToListSpan[0], 10); |
| 232 | + EXPECT_EQ(movedToListSpan[1], 11); |
| 233 | + EXPECT_EQ(movedToListSpan[2], 12); |
| 234 | + } |
| 235 | + |
| 236 | + { |
| 237 | + using LIST = ListBuilder<int>; |
| 238 | + |
| 239 | + LIST movedFromList{}; |
| 240 | + LIST movedToList{}; |
| 241 | + |
| 242 | + ASSERT_EQ(movedFromList.EnsureAppendCapacity(3), CHIP_NO_ERROR); |
| 243 | + ASSERT_EQ(movedToList.EnsureAppendCapacity(3), CHIP_NO_ERROR); |
| 244 | + |
| 245 | + movedFromList.Append(10); |
| 246 | + movedFromList.Append(11); |
| 247 | + movedFromList.Append(12); |
| 248 | + |
| 249 | + movedToList = std::move(movedFromList); |
| 250 | + |
| 251 | + ASSERT_EQ(movedFromList.Size(), size_t{ 0 }); // NOLINT(bugprone-use-after-move) |
| 252 | + ASSERT_TRUE(movedFromList.IsEmpty()); // NOLINT(bugprone-use-after-move) |
| 253 | + |
| 254 | + ASSERT_EQ(movedToList.Size(), size_t{ 3 }); |
| 255 | + ASSERT_FALSE(movedToList.IsEmpty()); |
| 256 | + } |
| 257 | +} |
207 | 258 | } // namespace
|
0 commit comments