aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/ADT/ArrayRefTest.cpp
diff options
context:
space:
mode:
authorRahul Joshi <rjoshi@nvidia.com>2025-07-02 13:32:27 -0700
committerGitHub <noreply@github.com>2025-07-02 13:32:27 -0700
commit27257654324631a495f718e50c8e5a4530ea2e8f (patch)
treec62f2107007f631269cfbf7879f765f252a9a65c /llvm/unittests/ADT/ArrayRefTest.cpp
parent7fc50e92a59c764eb6b1897fcdd506aacb92629c (diff)
downloadllvm-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.cpp42
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);