32 #include "DGtal/base/Common.h"
33 #include "DGtal/base/BasicBoolFunctions.h"
37 using namespace DGtal;
39 #define INBLOCK_TEST(x) \
40 nbok += ( x ) ? 1 : 0; \
42 trace.info() << "(" << nbok << "/" << nb << ") " \
45 #define INBLOCK_TEST2(x,y) \
46 nbok += ( x ) ? 1 : 0; \
48 trace.info() << "(" << nbok << "/" << nb << ") " \
58 bool testBasicBoolFunctions()
60 unsigned int nbok = 0;
65 nbok += trueBF0() ==
true ? 1 : 0;
67 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") "
68 <<
"true() == true" << std::endl;
71 nbok += falseBF0() ==
false ? 1 : 0;
73 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") "
74 <<
"false() == false" << std::endl;
77 nbok += identityBF1(
true ) ==
true ? 1 : 0;
79 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") "
80 <<
"id(true) == true" << std::endl;
81 nbok += identityBF1(
false ) ==
false ? 1 : 0;
83 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") "
84 <<
"id(false) == false" << std::endl;
87 nbok += notBF1(
true ) ==
false ? 1 : 0;
89 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") "
90 <<
"not(true) == false" << std::endl;
91 nbok += notBF1(
false ) ==
true ? 1 : 0;
93 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") "
94 <<
"not(false) == true" << std::endl;
97 nbok += andBF2(
true,
true ) ==
true ? 1 : 0;
99 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") "
100 <<
"and( true, true ) == true" << std::endl;
101 nbok += andBF2(
false,
true ) ==
false ? 1 : 0;
103 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") "
104 <<
"and( false, true ) == false" << std::endl;
105 nbok += andBF2(
true,
false ) ==
false ? 1 : 0;
107 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") "
108 <<
"and( true, false ) == false" << std::endl;
109 nbok += andBF2(
false,
false ) ==
false ? 1 : 0;
111 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") "
112 <<
"and( false, false ) == false" << std::endl;
115 nbok += orBF2(
true,
true ) ==
true ? 1 : 0;
117 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") "
118 <<
"or( true, true ) == true" << std::endl;
119 nbok += orBF2(
false,
true ) ==
true ? 1 : 0;
121 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") "
122 <<
"or( false, true ) == true" << std::endl;
123 nbok += orBF2(
true,
false ) ==
true ? 1 : 0;
125 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") "
126 <<
"or( true, false ) == true" << std::endl;
127 nbok += orBF2(
false,
false ) ==
false ? 1 : 0;
129 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") "
130 <<
"or( false, false ) == true" << std::endl;
133 INBLOCK_TEST2( xorBF2(
true,
true ) ==
false,
"xor( true, true ) == false" );
134 INBLOCK_TEST2( xorBF2(
false,
true ) ==
true,
"xor( false, true ) == true" );
135 INBLOCK_TEST2( xorBF2(
true,
false ) ==
true,
"xor( true, false ) == true" );
136 INBLOCK_TEST2( xorBF2(
false,
false ) ==
false,
"xor( false, false ) == false" );
139 INBLOCK_TEST2( impliesBF2(
true,
true ) ==
true,
140 "implies( true, true ) == true" );
141 INBLOCK_TEST2( impliesBF2(
false,
true ) ==
true,
142 "implies( false, true ) == true" );
143 INBLOCK_TEST2( impliesBF2(
true,
false ) ==
false,
144 "implies( true, false ) == false" );
145 INBLOCK_TEST2( impliesBF2(
false,
false ) ==
true,
146 "implies( false, false ) == true" );
156 int main(
int argc,
char** argv )
160 for (
int i = 0; i < argc; ++i )
164 bool res = testBasicBoolFunctions();
165 trace.
emphase() << ( res ?
"Passed." :
"Error." ) << endl;