test/bpgraph_test.cc
changeset 1193 c8fa41fcc4a7
parent 1189 a12cca3ad15a
child 1194 699c7eac2c6d
equal deleted inserted replaced
3:06f6199470e0 4:5a4fab728cd8
    39   checkGraphArcList(G, 0);
    39   checkGraphArcList(G, 0);
    40 
    40 
    41   G.reserveNode(3);
    41   G.reserveNode(3);
    42   G.reserveEdge(3);
    42   G.reserveEdge(3);
    43 
    43 
    44   Node
    44   RedNode
    45     rn1 = G.addRedNode();
    45     rn1 = G.addRedNode();
    46   checkGraphNodeList(G, 1);
    46   checkGraphNodeList(G, 1);
    47   checkGraphRedNodeList(G, 1);
    47   checkGraphRedNodeList(G, 1);
    48   checkGraphBlueNodeList(G, 0);
    48   checkGraphBlueNodeList(G, 0);
    49   checkGraphEdgeList(G, 0);
    49   checkGraphEdgeList(G, 0);
    50   checkGraphArcList(G, 0);
    50   checkGraphArcList(G, 0);
    51 
    51 
    52   Node
    52   BlueNode
    53     bn1 = G.addBlueNode(),
    53     bn1 = G.addBlueNode(),
    54     bn2 = G.addBlueNode();
    54     bn2 = G.addBlueNode();
    55   checkGraphNodeList(G, 3);
    55   checkGraphNodeList(G, 3);
    56   checkGraphRedNodeList(G, 1);
    56   checkGraphRedNodeList(G, 1);
    57   checkGraphBlueNodeList(G, 2);
    57   checkGraphBlueNodeList(G, 2);
    74 
    74 
    75   checkGraphConEdgeList(G, 1);
    75   checkGraphConEdgeList(G, 1);
    76   checkGraphConArcList(G, 2);
    76   checkGraphConArcList(G, 2);
    77 
    77 
    78   Edge
    78   Edge
    79     e2 = G.addEdge(rn1, bn1),
    79     e2 = G.addEdge(bn1, rn1),
    80     e3 = G.addEdge(rn1, bn2);
    80     e3 = G.addEdge(rn1, bn2);
    81 
    81 
    82   checkGraphNodeList(G, 3);
    82   checkGraphNodeList(G, 3);
    83   checkGraphRedNodeList(G, 1);
    83   checkGraphRedNodeList(G, 1);
    84   checkGraphBlueNodeList(G, 2);
    84   checkGraphBlueNodeList(G, 2);
   110 template <class BpGraph>
   110 template <class BpGraph>
   111 void checkBpGraphErase() {
   111 void checkBpGraphErase() {
   112   TEMPLATE_BPGRAPH_TYPEDEFS(BpGraph);
   112   TEMPLATE_BPGRAPH_TYPEDEFS(BpGraph);
   113 
   113 
   114   BpGraph G;
   114   BpGraph G;
   115   Node
   115   RedNode
   116     n1 = G.addRedNode(), n2 = G.addBlueNode(),
   116     n1 = G.addRedNode(), n4 = G.addRedNode(); 
   117     n3 = G.addBlueNode(), n4 = G.addRedNode();
   117   BlueNode
       
   118     n2 = G.addBlueNode(), n3 = G.addBlueNode();
   118   Edge
   119   Edge
   119     e1 = G.addEdge(n1, n2), e2 = G.addEdge(n1, n3),
   120     e1 = G.addEdge(n1, n2), e2 = G.addEdge(n1, n3),
   120     e3 = G.addEdge(n4, n2), e4 = G.addEdge(n4, n3);
   121     e3 = G.addEdge(n4, n2), e4 = G.addEdge(n4, n3);
   121 
   122 
   122   // Check edge deletion
   123   // Check edge deletion
   157 template <class BpGraph>
   158 template <class BpGraph>
   158 void checkBpGraphAlter() {
   159 void checkBpGraphAlter() {
   159   TEMPLATE_BPGRAPH_TYPEDEFS(BpGraph);
   160   TEMPLATE_BPGRAPH_TYPEDEFS(BpGraph);
   160 
   161 
   161   BpGraph G;
   162   BpGraph G;
   162   Node
   163   RedNode
   163     n1 = G.addRedNode(), n2 = G.addBlueNode(),
   164     n1 = G.addRedNode(), n4 = G.addRedNode(); 
   164     n3 = G.addBlueNode(), n4 = G.addRedNode();
   165   BlueNode
       
   166     n2 = G.addBlueNode(), n3 = G.addBlueNode();
   165   Edge
   167   Edge
   166     e1 = G.addEdge(n1, n2), e2 = G.addEdge(n1, n3),
   168     e1 = G.addEdge(n1, n2), e2 = G.addEdge(n1, n3),
   167     e3 = G.addEdge(n4, n2), e4 = G.addEdge(n4, n3);
   169     e3 = G.addEdge(n4, n2), e4 = G.addEdge(n4, n3);
   168 
   170 
   169   G.changeRed(e2, n4);
   171   G.changeRed(e2, n4);
   207 template <class BpGraph>
   209 template <class BpGraph>
   208 void checkBpGraphSnapshot() {
   210 void checkBpGraphSnapshot() {
   209   TEMPLATE_BPGRAPH_TYPEDEFS(BpGraph);
   211   TEMPLATE_BPGRAPH_TYPEDEFS(BpGraph);
   210 
   212 
   211   BpGraph G;
   213   BpGraph G;
   212   Node 
   214   RedNode
   213     n1 = G.addRedNode(),
   215     n1 = G.addRedNode();
       
   216   BlueNode
   214     n2 = G.addBlueNode(),
   217     n2 = G.addBlueNode(),
   215     n3 = G.addBlueNode();
   218     n3 = G.addBlueNode();
   216   Edge 
   219   Edge 
   217     e1 = G.addEdge(n1, n2),
   220     e1 = G.addEdge(n1, n2),
   218     e2 = G.addEdge(n1, n3);
   221     e2 = G.addEdge(n1, n3);
   223   checkGraphEdgeList(G, 2);
   226   checkGraphEdgeList(G, 2);
   224   checkGraphArcList(G, 4);
   227   checkGraphArcList(G, 4);
   225 
   228 
   226   typename BpGraph::Snapshot snapshot(G);
   229   typename BpGraph::Snapshot snapshot(G);
   227 
   230 
   228   Node n4 = G.addRedNode();
   231   RedNode n4 = G.addRedNode();
   229   G.addEdge(n4, n2);
   232   G.addEdge(n4, n2);
   230   G.addEdge(n4, n3);
   233   G.addEdge(n4, n3);
   231 
   234 
   232   checkGraphNodeList(G, 4);
   235   checkGraphNodeList(G, 4);
   233   checkGraphRedNodeList(G, 2);
   236   checkGraphRedNodeList(G, 2);
   290 template <typename BpGraph>
   293 template <typename BpGraph>
   291 void checkBpGraphValidity() {
   294 void checkBpGraphValidity() {
   292   TEMPLATE_BPGRAPH_TYPEDEFS(BpGraph);
   295   TEMPLATE_BPGRAPH_TYPEDEFS(BpGraph);
   293   BpGraph g;
   296   BpGraph g;
   294 
   297 
   295   Node
   298   RedNode
   296     n1 = g.addRedNode(),
   299     n1 = g.addRedNode();
       
   300   BlueNode
   297     n2 = g.addBlueNode(),
   301     n2 = g.addBlueNode(),
   298     n3 = g.addBlueNode();
   302     n3 = g.addBlueNode();
   299 
   303 
   300   Edge
   304   Edge
   301     e1 = g.addEdge(n1, n2),
   305     e1 = g.addEdge(n1, n2),
   394   checkGraphArcMap(G);
   398   checkGraphArcMap(G);
   395   checkGraphEdgeMap(G);
   399   checkGraphEdgeMap(G);
   396 
   400 
   397   for (int i = 0; i < G.redNum(); ++i) {
   401   for (int i = 0; i < G.redNum(); ++i) {
   398     check(G.red(G.redNode(i)), "Wrong node");
   402     check(G.red(G.redNode(i)), "Wrong node");
   399     check(G.redIndex(G.redNode(i)) == i, "Wrong index");
   403     check(G.index(G.redNode(i)) == i, "Wrong index");
   400   }
   404   }
   401 
   405 
   402   for (int i = 0; i < G.blueNum(); ++i) {
   406   for (int i = 0; i < G.blueNum(); ++i) {
   403     check(G.blue(G.blueNode(i)), "Wrong node");
   407     check(G.blue(G.blueNode(i)), "Wrong node");
   404     check(G.blueIndex(G.blueNode(i)) == i, "Wrong index");
   408     check(G.index(G.blueNode(i)) == i, "Wrong index");
   405   }
   409   }
   406 
   410 
   407   for (NodeIt u(G); u != INVALID; ++u) {
   411   for (NodeIt u(G); u != INVALID; ++u) {
   408     for (NodeIt v(G); v != INVALID; ++v) {
   412     for (NodeIt v(G); v != INVALID; ++v) {
   409       Edge e = G.edge(u, v);
   413       Edge e = G.edge(u, v);