klao@225: #include klao@225: #include klao@225: klao@225: #include klao@225: #include klao@225: klao@225: using namespace std; klao@225: using namespace hugo; klao@225: klao@225: bool passed = true; klao@225: klao@225: void check(bool rc) { klao@225: passed = passed && rc; klao@225: if(!rc) { klao@225: cout << "Test failed!" << endl; klao@225: } klao@225: } klao@225: klao@493: #ifdef DEBUG klao@493: const bool debug = true; klao@493: #else klao@493: const bool debug = false; klao@493: #endif klao@493: klao@493: klao@225: int main() { klao@225: klao@493: try { klao@225: klao@493: typedef ListGraph::Node Node; klao@493: typedef ListGraph::Edge Edge; klao@225: klao@493: ListGraph G; klao@493: klao@493: Node s=G.addNode(); klao@493: Node v1=G.addNode(); klao@493: Node v2=G.addNode(); klao@493: Node v3=G.addNode(); klao@493: Node v4=G.addNode(); klao@493: Node t=G.addNode(); klao@225: klao@493: Edge e1 = G.addEdge(s, v1); klao@493: Edge e2 = G.addEdge(s, v2); klao@493: Edge e3 = G.addEdge(v1, v2); klao@493: Edge e4 = G.addEdge(v2, v1); klao@493: Edge e5 = G.addEdge(v1, v3); klao@493: Edge e6 = G.addEdge(v3, v2); klao@493: Edge e7 = G.addEdge(v2, v4); klao@493: Edge e8 = G.addEdge(v4, v3); klao@493: Edge e9 = G.addEdge(v3, t); klao@493: Edge e10 = G.addEdge(v4, t); klao@225: klao@493: bool rc; klao@225: klao@493: { klao@493: cout << "\n\n\nDirPath tesztelese...\n"; klao@225: klao@225: klao@493: cout << "Ures path letrehozasa" << endl; klao@493: typedef DirPath DPath; klao@493: DPath P(G); klao@225: klao@493: cout << "P.length() == " << P.length() << endl; klao@493: check(P.length() == 0); klao@225: klao@493: cout << "P.from() valid? " << G.valid(P.from()) << endl; klao@493: check(! G.valid(P.from())); klao@369: klao@493: { klao@493: cout << "Builder objektum letrehozasa" << endl; klao@493: DPath::Builder B(P); klao@225: klao@493: cout << "Hozzaadunk az elejehez ket elet..." << endl; klao@493: B.pushFront(e6); klao@493: B.pushFront(e5); klao@493: cout << "P.length() == " << P.length() << endl; klao@493: check(P.length() == 0); klao@493: klao@493: cout << "Commitolunk..." << endl; klao@493: B.commit(); klao@225: klao@493: cout << "P.length() == " << P.length() << endl; klao@493: check(P.length() == 2); klao@493: cout << "P.from() valid? " << G.valid(P.from()) << endl; klao@493: check(G.valid(P.from())); klao@493: cout << "P.from()==v1 ? " << (P.from()==v1) << endl; klao@493: check(P.from() == v1); klao@225: klao@493: // Na ja, ez igy nem igazi, mindket esetet le kene tesztelni, klao@493: // de legalabb valami: klao@493: #ifdef DEBUG klao@493: cout << "Hozzaadunk az elejehez egy nem illeszkedo elet..." << endl; klao@493: rc = false; klao@493: try { klao@493: B.pushFront(e3); klao@493: } klao@493: catch(const Exception &e) { klao@493: cout << "E: " << e.what() << endl; klao@493: rc = true; klao@493: } klao@493: check(rc); klao@493: #endif klao@225: klao@493: cout << "Hozzaadunk a vegehez ket elet..." << endl; klao@493: B.pushBack(e7); klao@493: B.pushBack(e8); klao@493: cout << "P.length() == " << P.length() << endl; klao@493: check(P.length() == 2); klao@493: klao@493: cout << "Es commitolunk...\n"; klao@493: B.commit(); klao@493: } klao@493: cout << "P.length() == " << P.length() << endl; klao@493: check(P.length() == 4); klao@493: cout << "P.to()==v3 ? " << (P.to()==v3) << endl; klao@493: check(P.to() == v3); klao@225: klao@493: cout << "Vegigiteralunk az eleken." << endl; klao@493: typedef DPath::NodeIt NodeIt; klao@493: typedef DPath::EdgeIt EdgeIt; klao@493: EdgeIt e; klao@493: int i=1; klao@493: for(P.first(e); P.valid(e); P.next(e), ++i) { klao@493: cout << i << ". el: " << e << endl; klao@493: } klao@225: klao@225: klao@493: // Na ja, ez igy nem igazi, mindket esetet le kene tesztelni, klao@493: // de legalabb valami: klao@493: rc = false; klao@493: try { klao@493: cout << "Setting an edgeiter to a nonexistant edge." << endl; klao@493: P.nth(e,134); klao@493: rc = !debug; klao@493: } klao@493: catch(const Exception &e) { klao@493: cout << "E: " << e.what() << endl; klao@493: rc = debug; klao@493: } klao@493: check(rc); klao@369: } klao@369: klao@369: klao@225: } klao@493: catch(const std::exception &e) { klao@493: cout << "Uncaught exception: " << e.what() << endl; klao@493: return 1; klao@493: } klao@493: catch(...) { klao@493: cout << "Something horrible happened: an exception which isn't " klao@493: << "std::exception" << endl; klao@493: return 2; klao@493: } klao@225: klao@225: klao@225: cout << (passed ? "All tests passed." : "Some of the tests failed!!!") klao@225: << endl; klao@225: klao@225: return passed ? 0 : 1; klao@225: }