1*f0af11d8Sbmahjour //===- llvm/unittest/ADT/EnumeratedArrayTest.cpp ----------------*- C++ -*-===//
2*f0af11d8Sbmahjour //
3*f0af11d8Sbmahjour // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*f0af11d8Sbmahjour // See https://llvm.org/LICENSE.txt for license information.
5*f0af11d8Sbmahjour // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*f0af11d8Sbmahjour //
7*f0af11d8Sbmahjour //===----------------------------------------------------------------------===//
8*f0af11d8Sbmahjour //
9*f0af11d8Sbmahjour // EnumeratedArray unit tests.
10*f0af11d8Sbmahjour //
11*f0af11d8Sbmahjour //===----------------------------------------------------------------------===//
12*f0af11d8Sbmahjour
13*f0af11d8Sbmahjour #include "llvm/ADT/EnumeratedArray.h"
14*f0af11d8Sbmahjour #include "gtest/gtest.h"
15*f0af11d8Sbmahjour
16*f0af11d8Sbmahjour namespace llvm {
17*f0af11d8Sbmahjour
18*f0af11d8Sbmahjour //===--------------------------------------------------------------------===//
19*f0af11d8Sbmahjour // Test initialization and use of operator[] for both read and write.
20*f0af11d8Sbmahjour //===--------------------------------------------------------------------===//
21*f0af11d8Sbmahjour
TEST(EnumeratedArray,InitAndIndex)22*f0af11d8Sbmahjour TEST(EnumeratedArray, InitAndIndex) {
23*f0af11d8Sbmahjour
24*f0af11d8Sbmahjour enum class Colors { Red, Blue, Green, Last = Green };
25*f0af11d8Sbmahjour
26*f0af11d8Sbmahjour EnumeratedArray<float, Colors, Colors::Last, size_t> Array1;
27*f0af11d8Sbmahjour
28*f0af11d8Sbmahjour Array1[Colors::Red] = 1.0;
29*f0af11d8Sbmahjour Array1[Colors::Blue] = 2.0;
30*f0af11d8Sbmahjour Array1[Colors::Green] = 3.0;
31*f0af11d8Sbmahjour
32*f0af11d8Sbmahjour EXPECT_EQ(Array1[Colors::Red], 1.0);
33*f0af11d8Sbmahjour EXPECT_EQ(Array1[Colors::Blue], 2.0);
34*f0af11d8Sbmahjour EXPECT_EQ(Array1[Colors::Green], 3.0);
35*f0af11d8Sbmahjour
36*f0af11d8Sbmahjour EnumeratedArray<bool, Colors> Array2(true);
37*f0af11d8Sbmahjour
38*f0af11d8Sbmahjour EXPECT_TRUE(Array2[Colors::Red]);
39*f0af11d8Sbmahjour EXPECT_TRUE(Array2[Colors::Blue]);
40*f0af11d8Sbmahjour EXPECT_TRUE(Array2[Colors::Green]);
41*f0af11d8Sbmahjour
42*f0af11d8Sbmahjour Array2[Colors::Red] = true;
43*f0af11d8Sbmahjour Array2[Colors::Blue] = false;
44*f0af11d8Sbmahjour Array2[Colors::Green] = true;
45*f0af11d8Sbmahjour
46*f0af11d8Sbmahjour EXPECT_TRUE(Array2[Colors::Red]);
47*f0af11d8Sbmahjour EXPECT_FALSE(Array2[Colors::Blue]);
48*f0af11d8Sbmahjour EXPECT_TRUE(Array2[Colors::Green]);
49*f0af11d8Sbmahjour }
50*f0af11d8Sbmahjour
51*f0af11d8Sbmahjour } // namespace llvm
52