import ceylon.test {
test,
assertEquals
}
import examples.cycle {
Cycle
}
import examples.routemap {
RouteMap,
example,
City,
Distance,
km
}
import graph.traversal.visitor {
mapDistances,
HopDistanceMap,
mapHops,
DistanceMap
}
"Test [[graph.traversal.visitor::DistanceMapper]]."
by ("ThorstenSeitz")
shared class DistanceMapperTest() {
test
shared void testHopDistancesInCycle() {
Cycle graph = Cycle(10);
HopDistanceMap<Integer> distanceMap = mapHops<Integer,Cycle>(graph, 0);
// The hop distance of each vertex from vertex 0 should match its value.
for (Integer i in 0..9) {
assertEquals(i, distanceMap.get(i));
}
}
test
shared void testHopDistancesInRouteMap() {
RouteMap routeMap = example.routeMap;
HopDistanceMap<City> distanceMap = mapHops(routeMap, example.hamburg);
for (city->distance in {
example.hamburg->0,
example.hannover->1,
example.berlin->1,
example.kassel->2,
example.leipzig->2 }) {
assertEquals(distance, distanceMap.get(city));
}
}
test
shared void testDistancesInRouteMap() {
RouteMap routeMap = example.routeMap;
DistanceMap<City,Distance> distanceMap = mapDistances(routeMap, example.hamburg, routeMap.distances);
for (city->distance in {
example.hamburg->km(0),
example.hannover->km(151),
example.berlin->km(288),
example.kassel->km(307),
example.leipzig->km(414) }) {
assertEquals(distance, distanceMap.get(city));
}
}
}