blob: 55571efc9c25efd5e70402e17658de4962b78e0f [file] [log] [blame]
Duncan P. N. Exon Smith9f5c83b2016-08-22 22:21:07 +00001//===- unittests/ADT/IListSentinelTest.cpp - ilist_sentinel 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
10#include "llvm/ADT/ilist.h"
11#include "gtest/gtest.h"
12
13using namespace llvm;
14
15namespace {
16
17class Node : public ilist_node<Node> {};
18
Duncan P. N. Exon Smith34c4d2a2016-09-10 16:55:06 +000019struct LocalAccess : ilist_detail::NodeAccess {
20 using NodeAccess::getPrev;
21 using NodeAccess::getNext;
22};
23
Duncan P. N. Exon Smith9f5c83b2016-08-22 22:21:07 +000024TEST(IListSentinelTest, DefaultConstructor) {
25 ilist_sentinel<Node> S;
Duncan P. N. Exon Smith34c4d2a2016-09-10 16:55:06 +000026 EXPECT_EQ(&S, LocalAccess::getPrev(S));
27 EXPECT_EQ(&S, LocalAccess::getNext(S));
Duncan P. N. Exon Smith9f5c83b2016-08-22 22:21:07 +000028#ifdef LLVM_ENABLE_ABI_BREAKING_CHECKS
29 EXPECT_TRUE(S.isKnownSentinel());
30#else
31 EXPECT_FALSE(S.isKnownSentinel());
32#endif
33}
34
35TEST(IListSentinelTest, NormalNodeIsNotKnownSentinel) {
36 Node N;
Duncan P. N. Exon Smith34c4d2a2016-09-10 16:55:06 +000037 EXPECT_EQ(nullptr, LocalAccess::getPrev(N));
38 EXPECT_EQ(nullptr, LocalAccess::getNext(N));
Duncan P. N. Exon Smith9f5c83b2016-08-22 22:21:07 +000039 EXPECT_FALSE(N.isKnownSentinel());
40}
41
42} // end namespace