Changeset 493:bbd1db03f0fe in lemon-0.x for src/work/klao/path_test.cc
- Timestamp:
- 04/30/04 03:59:15 (19 years ago)
- Branch:
- default
- Phase:
- public
- Convert:
- svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@651
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/work/klao/path_test.cc
r369 r493 17 17 } 18 18 19 #ifdef DEBUG 20 const bool debug = true; 21 #else 22 const bool debug = false; 23 #endif 24 25 19 26 int main() { 20 27 21 typedef ListGraph::Node Node; 22 typedef ListGraph::Edge Edge; 28 try { 23 29 24 ListGraph G; 30 typedef ListGraph::Node Node; 31 typedef ListGraph::Edge Edge; 25 32 26 Node s=G.addNode(); 27 Node v1=G.addNode(); 28 Node v2=G.addNode(); 29 Node v3=G.addNode(); 30 Node v4=G.addNode(); 31 Node t=G.addNode(); 33 ListGraph G; 34 35 Node s=G.addNode(); 36 Node v1=G.addNode(); 37 Node v2=G.addNode(); 38 Node v3=G.addNode(); 39 Node v4=G.addNode(); 40 Node t=G.addNode(); 32 41 33 Edge e1 = G.addEdge(s, v1);34 Edge e2 = G.addEdge(s, v2);35 Edge e3 = G.addEdge(v1, v2);36 Edge e4 = G.addEdge(v2, v1);37 Edge e5 = G.addEdge(v1, v3);38 Edge e6 = G.addEdge(v3, v2);39 Edge e7 = G.addEdge(v2, v4);40 Edge e8 = G.addEdge(v4, v3);41 Edge e9 = G.addEdge(v3, t);42 Edge e10 = G.addEdge(v4, t);42 Edge e1 = G.addEdge(s, v1); 43 Edge e2 = G.addEdge(s, v2); 44 Edge e3 = G.addEdge(v1, v2); 45 Edge e4 = G.addEdge(v2, v1); 46 Edge e5 = G.addEdge(v1, v3); 47 Edge e6 = G.addEdge(v3, v2); 48 Edge e7 = G.addEdge(v2, v4); 49 Edge e8 = G.addEdge(v4, v3); 50 Edge e9 = G.addEdge(v3, t); 51 Edge e10 = G.addEdge(v4, t); 43 52 44 bool rc;53 bool rc; 45 54 46 {47 cout << "DynamicPath tesztelese...\n";55 { 56 cout << "\n\n\nDirPath tesztelese...\n"; 48 57 49 cout << "Ures path letrehozasa" << endl;50 typedef DynamicPath<ListGraph> LPath;51 LPath P(G);52 58 53 cout << "P.length() == " << P.length() << endl; 54 check(P.length() == 0); 59 cout << "Ures path letrehozasa" << endl; 60 typedef DirPath<ListGraph> DPath; 61 DPath P(G); 55 62 56 cout << "P.from() valid? " << G.valid(P.from()) << endl;57 check(! G.valid(P.from()));63 cout << "P.length() == " << P.length() << endl; 64 check(P.length() == 0); 58 65 59 cout << "Hozzaadunk ket elet..." << endl; 60 check(P.pushBack(e1)); 61 check(P.pushBack(e3)); 62 cout << "P.length() == " << P.length() << endl; 63 check(P.length() == 2); 66 cout << "P.from() valid? " << G.valid(P.from()) << endl; 67 check(! G.valid(P.from())); 64 68 65 cout << "P.from() valid? " << G.valid(P.from()) << endl; 66 check(G.valid(P.from())); 67 68 cout << "P.from()==s ? " << (P.from()==s) << endl; 69 check(P.from() == s); 69 { 70 cout << "Builder objektum letrehozasa" << endl; 71 DPath::Builder B(P); 70 72 71 cout << "Hozzaadunk egy nem illeszkedo elt." << endl; 72 rc = P.pushBack(e8); 73 cout << "Sukerult: " << rc << endl; 74 check(!rc); 73 cout << "Hozzaadunk az elejehez ket elet..." << endl; 74 B.pushFront(e6); 75 B.pushFront(e5); 76 cout << "P.length() == " << P.length() << endl; 77 check(P.length() == 0); 78 79 cout << "Commitolunk..." << endl; 80 B.commit(); 75 81 76 cout << "Meg 3 el hozzaadasa, nem mind elore iranyu..." << endl; 77 check(P.pushBack(e6)); 78 check(P.pushBack(e8)); 79 check(P.pushBack(e10)); 82 cout << "P.length() == " << P.length() << endl; 83 check(P.length() == 2); 84 cout << "P.from() valid? " << G.valid(P.from()) << endl; 85 check(G.valid(P.from())); 86 cout << "P.from()==v1 ? " << (P.from()==v1) << endl; 87 check(P.from() == v1); 80 88 81 cout << "P.length() == " << P.length() << endl; 82 check(P.length() == 5); 89 // Na ja, ez igy nem igazi, mindket esetet le kene tesztelni, 90 // de legalabb valami: 91 #ifdef DEBUG 92 cout << "Hozzaadunk az elejehez egy nem illeszkedo elet..." << endl; 93 rc = false; 94 try { 95 B.pushFront(e3); 96 } 97 catch(const Exception &e) { 98 cout << "E: " << e.what() << endl; 99 rc = true; 100 } 101 check(rc); 102 #endif 83 103 84 cout << "P.from()==s ? " << (P.from()==s) << endl; 85 check(P.from() == s); 86 cout << "P.to()==t ? " << (P.to()==t) << endl; 87 check(P.to() == t); 104 cout << "Hozzaadunk a vegehez ket elet..." << endl; 105 B.pushBack(e7); 106 B.pushBack(e8); 107 cout << "P.length() == " << P.length() << endl; 108 check(P.length() == 2); 109 110 cout << "Es commitolunk...\n"; 111 B.commit(); 112 } 113 cout << "P.length() == " << P.length() << endl; 114 check(P.length() == 4); 115 cout << "P.to()==v3 ? " << (P.to()==v3) << endl; 116 check(P.to() == v3); 88 117 89 cout << "Vegpont bellitasa: " << endl; 90 rc = P.setTo(v2); 91 cout << "Hibasra: " << rc << endl; 92 check(!rc); 93 rc = P.setTo(t); 94 cout << "Helyesre: " << rc << endl; 95 check(rc); 118 cout << "Vegigiteralunk az eleken." << endl; 119 typedef DPath::NodeIt NodeIt; 120 typedef DPath::EdgeIt EdgeIt; 121 EdgeIt e; 122 int i=1; 123 for(P.first(e); P.valid(e); P.next(e), ++i) { 124 cout << i << ". el: " << e << endl; 125 } 96 126 97 cout << "Elek iranyitasanak ellenorzese." << endl;98 cout << "El: " << e1 << ", G.tail(el): " << G.head(e1) << endl;99 check(G.tail(e1)==s);100 127 101 cout << "Vegigiteralunk az eleken." << endl; 102 typedef LPath::NodeIt NodeIt; 103 typedef LPath::EdgeIt EdgeIt; 104 EdgeIt e = P.first<EdgeIt>(); 105 int i=1; 106 for(; P.valid(e); P.next(e), ++i) { 107 cout << i << ". el: " << P.graphEdge(e) 108 << ", elore el? " << P.isForward(e) << endl; 109 if(i>=3 && i<5) 110 check(!P.isForward(e)); 111 else 112 check(P.isForward(e)); 128 // Na ja, ez igy nem igazi, mindket esetet le kene tesztelni, 129 // de legalabb valami: 130 rc = false; 131 try { 132 cout << "Setting an edgeiter to a nonexistant edge." << endl; 133 P.nth(e,134); 134 rc = !debug; 135 } 136 catch(const Exception &e) { 137 cout << "E: " << e.what() << endl; 138 rc = debug; 139 } 140 check(rc); 113 141 } 114 142 115 {116 cout << "Reszut letrehozasa: [2. el, 4. el)..." << endl;117 LPath P2(P, P.nth<EdgeIt>(1), P.nth<EdgeIt>(3));118 119 cout << "P2.length() == " << P2.length() << endl;120 check(P2.length() == 2);121 122 cout << "P2.from()==v1 ? " << (P2.from()==v1) << endl;123 check(P2.from() == v1);124 cout << "P2.to()==v3 ? " << (P2.to()==v3) << endl;125 check(P2.to() == v3);126 }127 {128 cout << "Reszut letrehozasa: [1. el, 6. el)..." << endl;129 LPath P2(P, P.nth<EdgeIt>(0), P.nth<EdgeIt>(5));130 131 cout << "P2.length() == " << P2.length() << endl;132 check(P2.length() == 5);133 134 cout << "P2.from()==s ? " << (P2.from()==s) << endl;135 check(P2.from() == s);136 cout << "P2.to()==t ? " << (P2.to()==t) << endl;137 check(P2.to() == t);138 }139 140 {141 cout << "Ket pont altal megadott reszut letrehozasa: [2. pont, 4. pont]..."142 << endl;143 LPath P2(P, P.nth<NodeIt>(1), P.nth<NodeIt>(3));144 145 cout << "P2.length() == " << P2.length() << endl;146 check(P2.length() == 2);147 148 cout << "P2.from()==v1 ? " << (P2.from()==v1) << endl;149 check(P2.from() == v1);150 cout << "P2.to()==v3 ? " << (P2.to()==v3) << endl;151 check(P2.to() == v3);152 }153 {154 cout << "Egy pontu reszut letrehozasa: [4. pont, 4. pont]..."155 << endl;156 LPath P2(P, P.nth<NodeIt>(3), P.nth<NodeIt>(3));157 158 cout << "P2.length() == " << P2.length() << endl;159 check(P2.length() == 0);160 161 cout << "P2.from()==v3 ? " << (P2.from()==v3) << endl;162 check(P2.from() == v3);163 cout << "P2.to()==v3 ? " << (P2.to()==v3) << endl;164 check(P2.to() == v3);165 }166 {167 cout << "Forditott ut letrehozasa: [6. pont, 1. pont]..."168 << endl;169 LPath P2(P, P.nth<NodeIt>(5), P.nth<NodeIt>(0));170 171 cout << "P2.length() == " << P2.length() << endl;172 check(P2.length() == 5);173 174 cout << "P2.from()==t ? " << (P2.from()==t) << endl;175 check(P2.from() == t);176 cout << "P2.to()==s ? " << (P2.to()==s) << endl;177 check(P2.to() == s);178 }179 143 180 144 } 145 catch(const std::exception &e) { 146 cout << "Uncaught exception: " << e.what() << endl; 147 return 1; 148 } 149 catch(...) { 150 cout << "Something horrible happened: an exception which isn't " 151 << "std::exception" << endl; 152 return 2; 153 } 181 154 182 {183 cout << "\n\n\nDirPath tesztelese...\n";184 185 186 cout << "Ures path letrehozasa" << endl;187 typedef DirPath<ListGraph> DPath;188 DPath P(G);189 190 cout << "P.length() == " << P.length() << endl;191 check(P.length() == 0);192 193 cout << "P.from() valid? " << G.valid(P.from()) << endl;194 check(! G.valid(P.from()));195 196 {197 cout << "Builder objektum letrehozasa" << endl;198 DPath::Builder B(P);199 200 cout << "Hozzaadunk az elejehez ket elet..." << endl;201 check(B.pushFront(e6));202 check(B.pushFront(e5));203 cout << "P.length() == " << P.length() << endl;204 check(P.length() == 0);205 206 cout << "Commitolunk..." << endl;207 B.commit();208 209 cout << "P.length() == " << P.length() << endl;210 check(P.length() == 2);211 cout << "P.from() valid? " << G.valid(P.from()) << endl;212 check(G.valid(P.from()));213 cout << "P.from()==v1 ? " << (P.from()==v1) << endl;214 check(P.from() == v1);215 216 cout << "Hozzaadunk az elejehez egy nem illeszkedo elet..." << endl;217 check(!B.pushFront(e3));218 219 cout << "Hozzaadunk a vegehez ket elet..." << endl;220 check(B.pushBack(e7));221 check(B.pushBack(e8));222 cout << "P.length() == " << P.length() << endl;223 check(P.length() == 4);224 225 cout << "Hozzaadunk az elejehez meg egy elet..." << endl;226 check(B.pushFront(e4));227 cout << "P.length() == " << P.length() << endl;228 check(P.length() == 4);229 230 cout << "Es megvarjuk, amig megszunik a Builder...\n";231 }232 cout << "P.length() == " << P.length() << endl;233 check(P.length() == 5);234 cout << "P.from()==v2 ? " << (P.from()==v2) << endl;235 check(P.from() == v2);236 237 cout << "Vegigiteralunk az eleken." << endl;238 typedef DPath::NodeIt NodeIt;239 typedef DPath::EdgeIt EdgeIt;240 EdgeIt e;241 int i=1;242 for(P.first(e); P.valid(e); P.next(e), ++i) {243 cout << i << ". el: " << e << endl;244 }245 }246 155 247 156 cout << (passed ? "All tests passed." : "Some of the tests failed!!!")
Note: See TracChangeset
for help on using the changeset viewer.