DGtal  0.6.devel
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
testBasicBoolFunctions.cpp
1 
30 
31 #include <iostream>
32 #include "DGtal/base/Common.h"
33 #include "DGtal/base/BasicBoolFunctions.h"
35 
36 using namespace std;
37 using namespace DGtal;
38 
39 #define INBLOCK_TEST(x) \
40  nbok += ( x ) ? 1 : 0; \
41  nb++; \
42  trace.info() << "(" << nbok << "/" << nb << ") " \
43  << #x << std::endl;
44 
45 #define INBLOCK_TEST2(x,y) \
46  nbok += ( x ) ? 1 : 0; \
47  nb++; \
48  trace.info() << "(" << nbok << "/" << nb << ") " \
49  << y << std::endl;
50 
52 // Functions for testing class BasicBoolFunctions.
54 
58 bool testBasicBoolFunctions()
59 {
60  unsigned int nbok = 0;
61  unsigned int nb = 0;
62 
63  trace.beginBlock ( "Testing block ..." );
64  // true()
65  nbok += trueBF0() == true ? 1 : 0;
66  nb++;
67  trace.info() << "(" << nbok << "/" << nb << ") "
68  << "true() == true" << std::endl;
69 
70  // false()
71  nbok += falseBF0() == false ? 1 : 0;
72  nb++;
73  trace.info() << "(" << nbok << "/" << nb << ") "
74  << "false() == false" << std::endl;
75 
76  // id( b )
77  nbok += identityBF1( true ) == true ? 1 : 0;
78  nb++;
79  trace.info() << "(" << nbok << "/" << nb << ") "
80  << "id(true) == true" << std::endl;
81  nbok += identityBF1( false ) == false ? 1 : 0;
82  nb++;
83  trace.info() << "(" << nbok << "/" << nb << ") "
84  << "id(false) == false" << std::endl;
85 
86  // not( b )
87  nbok += notBF1( true ) == false ? 1 : 0;
88  nb++;
89  trace.info() << "(" << nbok << "/" << nb << ") "
90  << "not(true) == false" << std::endl;
91  nbok += notBF1( false ) == true ? 1 : 0;
92  nb++;
93  trace.info() << "(" << nbok << "/" << nb << ") "
94  << "not(false) == true" << std::endl;
95 
96  // and( b1, b2 )
97  nbok += andBF2( true, true ) == true ? 1 : 0;
98  nb++;
99  trace.info() << "(" << nbok << "/" << nb << ") "
100  << "and( true, true ) == true" << std::endl;
101  nbok += andBF2( false, true ) == false ? 1 : 0;
102  nb++;
103  trace.info() << "(" << nbok << "/" << nb << ") "
104  << "and( false, true ) == false" << std::endl;
105  nbok += andBF2( true, false ) == false ? 1 : 0;
106  nb++;
107  trace.info() << "(" << nbok << "/" << nb << ") "
108  << "and( true, false ) == false" << std::endl;
109  nbok += andBF2( false, false ) == false ? 1 : 0;
110  nb++;
111  trace.info() << "(" << nbok << "/" << nb << ") "
112  << "and( false, false ) == false" << std::endl;
113 
114  // or( b1, b2 )
115  nbok += orBF2( true, true ) == true ? 1 : 0;
116  nb++;
117  trace.info() << "(" << nbok << "/" << nb << ") "
118  << "or( true, true ) == true" << std::endl;
119  nbok += orBF2( false, true ) == true ? 1 : 0;
120  nb++;
121  trace.info() << "(" << nbok << "/" << nb << ") "
122  << "or( false, true ) == true" << std::endl;
123  nbok += orBF2( true, false ) == true ? 1 : 0;
124  nb++;
125  trace.info() << "(" << nbok << "/" << nb << ") "
126  << "or( true, false ) == true" << std::endl;
127  nbok += orBF2( false, false ) == false ? 1 : 0;
128  nb++;
129  trace.info() << "(" << nbok << "/" << nb << ") "
130  << "or( false, false ) == true" << std::endl;
131 
132  // xor( b1, b2 )
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" );
137 
138  // implies( b1, b2 )
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" );
147 
148  trace.endBlock();
149 
150  return nbok == nb;
151 }
152 
154 // Standard services - public :
155 
156 int main( int argc, char** argv )
157 {
158  trace.beginBlock ( "Testing class BasicBoolFunctions" );
159  trace.info() << "Args:";
160  for ( int i = 0; i < argc; ++i )
161  trace.info() << " " << argv[ i ];
162  trace.info() << endl;
163 
164  bool res = testBasicBoolFunctions(); // && ... other tests
165  trace.emphase() << ( res ? "Passed." : "Error." ) << endl;
166  trace.endBlock();
167  return res ? 0 : 1;
168 }
169 // //