Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_33_1/libs/logic/test/tribool_rename_test.cpp @ 12

Last change on this file since 12 was 12, checked in by landauf, 17 years ago

added boost

File size: 2.7 KB
Line 
1// Copyright Douglas Gregor 2002-2003. Use, modification and
2// distribution is subject to the Boost Software License, Version
3// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
4// http://www.boost.org/LICENSE_1_0.txt)
5
6// For more information, see http://www.boost.org
7
8#include <boost/logic/tribool.hpp>
9#include <boost/test/minimal.hpp>
10#include <iostream>
11
12BOOST_TRIBOOL_THIRD_STATE(maybe)
13
14int test_main(int,char*[])
15{
16  using namespace boost::logic;
17
18  tribool x; // false
19  tribool y(true); // true
20  tribool z(maybe); // maybe
21
22  BOOST_CHECK(!x);
23  BOOST_CHECK(x == false);
24  BOOST_CHECK(false == x);
25  BOOST_CHECK(x != true);
26  BOOST_CHECK(true != x);
27  BOOST_CHECK(maybe(x == maybe));
28  BOOST_CHECK(maybe(maybe == x));
29  BOOST_CHECK(maybe(x != maybe));
30  BOOST_CHECK(maybe(maybe != x));
31  BOOST_CHECK(x == x);
32  BOOST_CHECK(!(x != x));
33  BOOST_CHECK(!(x && true));
34  BOOST_CHECK(!(true && x));
35  BOOST_CHECK(x || true);
36  BOOST_CHECK(true || x);
37
38  BOOST_CHECK(y);
39  BOOST_CHECK(y == true);
40  BOOST_CHECK(true == y);
41  BOOST_CHECK(y != false);
42  BOOST_CHECK(false != y);
43  BOOST_CHECK(maybe(y == maybe));
44  BOOST_CHECK(maybe(maybe == y));
45  BOOST_CHECK(maybe(y != maybe));
46  BOOST_CHECK(maybe(maybe != y));
47  BOOST_CHECK(y == y);
48  BOOST_CHECK(!(y != y));
49
50  BOOST_CHECK(maybe(z || !z));
51  BOOST_CHECK(maybe(z == true));
52  BOOST_CHECK(maybe(true == z));
53  BOOST_CHECK(maybe(z == false));
54  BOOST_CHECK(maybe(false == z));
55  BOOST_CHECK(maybe(z == maybe));
56  BOOST_CHECK(maybe(maybe == z));
57  BOOST_CHECK(maybe(z != maybe));
58  BOOST_CHECK(maybe(maybe != z));
59  BOOST_CHECK(maybe(z == z));
60  BOOST_CHECK(maybe(z != z));
61
62  BOOST_CHECK(!(x == y));
63  BOOST_CHECK(x != y);
64  BOOST_CHECK(maybe(x == z));
65  BOOST_CHECK(maybe(x != z));
66  BOOST_CHECK(maybe(y == z));
67  BOOST_CHECK(maybe(y != z));
68
69  BOOST_CHECK(!(x && y));
70  BOOST_CHECK(x || y);
71  BOOST_CHECK(!(x && z));
72  BOOST_CHECK(maybe(y && z));
73  BOOST_CHECK(maybe(z && z));
74  BOOST_CHECK(maybe(z || z));
75  BOOST_CHECK(maybe(x || z));
76  BOOST_CHECK(y || z);
77
78  BOOST_CHECK(maybe(y && maybe));
79  BOOST_CHECK(maybe(maybe && y));
80  BOOST_CHECK(!(x && maybe));
81  BOOST_CHECK(!(maybe && x));
82
83  BOOST_CHECK(maybe || y);
84  BOOST_CHECK(y || maybe);
85  BOOST_CHECK(maybe(x || maybe));
86  BOOST_CHECK(maybe(maybe || x));
87
88  // Test the if (z) ... else (!z) ... else ... idiom
89  if (z) {
90    BOOST_CHECK(false);
91  }
92  else if (!z) {
93    BOOST_CHECK(false);
94  }
95  else {
96    BOOST_CHECK(true);
97  }
98
99  z = true;
100  if (z) {
101    BOOST_CHECK(true);
102  }
103  else if (!z) {
104    BOOST_CHECK(false);
105  }
106  else {
107    BOOST_CHECK(false);
108  }
109
110  z = false;
111  if (z) {
112    BOOST_CHECK(false);
113  }
114  else if (!z) {
115    BOOST_CHECK(true);
116  }
117  else {
118    BOOST_CHECK(false);
119  }
120
121  std::cout << "no errors detected\n";
122  return 0;
123}
Note: See TracBrowser for help on using the repository browser.