Changeset 774:4297098d9677 in lemon-0.x for src/test
- Timestamp:
- 08/30/04 14:01:47 (20 years ago)
- Branch:
- default
- Phase:
- public
- Convert:
- svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@1066
- Location:
- src/test
- Files:
-
- 1 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
src/test/Makefile.am
r727 r774 3 3 noinst_HEADERS = test_tools.h 4 4 5 check_PROGRAMS = graph_test dijkstra_test time_measure_test error_test xy_test \ 6 test_tools_pass test_tools_fail 5 check_PROGRAMS = graph_test dijkstra_test bfs_test time_measure_test \ 6 error_test xy_test \ 7 unionfind_test test_tools_pass test_tools_fail 7 8 8 9 TESTS = $(check_PROGRAMS) … … 11 12 graph_test_SOURCES = graph_test.cc 12 13 dijkstra_test_SOURCES = dijkstra_test.cc 14 bfs_test_SOURCES = bfs_test.cc 15 unionfind_test_SOURCES = unionfind_test.cc 13 16 time_measure_test_SOURCES = time_measure_test.cc 14 17 error_test_SOURCES = error_test.cc -
src/test/dijkstra_test.cc
r585 r774 76 76 77 77 78 for(EdgeIt e(G); G.valid(e); G.next(e)) {78 for(EdgeIt e(G); e==INVALID; ++e) { 79 79 Node u=G.tail(e); 80 80 Node v=G.head(e); … … 87 87 88 88 ///\bug This works only for integer lengths 89 for(NodeIt v(G); G.valid(v); G.next(v))89 for(NodeIt v(G); v==INVALID; ++v) 90 90 if ( dijkstra_test.reached(v) ) { 91 91 Edge e=dijkstra_test.pred(v); -
src/test/graph_test.cc
r733 r774 7 7 #include"test_tools.h" 8 8 9 /* 9 /** 10 \file 10 11 This test makes consistency checks of list graph structures. 11 12 12 G.addNode(), G.addEdge(), G. valid(), G.tail(), G.head()13 G.addNode(), G.addEdge(), G.tail(), G.head() 13 14 14 15 \todo Checks for empty graphs and isolated points. 16 \todo Checks for Node->NodeIt, Edge->{EdgeIt,InEdgeIt,OutEdgeIt} 17 conversion. 15 18 */ 16 19 … … 30 33 Node i; Node j(i); Node k(INVALID); 31 34 i=j; 32 bool b=G.valid(i); b=b; 35 // bool b=G.valid(i); b=b; 36 bool b; b=b; 37 b=(i==INVALID); b=(i!=INVALID); 33 38 b=(i==j); b=(i!=j); b=(i<j); 34 39 } … … 37 42 i=j; 38 43 j=G.first(i); 39 j=G.next(i); 40 bool b=G.valid(i); b=b; 44 j=++i; 45 // bool b=G.valid(i); b=b; 46 bool b; b=b; 47 b=(i==INVALID); b=(i!=INVALID); 41 48 Node n(i); 42 49 n=i; 43 50 b=(i==j); b=(i!=j); b=(i<j); 51 //Node ->NodeIt conversion 52 NodeIt ni(G,n); 44 53 } 45 54 { 46 55 Edge i; Edge j(i); Edge k(INVALID); 47 56 i=j; 48 bool b=G.valid(i); b=b; 57 // bool b=G.valid(i); b=b; 58 bool b; b=b; 59 b=(i==INVALID); b=(i!=INVALID); 49 60 b=(i==j); b=(i!=j); b=(i<j); 50 61 } … … 53 64 i=j; 54 65 j=G.first(i); 55 j=G.next(i); 56 bool b=G.valid(i); b=b; 66 j=++i; 67 // bool b=G.valid(i); b=b; 68 bool b; b=b; 69 b=(i==INVALID); b=(i!=INVALID); 57 70 Edge e(i); 58 71 e=i; 59 72 b=(i==j); b=(i!=j); b=(i<j); 73 //Edge ->EdgeIt conversion 74 EdgeIt ei(G,e); 60 75 } 61 76 { … … 64 79 i=j; 65 80 j=G.first(i,n); 66 j=G.next(i); 67 bool b=G.valid(i); b=b; 81 j=++i; 82 // bool b=G.valid(i); b=b; 83 bool b; b=b; 84 b=(i==INVALID); b=(i!=INVALID); 68 85 Edge e(i); 69 86 e=i; 70 87 b=(i==j); b=(i!=j); b=(i<j); 88 //Edge ->InEdgeIt conversion 89 InEdgeIt ei(G,e); 71 90 } 72 91 { … … 75 94 i=j; 76 95 j=G.first(i,n); 77 j=G.next(i); 78 bool b=G.valid(i); b=b; 96 j=++i; 97 // bool b=G.valid(i); b=b; 98 bool b; b=b; 99 b=(i==INVALID); b=(i!=INVALID); 79 100 Edge e(i); 80 101 e=i; 81 102 b=(i==j); b=(i!=j); b=(i<j); 82 }83 84 Node n,m;85 n=m=INVALID;86 Edge e;87 e=INVALID;88 n=G.tail(e);89 n=G.head(e);90 91 //aNode, bNode ?92 103 //Edge ->OutEdgeIt conversion 104 OutEdgeIt ei(G,e); 105 } 106 { 107 Node n,m; 108 n=m=INVALID; 109 Edge e; 110 e=INVALID; 111 n=G.tail(e); 112 n=G.head(e); 113 } 93 114 // id tests 94 { int i=G.id(n); i=i; } 95 { int i=G.id(e); i=i; } 96 97 // G.clear(); 98 115 { Node n; int i=G.id(n); i=i; } 116 { Edge e; int i=G.id(e); i=i; } 99 117 //NodeMap tests 100 118 { 101 119 Node k; 102 120 typename Graph::template NodeMap<int> m(G); 103 typename Graph::template NodeMap<int> const &cm = m; //Const map 121 //Const map 122 typename Graph::template NodeMap<int> const &cm = m; 104 123 //Inicialize with default value 105 124 typename Graph::template NodeMap<int> mdef(G,12); 106 typename Graph::template NodeMap<int> mm(cm); //Copy 107 typename Graph::template NodeMap<double> dm(cm); //Copy from another type 125 //Copy 126 typename Graph::template NodeMap<int> mm(cm); 127 //Copy from another type 128 typename Graph::template NodeMap<double> dm(cm); 108 129 int v; 109 130 v=m[k]; m[k]=v; m.set(k,v); … … 161 182 m=dm; //Copy to another type 162 183 } 163 164 184 } 165 185 … … 178 198 n=G.addNode(); 179 199 m=G.addNode(); 180 181 G.addEdge(n,m); 200 Edge e; 201 e=G.addEdge(n,m); 202 203 // G.clear(); 204 } 205 206 template<class Graph> void checkCompileErase(Graph &G) 207 { 208 typedef typename Graph::Node Node; 209 typedef typename Graph::Edge Edge; 210 Node n; 211 Edge e; 212 G.erase(n); 213 G.erase(e); 214 } 215 216 template<class Graph> void checkCompileEraseEdge(Graph &G) 217 { 218 typedef typename Graph::Edge Edge; 219 Edge e; 220 G.erase(e); 221 } 222 223 template<class Graph> void checkCompileFindEdge(Graph &G) 224 { 225 typedef typename Graph::NodeIt Node; 226 typedef typename Graph::NodeIt NodeIt; 227 228 G.findEdge(NodeIt(G),++NodeIt(G),G.findEdge(NodeIt(G),++NodeIt(G))); 229 G.findEdge(Node(),Node(),G.findEdge(Node(),Node())); 182 230 } 183 231 … … 187 235 typename Graph::NodeIt n(G); 188 236 for(int i=0;i<nn;i++) { 189 check( G.valid(n),"Wrong Node list linking.");190 G.next(n);191 } 192 check( !G.valid(n),"Wrong Node list linking.");237 check(n!=INVALID,"Wrong Node list linking."); 238 ++n; 239 } 240 check(n==INVALID,"Wrong Node list linking."); 193 241 } 194 242 … … 199 247 EdgeIt e(G); 200 248 for(int i=0;i<nn;i++) { 201 check( G.valid(e),"Wrong Edge list linking.");202 G.next(e);203 } 204 check( !G.valid(e),"Wrong Edge list linking.");249 check(e!=INVALID,"Wrong Edge list linking."); 250 ++e; 251 } 252 check(e==INVALID,"Wrong Edge list linking."); 205 253 } 206 254 … … 211 259 typename Graph::OutEdgeIt e(G,n); 212 260 for(int i=0;i<nn;i++) { 213 check( G.valid(e),"Wrong OutEdge list linking.");214 G.next(e);215 } 216 check( !G.valid(e),"Wrong OutEdge list linking.");261 check(e!=INVALID,"Wrong OutEdge list linking."); 262 ++e; 263 } 264 check(e==INVALID,"Wrong OutEdge list linking."); 217 265 } 218 266 219 267 template<class Graph> void checkInEdgeList(Graph &G, 220 221 268 typename Graph::Node n, 269 int nn) 222 270 { 223 271 typename Graph::InEdgeIt e(G,n); 224 272 for(int i=0;i<nn;i++) { 225 check(G.valid(e),"Wrong InEdge list linking."); 226 G.next(e); 227 } 228 check(!G.valid(e),"Wrong InEdge list linking."); 229 } 230 231 //Checks head(), tail() as well; 273 check(e!=INVALID,"Wrong InEdge list linking."); 274 ++e; 275 } 276 check(e==INVALID,"Wrong InEdge list linking."); 277 } 278 279 ///\file 280 ///\todo Checks head(), tail() as well; 281 232 282 template<class Graph> void bidirPetersen(Graph &G) 233 283 { … … 239 289 std::vector<Edge> ee; 240 290 241 for(EdgeIt e(G); G.valid(e);G.next(e)) ee.push_back(e);291 for(EdgeIt e(G);e!=INVALID;++e) ee.push_back(e); 242 292 243 293 for(typename std::vector<Edge>::iterator p=ee.begin();p!=ee.end();p++) … … 255 305 checkEdgeList(G,30); 256 306 257 for(NodeIt n(G); G.valid(n);G.next(n)) {307 for(NodeIt n(G);n!=INVALID;++n) { 258 308 checkInEdgeList(G,n,3); 259 309 checkOutEdgeList(G,n,3); 260 G.next(n);310 ++n; 261 311 } 262 312 } 263 313 264 template 314 //Compile GraphSkeleton 315 template 265 316 void checkCompileStaticGraph<StaticGraphSkeleton>(StaticGraphSkeleton &); 266 317 template void checkCompile<GraphSkeleton>(GraphSkeleton &); 267 318 template 319 void checkCompileErase<EraseableGraphSkeleton>(EraseableGraphSkeleton &); 320 321 //Compile SmartGraph 268 322 template void checkCompile<SmartGraph>(SmartGraph &); 323 //Compile SymSmartGraph 269 324 template void checkCompile<SymSmartGraph>(SymSmartGraph &); 325 326 //Compile ListGraph 270 327 template void checkCompile<ListGraph>(ListGraph &); 328 template void checkCompileErase<ListGraph>(ListGraph &); 329 template void checkCompileFindEdge<ListGraph>(ListGraph &); 330 331 //Compile SymListGraph 271 332 template void checkCompile<SymListGraph>(SymListGraph &); 333 template void checkCompileErase<SymListGraph>(SymListGraph &); 334 template void checkCompileFindEdge<SymListGraph>(SymListGraph &); 335 336 //Compile FullGraph 272 337 template void checkCompileStaticGraph<FullGraph>(FullGraph &); 273 338 template void checkCompileFindEdge<FullGraph>(FullGraph &); 339 340 //Compile EdgeSet <ListGraph> 274 341 template void checkCompile<EdgeSet <ListGraph> >(EdgeSet <ListGraph> &); 342 template 343 void checkCompileEraseEdge<EdgeSet <ListGraph> >(EdgeSet <ListGraph> &); 344 template 345 void checkCompileFindEdge<EdgeSet <ListGraph> >(EdgeSet <ListGraph> &); 346 347 //Compile EdgeSet <NodeSet> 275 348 template void checkCompile<EdgeSet <NodeSet> >(EdgeSet <NodeSet> &); 349 template 350 void checkCompileEraseEdge<EdgeSet <NodeSet> >(EdgeSet <NodeSet> &); 351 template void checkCompileFindEdge<EdgeSet <NodeSet> >(EdgeSet <NodeSet> &); 352 276 353 277 354 int main() … … 300 377 } 301 378 302 //\todo map tests. 303 //\todo copy constr tests. 379 ///\file 380 ///\todo map tests. 381 ///\todo copy constr tests. 304 382 305 383 std::cout << __FILE__ ": All tests passed.\n"; -
src/test/test_tools.h
r721 r774 21 21 ///print this (and then exits). 22 22 ///\verbatim graph_test.cc:123: error: This is obviously false. \endverbatim 23 /// 24 ///\todo It should be in \c error.h 23 25 #define check(rc, msg) \ 24 26 if(!(rc)) { \ -
src/test/unionfind_test.cc
r542 r774 3 3 #include <hugo/maps.h> 4 4 #include <hugo/unionfind.h> 5 #include "test_tools.h" 5 6 6 7 using namespace hugo; 7 8 using namespace std; 8 9 bool passed = true;10 11 void check(bool rc) {12 passed = passed && rc;13 if(!rc) {14 cout << "Test failed!" << endl;15 }16 }17 9 18 10 template <typename T> … … 23 15 void print(UFE const &ufe) { 24 16 UFE::ClassIt cit; 25 cout << " printingthe classes of the structure:" << endl;17 cout << "Print the classes of the structure:" << endl; 26 18 int i = 1; 27 19 for (ufe.first(cit); ufe.valid(cit); ufe.next(cit)) { … … 42 34 UFE U(base); 43 35 44 print(U);36 // print(U); 45 37 46 cout << "Insert ing1..." << endl;38 cout << "Insert 1..." << endl; 47 39 U.insert(1); 48 print(U);40 // print(U); 49 41 50 cout << "Insert ing2..." << endl;42 cout << "Insert 2..." << endl; 51 43 U.insert(2); 52 print(U);44 // print(U); 53 45 54 cout << "Join ing1 and 2..." << endl;55 check(U.join(1,2) );56 print(U);46 cout << "Join 1 and 2..." << endl; 47 check(U.join(1,2),"Test failed."); 48 // print(U); 57 49 58 cout << "Insert ing3, 4, 5, 6, 7..." << endl;50 cout << "Insert 3, 4, 5, 6, 7..." << endl; 59 51 U.insert(3); 60 52 U.insert(4); … … 62 54 U.insert(6); 63 55 U.insert(7); 64 print (U);56 // print (U); 65 57 66 cout << "Join ing1 - 4, 2 - 4 and 3 - 5 ..." << endl;67 check(U.join(1,4) );68 check(!U.join(2,4) );69 check(U.join(3,5) );70 print(U);58 cout << "Join 1 - 4, 2 - 4 and 3 - 5 ..." << endl; 59 check(U.join(1,4),"Test failed."); 60 check(!U.join(2,4),"Test failed."); 61 check(U.join(3,5),"Test failed."); 62 // print(U); 71 63 72 cout << "Insert ing8 to the component of 5 ..." << endl;64 cout << "Insert 8 to the component of 5 ..." << endl; 73 65 U.insert(8,5); 74 print(U);66 // print(U); 75 67 76 cout << " size of the class of 4: " << U.size(4) << endl;77 check(U.size(4) == 3 );78 cout << " size of the class of 5: " << U.size(5) << endl;79 check(U.size(5) == 3 );80 cout << " size of the class of 6: " << U.size(6) << endl;81 check(U.size(6) == 1 );82 cout << " size of the class of 2: " << U.size(2) << endl;83 check(U.size(2) == 3 );68 cout << "Size of the class of 4: " << U.size(4) << endl; 69 check(U.size(4) == 3,"Test failed."); 70 cout << "Size of the class of 5: " << U.size(5) << endl; 71 check(U.size(5) == 3,"Test failed."); 72 cout << "Size of the class of 6: " << U.size(6) << endl; 73 check(U.size(6) == 1,"Test failed."); 74 cout << "Size of the class of 2: " << U.size(2) << endl; 75 check(U.size(2) == 3,"Test failed."); 84 76 85 cout << "Insert ing9 ..." << endl;77 cout << "Insert 9 ..." << endl; 86 78 U.insert(9); 87 print(U);88 cout << "Insert ing10 to the component of 9 ..." << endl;79 // print(U); 80 cout << "Insert 10 to the component of 9 ..." << endl; 89 81 U.insert(10,9); 90 print(U);82 // print(U); 91 83 92 cout << "Join ing8 and 10..." << endl;93 check(U.join(8,10) );94 print(U);84 cout << "Join 8 and 10..." << endl; 85 check(U.join(8,10),"Test failed."); 86 // print(U); 95 87 96 88 cout << "Move 9 to the class of 4 ..." << endl; 97 check(U.move(9,4) );98 print(U);89 check(U.move(9,4),"Test failed."); 90 // print(U); 99 91 100 92 cout << "Move 9 to the class of 2 ..." << endl; 101 check(!U.move(9,2) );102 print(U);93 check(!U.move(9,2),"Test failed."); 94 // print(U); 103 95 104 cout << " size of the class of 4: " << U.size(4) << endl;105 check(U.size(4) == 4 );106 cout << " size of the class of 9: " << U.size(9) << endl;107 check(U.size(9) == 4 );96 cout << "Size of the class of 4: " << U.size(4) << endl; 97 check(U.size(4) == 4,"Test failed."); 98 cout << "Size of the class of 9: " << U.size(9) << endl; 99 check(U.size(9) == 4,"Test failed."); 108 100 109 101 cout << "Move 5 to the class of 6 ..." << endl; 110 check(U.move(5,6) );111 print(U);102 check(U.move(5,6),"Test failed."); 103 // print(U); 112 104 113 cout << " size of the class of 5: " << U.size(5) << endl;114 check(U.size(5) == 2 );115 cout << " size of the class of 8: " << U.size(8) << endl;116 check(U.size(8) == 3 );105 cout << "Size of the class of 5: " << U.size(5) << endl; 106 check(U.size(5) == 2,"Test failed."); 107 cout << "Size of the class of 8: " << U.size(8) << endl; 108 check(U.size(8) == 3,"Test failed."); 117 109 118 110 cout << "Move 7 to the class of 10 ..." << endl; 119 check(U.move(7,10) );120 print(U);111 check(U.move(7,10),"Test failed."); 112 // print(U); 121 113 122 cout << " size of the class of 7: " << U.size(7) << endl;123 check(U.size(7) == 4 );114 cout << "Size of the class of 7: " << U.size(7) << endl; 115 check(U.size(7) == 4,"Test failed."); 124 116 125 cout <<" erase 9:" << endl;117 cout <<"Erase 9... " << endl; 126 118 U.erase(9); 127 print(U);119 // print(U); 128 120 129 cout <<" erase 1:" << endl;121 cout <<"Erase 1... " << endl; 130 122 U.erase(1); 131 print(U);123 // print(U); 132 124 133 cout << " size of the class of 4: " << U.size(4) << endl;134 check(U.size(4) == 2 );135 cout << " size of the class of 2: " << U.size(2) << endl;136 check(U.size(2) == 2 );125 cout << "Size of the class of 4: " << U.size(4) << endl; 126 check(U.size(4) == 2,"Test failed."); 127 cout << "Size of the class of 2: " << U.size(2) << endl; 128 check(U.size(2) == 2,"Test failed."); 137 129 138 130 139 cout <<" erase 1:" << endl;131 cout <<"Erase 1... " << endl; 140 132 U.erase(1); 141 print(U);133 // print(U); 142 134 143 cout <<" erase 6:" << endl;135 cout <<"Erase 6... " << endl; 144 136 U.erase(6); 145 print(U);137 // print(U); 146 138 147 cout << " split the class of 8:" << endl;139 cout << "Split the class of 8... " << endl; 148 140 U.split(8); 149 print(U);141 // print(U); 150 142 151 143 152 cout << " size of the class of 4: " << U.size(4) << endl;153 check(U.size(4) == 2 );154 cout << " size of the class of 3: " << U.size(3) << endl;155 check(U.size(3) == 1 );156 cout << " size of the class of 2: " << U.size(2) << endl;157 check(U.size(2) == 2 );144 cout << "Size of the class of 4: " << U.size(4) << endl; 145 check(U.size(4) == 2,"Test failed."); 146 cout << "Size of the class of 3: " << U.size(3) << endl; 147 check(U.size(3) == 1,"Test failed."); 148 cout << "Size of the class of 2: " << U.size(2) << endl; 149 check(U.size(2) == 2,"Test failed."); 158 150 159 151 160 cout << "Join ing3 - 4 and 2 - 4 ..." << endl;161 check(U.join(3,4) );162 check(!U.join(2,4) );163 print(U);152 cout << "Join 3 - 4 and 2 - 4 ..." << endl; 153 check(U.join(3,4),"Test failed."); 154 check(!U.join(2,4),"Test failed."); 155 // print(U); 164 156 165 157 166 cout << " size of the class of 4: " << U.size(4) << endl;167 check(U.size(4) == 3 );168 cout << " size of the class of 3: " << U.size(3) << endl;169 check(U.size(3) == 3 );170 cout << " size of the class of 2: " << U.size(2) << endl;171 check(U.size(2) == 3 );158 cout << "Size of the class of 4: " << U.size(4) << endl; 159 check(U.size(4) == 3,"Test failed."); 160 cout << "Size of the class of 3: " << U.size(3) << endl; 161 check(U.size(3) == 3,"Test failed."); 162 cout << "Size of the class of 2: " << U.size(2) << endl; 163 check(U.size(2) == 3,"Test failed."); 172 164 173 cout << "makeRep(4) " << endl;165 cout << "makeRep(4)..." << endl; 174 166 U.makeRep(4); 175 print(U);176 cout << "makeRep(3) " << endl;167 // print(U); 168 cout << "makeRep(3)..." << endl; 177 169 U.makeRep(3); 178 print(U);179 cout << "makeRep(2) " << endl;170 // print(U); 171 cout << "makeRep(2)..." << endl; 180 172 U.makeRep(2); 181 print(U);173 // print(U); 182 174 183 cout << " size of the class of 4: " << U.size(4) << endl;184 check(U.size(4) == 3 );185 cout << " size of the class of 3: " << U.size(3) << endl;186 check(U.size(3) == 3 );187 cout << " size of the class of 2: " << U.size(2) << endl;188 check(U.size(2) == 3 );175 cout << "Size of the class of 4: " << U.size(4) << endl; 176 check(U.size(4) == 3,"Test failed."); 177 cout << "Size of the class of 3: " << U.size(3) << endl; 178 check(U.size(3) == 3,"Test failed."); 179 cout << "Size of the class of 2: " << U.size(2) << endl; 180 check(U.size(2) == 3,"Test failed."); 189 181 190 182 191 183 cout << "eraseClass 4 ..." << endl; 192 184 U.eraseClass(4); 193 print(U);185 // print(U); 194 186 195 187 cout << "eraseClass 7 ..." << endl; 196 188 U.eraseClass(7); 197 print(U);189 // print(U); 198 190 199 cout << "done" << endl; 200 201 cout << (passed ? "All tests passed." : "Some of the tests failed!!!") 202 << endl; 203 204 return passed ? 0 : 1; 191 cout << "done." << endl; 205 192 } -
src/test/xy_test.cc
r727 r774 8 8 { 9 9 10 cout << "Testing classes xy and boundingbox." << endl;10 cout << "Testing classes `xy' and `boundingbox'." << endl; 11 11 12 12 typedef xy<int> XY; … … 34 34 typedef BoundingBox<int> BB; 35 35 BB doboz1; 36 check(doboz1.empty(), " empty? Should be.");36 check(doboz1.empty(), "It should be empty."); 37 37 38 38 doboz1 += a; 39 check(!doboz1.empty(), " empty? Should not be.");39 check(!doboz1.empty(), "It should not be empty."); 40 40 doboz1 += b; 41 41 … … 47 47 48 48 seged.x=2;seged.y=3; 49 check(doboz1.inside(seged),"I nside? It should be.");49 check(doboz1.inside(seged),"It should be inside."); 50 50 51 51 seged.x=1;seged.y=3; 52 check(doboz1.inside(seged),"I nside? It should be.");52 check(doboz1.inside(seged),"It should be inside."); 53 53 54 54 seged.x=0;seged.y=3; 55 check(!doboz1.inside(seged),"I nside? It should not be.");55 check(!doboz1.inside(seged),"It should not be inside."); 56 56 57 57 BB doboz2(seged); 58 58 check(!doboz2.empty(), 59 " empty? Should not be. Constructed from 1 point.");59 "It should not be empty. Constructed from 1 point."); 60 60 61 61 doboz2 += doboz1; 62 62 check(doboz2.inside(seged), 63 " Not inside? It should be. Incremented a box with an other.");63 "It should be inside. Incremented a box with an other."); 64 64 }
Note: See TracChangeset
for help on using the changeset viewer.