1 //===- unittests/ADT/IListNodeTest.cpp - ilist_node unit tests ------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #include "llvm/ADT/ilist_node.h"
11 #include "gtest/gtest.h"
12 #include <type_traits>
15 using namespace llvm::ilist_detail;
24 TEST(IListNodeTest, Options) {
26 std::is_same<compute_node_options<Node>::type,
27 compute_node_options<Node, ilist_tag<void>>::type>::value,
28 "default tag is void");
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");
34 !std::is_same<compute_node_options<Node, ilist_tag<TagA>>::type,
35 compute_node_options<Node, ilist_tag<TagB>>::type>::value,
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");
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");
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");
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");
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");