diff options
author | Rahul Joshi <rjoshi@nvidia.com> | 2025-07-02 13:32:27 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-07-02 13:32:27 -0700 |
commit | 27257654324631a495f718e50c8e5a4530ea2e8f (patch) | |
tree | c62f2107007f631269cfbf7879f765f252a9a65c /llvm/unittests/ADT/ArrayRefTest.cpp | |
parent | 7fc50e92a59c764eb6b1897fcdd506aacb92629c (diff) | |
download | llvm-27257654324631a495f718e50c8e5a4530ea2e8f.zip llvm-27257654324631a495f718e50c8e5a4530ea2e8f.tar.gz llvm-27257654324631a495f718e50c8e5a4530ea2e8f.tar.bz2 |
[LLVM][ADT] Add `consume_front` and `consume_back` to ArrayRef (#146741)
Add `consume_front` that returns the first element and drops it from the
current ArrayRef, and `consume_back` that returns the last element and
drops it from the current ArrayRef.
Diffstat (limited to 'llvm/unittests/ADT/ArrayRefTest.cpp')
-rw-r--r-- | llvm/unittests/ADT/ArrayRefTest.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/llvm/unittests/ADT/ArrayRefTest.cpp b/llvm/unittests/ADT/ArrayRefTest.cpp index 985db16..b5fc0a1 100644 --- a/llvm/unittests/ADT/ArrayRefTest.cpp +++ b/llvm/unittests/ADT/ArrayRefTest.cpp @@ -104,6 +104,48 @@ TEST(ArrayRefTest, DropFront) { EXPECT_TRUE(AR1.drop_front(2).equals(AR2)); } +TEST(ArrayRefTest, ConsumeFront) { + static const int TheNumbers[] = {4, 8, 15, 16, 23, 42}; + ArrayRef<int> AR1(TheNumbers); + ArrayRef<int> AR2(&TheNumbers[2], AR1.size() - 2); + EXPECT_EQ(&AR1.consume_front(), &TheNumbers[0]); + EXPECT_EQ(&AR1.consume_front(), &TheNumbers[1]); + EXPECT_TRUE(AR1.equals(AR2)); +} + +TEST(ArrayRefTest, ConsumeBack) { + static const int TheNumbers[] = {4, 8, 15, 16, 23, 42}; + ArrayRef<int> AR1(TheNumbers); + ArrayRef<int> AR2(TheNumbers, AR1.size() - 2); + EXPECT_EQ(&AR1.consume_back(), &TheNumbers[5]); + EXPECT_EQ(&AR1.consume_back(), &TheNumbers[4]); + EXPECT_TRUE(AR1.equals(AR2)); +} + +TEST(ArrayRefTest, MutableArryaRefConsumeFront) { + int TheNumbers[] = {4, 8, 15, 16, 23, 42}; + MutableArrayRef<int> AR1(TheNumbers); + MutableArrayRef<int> AR2(&TheNumbers[2], AR1.size() - 2); + EXPECT_EQ(&AR1.consume_front(), &TheNumbers[0]); + EXPECT_EQ(&AR1.consume_front(), &TheNumbers[1]); + EXPECT_TRUE(AR1.equals(AR2)); + + AR1.consume_front() = 33; + EXPECT_EQ(TheNumbers[2], 33); +} + +TEST(ArrayRefTest, MutableArryaRefConsumeBack) { + int TheNumbers[] = {4, 8, 15, 16, 23, 42}; + MutableArrayRef<int> AR1(TheNumbers); + MutableArrayRef<int> AR2(TheNumbers, AR1.size() - 2); + EXPECT_EQ(&AR1.consume_back(), &TheNumbers[5]); + EXPECT_EQ(&AR1.consume_back(), &TheNumbers[4]); + EXPECT_TRUE(AR1.equals(AR2)); + + AR1.consume_back() = 33; + EXPECT_EQ(TheNumbers[3], 33); +} + TEST(ArrayRefTest, DropWhile) { static const int TheNumbers[] = {1, 3, 5, 8, 10, 11}; ArrayRef<int> AR1(TheNumbers); |