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(); |