xref: /aosp_15_r20/external/llvm/unittests/ADT/SequenceTest.cpp (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker //===- SequenceTest.cpp - Unit tests for a sequence abstraciton -----------===//
2*9880d681SAndroid Build Coastguard Worker //
3*9880d681SAndroid Build Coastguard Worker //                     The LLVM Compiler Infrastructure
4*9880d681SAndroid Build Coastguard Worker //
5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source
6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details.
7*9880d681SAndroid Build Coastguard Worker //
8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
9*9880d681SAndroid Build Coastguard Worker 
10*9880d681SAndroid Build Coastguard Worker #include "llvm/ADT/Sequence.h"
11*9880d681SAndroid Build Coastguard Worker #include "gtest/gtest.h"
12*9880d681SAndroid Build Coastguard Worker 
13*9880d681SAndroid Build Coastguard Worker #include <list>
14*9880d681SAndroid Build Coastguard Worker 
15*9880d681SAndroid Build Coastguard Worker using namespace llvm;
16*9880d681SAndroid Build Coastguard Worker 
17*9880d681SAndroid Build Coastguard Worker namespace {
18*9880d681SAndroid Build Coastguard Worker 
TEST(SequenceTest,Basic)19*9880d681SAndroid Build Coastguard Worker TEST(SequenceTest, Basic) {
20*9880d681SAndroid Build Coastguard Worker   int x = 0;
21*9880d681SAndroid Build Coastguard Worker   for (int i : seq(0, 10))
22*9880d681SAndroid Build Coastguard Worker     EXPECT_EQ(x++, i);
23*9880d681SAndroid Build Coastguard Worker   EXPECT_EQ(10, x);
24*9880d681SAndroid Build Coastguard Worker 
25*9880d681SAndroid Build Coastguard Worker   auto my_seq = seq(0, 4);
26*9880d681SAndroid Build Coastguard Worker   EXPECT_EQ(4, my_seq.end() - my_seq.begin());
27*9880d681SAndroid Build Coastguard Worker   for (int i : {0, 1, 2, 3})
28*9880d681SAndroid Build Coastguard Worker     EXPECT_EQ(i, (int)my_seq.begin()[i]);
29*9880d681SAndroid Build Coastguard Worker 
30*9880d681SAndroid Build Coastguard Worker   EXPECT_TRUE(my_seq.begin() < my_seq.end());
31*9880d681SAndroid Build Coastguard Worker 
32*9880d681SAndroid Build Coastguard Worker   auto adjusted_begin = my_seq.begin() + 2;
33*9880d681SAndroid Build Coastguard Worker   auto adjusted_end = my_seq.end() - 2;
34*9880d681SAndroid Build Coastguard Worker   EXPECT_TRUE(adjusted_begin == adjusted_end);
35*9880d681SAndroid Build Coastguard Worker   EXPECT_EQ(2, *adjusted_begin);
36*9880d681SAndroid Build Coastguard Worker   EXPECT_EQ(2, *adjusted_end);
37*9880d681SAndroid Build Coastguard Worker }
38*9880d681SAndroid Build Coastguard Worker 
39*9880d681SAndroid Build Coastguard Worker } // anonymous namespace
40