/* * Copyright (c) 2024, Dan Klishch * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include #include struct IndexAndValue { size_t index; int value; bool operator==(IndexAndValue const&) const = default; }; TEST_CASE(enumerate) { { Vector result; for (auto [i, value] : enumerate(Vector { 1, 2, 3, 4 })) { result.append({ i, value }); } EXPECT_EQ(result, (Vector { { 0, 1 }, { 1, 2 }, { 2, 3 }, { 3, 4 } })); } { Vector result; Vector values = { 9, 8, 7, 6 }; for (auto [i, value] : enumerate(values)) { static_assert(SameAs); result.append({ i, value }); value = static_cast(i); } EXPECT_EQ(result, (Vector { { 0, 9 }, { 1, 8 }, { 2, 7 }, { 3, 6 } })); EXPECT_EQ(values, (Vector { 0, 1, 2, 3 })); } { Vector result; Vector const& values = { 9, 8, 7, 6 }; for (auto [i, value] : enumerate(values)) { static_assert(SameAs); result.append({ i, value }); } EXPECT_EQ(result, (Vector { { 0, 9 }, { 1, 8 }, { 2, 7 }, { 3, 6 } })); } }