COIN-OR::LEMON - Graph Library

Changeset 493:bbd1db03f0fe in lemon-0.x for src/work/klao/path_test.cc


Ignore:
Timestamp:
04/30/04 03:59:15 (17 years ago)
Author:
Mihaly Barasz
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@651
Message:

DirPath? fejlodes.
Kiserleti struktura a forditasi idoben kapcsolhato konzisztencia es range
ellenorzesekre.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/work/klao/path_test.cc

    r369 r493  
    1717}
    1818
     19#ifdef DEBUG
     20const bool debug = true;
     21#else
     22const bool debug = false;
     23#endif
     24
     25
    1926int main() {
    2027
    21   typedef ListGraph::Node Node;
    22   typedef ListGraph::Edge Edge;
     28  try {
    2329
    24   ListGraph G;
     30    typedef ListGraph::Node Node;
     31    typedef ListGraph::Edge Edge;
    2532
    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();
    3241 
    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);
    4352
    44   bool rc;
     53    bool rc;
    4554
    46   {
    47     cout << "DynamicPath tesztelese...\n";
     55    {
     56      cout << "\n\n\nDirPath tesztelese...\n";
    4857
    49     cout << "Ures path letrehozasa" << endl;
    50     typedef DynamicPath<ListGraph> LPath;
    51     LPath P(G);
    5258
    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);
    5562
    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);
    5865
    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()));
    6468
    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);
    7072
    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();
    7581
    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);
    8088
    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
    83103
    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);
    88117
    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      }
    96126
    97     cout << "Elek iranyitasanak ellenorzese." << endl;
    98     cout << "El: " << e1 << ", G.tail(el): " << G.head(e1) << endl;
    99     check(G.tail(e1)==s);
    100127
    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);
    113141    }
    114142
    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     }
    179143
    180144  }
     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  }
    181154
    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   }
    246155
    247156  cout << (passed ? "All tests passed." : "Some of the tests failed!!!")
Note: See TracChangeset for help on using the changeset viewer.