OSDN Git Service

[AMDGPU] Remove unused AMDOpenCL triple environment
[android-x86/external-llvm.git] / unittests / ADT / IListNodeTest.cpp
1 //===- unittests/ADT/IListNodeTest.cpp - ilist_node 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_node.h"
11 #include "gtest/gtest.h"
12 #include <type_traits>
13
14 using namespace llvm;
15 using namespace llvm::ilist_detail;
16
17 namespace {
18
19 struct Node;
20
21 struct TagA {};
22 struct TagB {};
23
24 TEST(IListNodeTest, Options) {
25   static_assert(
26       std::is_same<compute_node_options<Node>::type,
27                    compute_node_options<Node, ilist_tag<void>>::type>::value,
28       "default tag is void");
29   static_assert(
30       !std::is_same<compute_node_options<Node, ilist_tag<TagA>>::type,
31                     compute_node_options<Node, ilist_tag<void>>::type>::value,
32       "default tag is void, different from TagA");
33   static_assert(
34       !std::is_same<compute_node_options<Node, ilist_tag<TagA>>::type,
35                     compute_node_options<Node, ilist_tag<TagB>>::type>::value,
36       "TagA is not TagB");
37   static_assert(
38       std::is_same<
39           compute_node_options<Node, ilist_sentinel_tracking<false>>::type,
40           compute_node_options<Node, ilist_sentinel_tracking<false>,
41                                ilist_tag<void>>::type>::value,
42       "default tag is void, even with sentinel tracking off");
43   static_assert(
44       std::is_same<
45           compute_node_options<Node, ilist_sentinel_tracking<false>>::type,
46           compute_node_options<Node, ilist_tag<void>,
47                                ilist_sentinel_tracking<false>>::type>::value,
48       "order shouldn't matter");
49   static_assert(
50       std::is_same<
51           compute_node_options<Node, ilist_sentinel_tracking<true>>::type,
52           compute_node_options<Node, ilist_sentinel_tracking<true>,
53                                ilist_tag<void>>::type>::value,
54       "default tag is void, even with sentinel tracking on");
55   static_assert(
56       std::is_same<
57           compute_node_options<Node, ilist_sentinel_tracking<true>>::type,
58           compute_node_options<Node, ilist_tag<void>,
59                                ilist_sentinel_tracking<true>>::type>::value,
60       "order shouldn't matter");
61   static_assert(
62       std::is_same<
63           compute_node_options<Node, ilist_sentinel_tracking<true>,
64                                ilist_tag<TagA>>::type,
65           compute_node_options<Node, ilist_tag<TagA>,
66                                ilist_sentinel_tracking<true>>::type>::value,
67       "order shouldn't matter with real tags");
68 }
69
70 } // end namespace