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");