test/adaptors_test.cc
changeset 879 25804ef35064
parent 488 2b5496c62ccd
child 1153 4bb9e72e1a41
equal deleted inserted replaced
0:76b25e38418d 1:88db9153443c
  1369   GridGraph::Node n2 = graph(0,1);
  1369   GridGraph::Node n2 = graph(0,1);
  1370   GridGraph::Node n3 = graph(1,0);
  1370   GridGraph::Node n3 = graph(1,0);
  1371   GridGraph::Node n4 = graph(1,1);
  1371   GridGraph::Node n4 = graph(1,1);
  1372 
  1372 
  1373   GridGraph::EdgeMap<bool> dir_map(graph);
  1373   GridGraph::EdgeMap<bool> dir_map(graph);
  1374   dir_map[graph.right(n1)] = graph.u(graph.right(n1)) == n1;
  1374   dir_map[graph.right(n1)] = graph.u(graph.right(n1)) != n1;
  1375   dir_map[graph.up(n1)] = graph.u(graph.up(n1)) != n1;
  1375   dir_map[graph.up(n1)] = graph.u(graph.up(n1)) == n1;
  1376   dir_map[graph.left(n4)] = graph.u(graph.left(n4)) != n4;
  1376   dir_map[graph.left(n4)] = graph.u(graph.left(n4)) == n4;
  1377   dir_map[graph.down(n4)] = graph.u(graph.down(n4)) != n4;
  1377   dir_map[graph.down(n4)] = graph.u(graph.down(n4)) == n4;
  1378 
  1378 
  1379   // Apply several adaptors on the grid graph
  1379   // Apply several adaptors on the grid graph
  1380   typedef SplitNodes< ReverseDigraph< const Orienter<
  1380   typedef SplitNodes<Orienter< const GridGraph, GridGraph::EdgeMap<bool> > >
  1381             const GridGraph, GridGraph::EdgeMap<bool> > > >
  1381     SplitGridGraph;
  1382     RevSplitGridGraph;
       
  1383   typedef ReverseDigraph<const RevSplitGridGraph> SplitGridGraph;
       
  1384   typedef Undirector<const SplitGridGraph> USplitGridGraph;
  1382   typedef Undirector<const SplitGridGraph> USplitGridGraph;
  1385   typedef Undirector<const USplitGridGraph> UUSplitGridGraph;
       
  1386   checkConcept<concepts::Digraph, RevSplitGridGraph>();
       
  1387   checkConcept<concepts::Digraph, SplitGridGraph>();
  1383   checkConcept<concepts::Digraph, SplitGridGraph>();
  1388   checkConcept<concepts::Graph, USplitGridGraph>();
  1384   checkConcept<concepts::Graph, USplitGridGraph>();
  1389   checkConcept<concepts::Graph, UUSplitGridGraph>();
  1385 
  1390 
  1386   SplitGridGraph adaptor = splitNodes(orienter(graph, dir_map));
  1391   RevSplitGridGraph rev_adaptor =
       
  1392     splitNodes(reverseDigraph(orienter(graph, dir_map)));
       
  1393   SplitGridGraph adaptor = reverseDigraph(rev_adaptor);
       
  1394   USplitGridGraph uadaptor = undirector(adaptor);
  1387   USplitGridGraph uadaptor = undirector(adaptor);
  1395   UUSplitGridGraph uuadaptor = undirector(uadaptor);
       
  1396 
  1388 
  1397   // Check adaptor
  1389   // Check adaptor
  1398   checkGraphNodeList(adaptor, 8);
  1390   checkGraphNodeList(adaptor, 8);
  1399   checkGraphArcList(adaptor, 8);
  1391   checkGraphArcList(adaptor, 8);
  1400   checkGraphConArcList(adaptor, 8);
  1392   checkGraphConArcList(adaptor, 8);
  1401 
  1393 
  1402   checkGraphOutArcList(adaptor, rev_adaptor.inNode(n1), 1);
  1394   checkGraphOutArcList(adaptor, adaptor.inNode(n1), 1);
  1403   checkGraphOutArcList(adaptor, rev_adaptor.outNode(n1), 1);
  1395   checkGraphOutArcList(adaptor, adaptor.outNode(n1), 1);
  1404   checkGraphOutArcList(adaptor, rev_adaptor.inNode(n2), 2);
  1396   checkGraphOutArcList(adaptor, adaptor.inNode(n2), 1);
  1405   checkGraphOutArcList(adaptor, rev_adaptor.outNode(n2), 1);
  1397   checkGraphOutArcList(adaptor, adaptor.outNode(n2), 0);
  1406   checkGraphOutArcList(adaptor, rev_adaptor.inNode(n3), 1);
  1398   checkGraphOutArcList(adaptor, adaptor.inNode(n3), 1);
  1407   checkGraphOutArcList(adaptor, rev_adaptor.outNode(n3), 1);
  1399   checkGraphOutArcList(adaptor, adaptor.outNode(n3), 1);
  1408   checkGraphOutArcList(adaptor, rev_adaptor.inNode(n4), 0);
  1400   checkGraphOutArcList(adaptor, adaptor.inNode(n4), 1);
  1409   checkGraphOutArcList(adaptor, rev_adaptor.outNode(n4), 1);
  1401   checkGraphOutArcList(adaptor, adaptor.outNode(n4), 2);
  1410 
  1402 
  1411   checkGraphInArcList(adaptor, rev_adaptor.inNode(n1), 1);
  1403   checkGraphInArcList(adaptor, adaptor.inNode(n1), 1);
  1412   checkGraphInArcList(adaptor, rev_adaptor.outNode(n1), 1);
  1404   checkGraphInArcList(adaptor, adaptor.outNode(n1), 1);
  1413   checkGraphInArcList(adaptor, rev_adaptor.inNode(n2), 1);
  1405   checkGraphInArcList(adaptor, adaptor.inNode(n2), 2);
  1414   checkGraphInArcList(adaptor, rev_adaptor.outNode(n2), 0);
  1406   checkGraphInArcList(adaptor, adaptor.outNode(n2), 1);
  1415   checkGraphInArcList(adaptor, rev_adaptor.inNode(n3), 1);
  1407   checkGraphInArcList(adaptor, adaptor.inNode(n3), 1);
  1416   checkGraphInArcList(adaptor, rev_adaptor.outNode(n3), 1);
  1408   checkGraphInArcList(adaptor, adaptor.outNode(n3), 1);
  1417   checkGraphInArcList(adaptor, rev_adaptor.inNode(n4), 1);
  1409   checkGraphInArcList(adaptor, adaptor.inNode(n4), 0);
  1418   checkGraphInArcList(adaptor, rev_adaptor.outNode(n4), 2);
  1410   checkGraphInArcList(adaptor, adaptor.outNode(n4), 1);
  1419 
  1411 
  1420   checkNodeIds(adaptor);
  1412   checkNodeIds(adaptor);
  1421   checkArcIds(adaptor);
  1413   checkArcIds(adaptor);
  1422 
  1414 
  1423   checkGraphNodeMap(adaptor);
  1415   checkGraphNodeMap(adaptor);
  1436 
  1428 
  1437   checkGraphNodeMap(uadaptor);
  1429   checkGraphNodeMap(uadaptor);
  1438   checkGraphEdgeMap(uadaptor);
  1430   checkGraphEdgeMap(uadaptor);
  1439   checkGraphArcMap(uadaptor);
  1431   checkGraphArcMap(uadaptor);
  1440 
  1432 
  1441   checkGraphIncEdgeArcLists(uadaptor, rev_adaptor.inNode(n1), 2);
  1433   checkGraphIncEdgeArcLists(uadaptor, adaptor.inNode(n1), 2);
  1442   checkGraphIncEdgeArcLists(uadaptor, rev_adaptor.outNode(n1), 2);
  1434   checkGraphIncEdgeArcLists(uadaptor, adaptor.outNode(n1), 2);
  1443   checkGraphIncEdgeArcLists(uadaptor, rev_adaptor.inNode(n2), 3);
  1435   checkGraphIncEdgeArcLists(uadaptor, adaptor.inNode(n2), 3);
  1444   checkGraphIncEdgeArcLists(uadaptor, rev_adaptor.outNode(n2), 1);
  1436   checkGraphIncEdgeArcLists(uadaptor, adaptor.outNode(n2), 1);
  1445   checkGraphIncEdgeArcLists(uadaptor, rev_adaptor.inNode(n3), 2);
  1437   checkGraphIncEdgeArcLists(uadaptor, adaptor.inNode(n3), 2);
  1446   checkGraphIncEdgeArcLists(uadaptor, rev_adaptor.outNode(n3), 2);
  1438   checkGraphIncEdgeArcLists(uadaptor, adaptor.outNode(n3), 2);
  1447   checkGraphIncEdgeArcLists(uadaptor, rev_adaptor.inNode(n4), 1);
  1439   checkGraphIncEdgeArcLists(uadaptor, adaptor.inNode(n4), 1);
  1448   checkGraphIncEdgeArcLists(uadaptor, rev_adaptor.outNode(n4), 3);
  1440   checkGraphIncEdgeArcLists(uadaptor, adaptor.outNode(n4), 3);
  1449 
       
  1450   // Check uuadaptor
       
  1451   checkGraphNodeList(uuadaptor, 8);
       
  1452   checkGraphEdgeList(uuadaptor, 16);
       
  1453   checkGraphArcList(uuadaptor, 32);
       
  1454   checkGraphConEdgeList(uuadaptor, 16);
       
  1455   checkGraphConArcList(uuadaptor, 32);
       
  1456 
       
  1457   checkNodeIds(uuadaptor);
       
  1458   checkEdgeIds(uuadaptor);
       
  1459   checkArcIds(uuadaptor);
       
  1460 
       
  1461   checkGraphNodeMap(uuadaptor);
       
  1462   checkGraphEdgeMap(uuadaptor);
       
  1463   checkGraphArcMap(uuadaptor);
       
  1464 }
  1441 }
  1465 
  1442 
  1466 int main(int, const char **) {
  1443 int main(int, const char **) {
  1467   // Check the digraph adaptors (using ListDigraph)
  1444   // Check the digraph adaptors (using ListDigraph)
  1468   checkReverseDigraph();
  1445   checkReverseDigraph();