]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/18_support/comparisons/categories/strongord.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 18_support / comparisons / categories / strongord.cc
CommitLineData
99dee823 1// Copyright (C) 2020-2021 Free Software Foundation, Inc.
0d57370c
JW
2//
3// This file is part of the GNU ISO C++ Library. This library is free
4// software; you can redistribute it and/or modify it under the
5// terms of the GNU General Public License as published by the
6// Free Software Foundation; either version 3, or (at your option)
7// any later version.
8
9// This library is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13
14// You should have received a copy of the GNU General Public License along
15// with this library; see the file COPYING3. If not see
16// <http://www.gnu.org/licenses/>.
17
18// { dg-options "-std=gnu++2a" }
19// { dg-do compile { target c++2a } }
20
21#include <compare>
22
23using std::strong_ordering;
24
25static_assert( strong_ordering::less == strong_ordering::less );
26static_assert( strong_ordering::less != strong_ordering::equal );
27static_assert( strong_ordering::less != strong_ordering::equivalent );
28static_assert( strong_ordering::less != strong_ordering::greater );
29static_assert( strong_ordering::equivalent == strong_ordering::equivalent );
30static_assert( strong_ordering::equivalent == strong_ordering::equal );
31static_assert( strong_ordering::equivalent != strong_ordering::greater );
32static_assert( strong_ordering::equal == strong_ordering::equal );
33static_assert( strong_ordering::equal != strong_ordering::greater );
34static_assert( strong_ordering::greater == strong_ordering::greater );
35
36static_assert( ! (strong_ordering::less == 0) );
37static_assert( strong_ordering::less < 0 );
38static_assert( ! (strong_ordering::less > 0) );
39static_assert( strong_ordering::less <= 0 );
40static_assert( ! (strong_ordering::less >= 0) );
41static_assert( ! (0 == strong_ordering::less) );
42static_assert( ! (0 < strong_ordering::less) );
43static_assert( 0 > strong_ordering::less );
44static_assert( ! (0 <= strong_ordering::less) );
45static_assert( 0 >= strong_ordering::less );
46static_assert( (strong_ordering::less <=> 0) == strong_ordering::less );
47static_assert( (0 <=> strong_ordering::less) == strong_ordering::greater );
48
49static_assert( (strong_ordering::equal == 0) );
50static_assert( ! (strong_ordering::equal < 0) );
51static_assert( ! (strong_ordering::equal > 0) );
52static_assert( strong_ordering::equal <= 0 );
53static_assert( strong_ordering::equal >= 0 );
54static_assert( 0 == strong_ordering::equal );
55static_assert( ! (0 < strong_ordering::equal) );
56static_assert( ! (0 > strong_ordering::equal) );
57static_assert( 0 <= strong_ordering::equal );
58static_assert( 0 >= strong_ordering::equal );
59static_assert( (strong_ordering::equal <=> 0) == strong_ordering::equal );
60static_assert( (0 <=> strong_ordering::equal) == strong_ordering::equal );
61
62static_assert( (strong_ordering::equivalent == 0) );
63static_assert( ! (strong_ordering::equivalent < 0) );
64static_assert( ! (strong_ordering::equivalent > 0) );
65static_assert( strong_ordering::equivalent <= 0 );
66static_assert( strong_ordering::equivalent >= 0 );
67static_assert( 0 == strong_ordering::equivalent );
68static_assert( ! (0 < strong_ordering::equivalent) );
69static_assert( ! (0 > strong_ordering::equivalent) );
70static_assert( 0 <= strong_ordering::equivalent );
71static_assert( 0 >= strong_ordering::equivalent );
72static_assert( (strong_ordering::equivalent <=> 0) == strong_ordering::equivalent );
73static_assert( (0 <=> strong_ordering::equivalent) == strong_ordering::equivalent );
74
75static_assert( ! (strong_ordering::greater == 0) );
76static_assert( ! (strong_ordering::greater < 0) );
77static_assert( strong_ordering::greater > 0 );
78static_assert( ! (strong_ordering::greater <= 0) );
79static_assert( strong_ordering::greater >= 0 );
80static_assert( ! (0 == strong_ordering::greater) );
81static_assert( 0 < strong_ordering::greater );
82static_assert( ! (0 > strong_ordering::greater) );
83static_assert( 0 <= strong_ordering::greater );
84static_assert( ! (0 >= strong_ordering::greater) );
85static_assert( (strong_ordering::greater <=> 0) == strong_ordering::greater );
86static_assert( (0 <=> strong_ordering::greater) == strong_ordering::less );
87
88// Conversions
89using std::partial_ordering;
90static_assert( partial_ordering(strong_ordering::less) == partial_ordering::less );
91static_assert( partial_ordering(strong_ordering::equal) == partial_ordering::equivalent );
92static_assert( partial_ordering(strong_ordering::equivalent) == partial_ordering::equivalent );
93static_assert( partial_ordering(strong_ordering::greater) == partial_ordering::greater );
94using std::weak_ordering;
95static_assert( weak_ordering(strong_ordering::less) == weak_ordering::less );
96static_assert( partial_ordering(strong_ordering::equal) == weak_ordering::equivalent );
97static_assert( partial_ordering(strong_ordering::equivalent) == weak_ordering::equivalent );
98static_assert( weak_ordering(strong_ordering::greater) == weak_ordering::greater );