test/maps_test.cc
changeset 726 3fc2a801c39e
parent 724 d8073df341f6
parent 695 8dae88c5943e
child 789 8ddb7deabab9
     1.1 --- a/test/maps_test.cc	Fri Sep 25 12:24:16 2009 +0200
     1.2 +++ b/test/maps_test.cc	Sat Sep 26 07:08:10 2009 +0200
     1.3 @@ -579,6 +579,40 @@
     1.4            it == map.endValue(), "Wrong value iterator");
     1.5    }
     1.6  
     1.7 +  // CrossRefMap
     1.8 +  {
     1.9 +    typedef SmartDigraph Graph;
    1.10 +    DIGRAPH_TYPEDEFS(Graph);
    1.11 +
    1.12 +    checkConcept<ReadWriteMap<Node, int>,
    1.13 +                 CrossRefMap<Graph, Node, int> >();
    1.14 +    
    1.15 +    Graph gr;
    1.16 +    typedef CrossRefMap<Graph, Node, char> CRMap;
    1.17 +    typedef CRMap::ValueIterator ValueIt;
    1.18 +    CRMap map(gr);
    1.19 +    
    1.20 +    Node n0 = gr.addNode();
    1.21 +    Node n1 = gr.addNode();
    1.22 +    Node n2 = gr.addNode();
    1.23 +    
    1.24 +    map.set(n0, 'A');
    1.25 +    map.set(n1, 'B');
    1.26 +    map.set(n2, 'C');
    1.27 +    map.set(n2, 'A');
    1.28 +    map.set(n0, 'C');
    1.29 +
    1.30 +    check(map[n0] == 'C' && map[n1] == 'B' && map[n2] == 'A',
    1.31 +          "Wrong CrossRefMap");
    1.32 +    check(map('A') == n2 && map.inverse()['A'] == n2, "Wrong CrossRefMap");
    1.33 +    check(map('B') == n1 && map.inverse()['B'] == n1, "Wrong CrossRefMap");
    1.34 +    check(map('C') == n0 && map.inverse()['C'] == n0, "Wrong CrossRefMap");
    1.35 +
    1.36 +    ValueIt it = map.beginValue();
    1.37 +    check(*it++ == 'A' && *it++ == 'B' && *it++ == 'C' &&
    1.38 +          it == map.endValue(), "Wrong value iterator");
    1.39 +  }
    1.40 +  
    1.41    // Iterable bool map
    1.42    {
    1.43      typedef SmartGraph Graph;