blob: 0fb1282b21dadad20c021553b04b8f7b3a903986 [file] [log] [blame]
Duncan P. N. Exon Smith9f5c83b2016-08-22 22:21:07 +00001//===- unittests/ADT/IListNodeBaseTest.cpp - ilist_node_base unit tests ---===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
Duncan P. N. Exon Smith79185d82016-08-30 01:37:58 +000010#include "llvm/ADT/ilist_node_base.h"
Duncan P. N. Exon Smith9f5c83b2016-08-22 22:21:07 +000011#include "gtest/gtest.h"
12
13using namespace llvm;
14
15namespace {
16
17TEST(IListNodeBaseTest, DefaultConstructor) {
18 ilist_node_base A;
19 EXPECT_EQ(nullptr, A.getPrev());
20 EXPECT_EQ(nullptr, A.getNext());
21 EXPECT_FALSE(A.isKnownSentinel());
22}
23
24TEST(IListNodeBaseTest, setPrevAndNext) {
25 ilist_node_base A, B, C;
26 A.setPrev(&B);
27 EXPECT_EQ(&B, A.getPrev());
28 EXPECT_EQ(nullptr, A.getNext());
29 EXPECT_EQ(nullptr, B.getPrev());
30 EXPECT_EQ(nullptr, B.getNext());
31 EXPECT_EQ(nullptr, C.getPrev());
32 EXPECT_EQ(nullptr, C.getNext());
33
34 A.setNext(&C);
35 EXPECT_EQ(&B, A.getPrev());
36 EXPECT_EQ(&C, A.getNext());
37 EXPECT_EQ(nullptr, B.getPrev());
38 EXPECT_EQ(nullptr, B.getNext());
39 EXPECT_EQ(nullptr, C.getPrev());
40 EXPECT_EQ(nullptr, C.getNext());
41}
42
43TEST(IListNodeBaseTest, isKnownSentinel) {
44 ilist_node_base A, B;
45 EXPECT_FALSE(A.isKnownSentinel());
46 A.setPrev(&B);
47 A.setNext(&B);
48 EXPECT_EQ(&B, A.getPrev());
49 EXPECT_EQ(&B, A.getNext());
50 A.initializeSentinel();
51#ifdef LLVM_ENABLE_ABI_BREAKING_CHECKS
52 EXPECT_TRUE(A.isKnownSentinel());
53#else
54 EXPECT_FALSE(A.isKnownSentinel());
55#endif
56 EXPECT_EQ(&B, A.getPrev());
57 EXPECT_EQ(&B, A.getNext());
58}
59
60} // end namespace