88 const auto mixed = std::vector<SurfaceDescriptor>{{0, 0, SurfaceKind::Cylinder},
89 {1, 0, SurfaceKind::Cylinder},
90 {0, 8, SurfaceKind::Disk},
91 {1, 8, SurfaceKind::Disk}};
92 const std::vector<uint16_t> componentOffsets = {0, 2};
94 BOOST_REQUIRE(layout.valid());
99 BOOST_REQUIRE(topology.ok());
101 BOOST_CHECK(std::all_of(topology.topology->edges.begin(), topology.topology->edges.end(), [](
const Edge& edge) {
102 return edge.from.value() / 2 == edge.to.value() / 2;
108 const std::vector<SurfaceDescriptor> surfaces = catalog(4);
110 auto parameters = parametersFor(layout);
111 parameters.MaxHoles = 1;
112 parameters.StartLayerMask =
LayerMask{1u << 3};
113 parameters.InactiveLayerMask =
LayerMask{1u << 1};
115 BOOST_REQUIRE(
result.ok());
116 const auto& topology = *
result.topology;
124 BOOST_REQUIRE_EQUAL(topology.roadStartPaths.size(), 1u);
125 BOOST_CHECK(topology.getView(layout.getSurfaceCatalog()).getPath(topology.roadStartPaths.front()).first ==
EdgeId{0});
130 const auto surfaces = catalog(4);
132 auto wrongLayerCount = parametersFor(layout);
133 wrongLayerCount.NLayers = 7;
137 BOOST_CHECK(invalidCount.error == TraversalTopologyError::LayerCountMismatch);
165 surfaces[0].chartRange = {4.f, 12.f};
166 surfaces[0].referenceCoordinate = -100.f;
167 surfaces[1].referenceCoordinate = 42.f;
168 surfaces[1].chartRange = {-30.f, 30.f};
170 BOOST_REQUIRE(detector.valid());