Add test case parsing for nearest and osrm-routed startup

This commit is contained in:
Dennis
2024-05-30 18:23:03 +02:00
parent 3ba8001807
commit 3f14453f5b
2 changed files with 78 additions and 14 deletions
+12 -3
View File
@@ -13,7 +13,7 @@ pub struct OSRMWorld {
pub osm_id: u64,
pub profile: String,
pub known_osm_nodes: HashSet<char>,
pub known_osm_nodes: HashMap<char, Point>,
pub known_locations: HashMap<char, Point>,
pub osm_db: OSMDb,
@@ -37,7 +37,7 @@ impl OSRMWorld {
}
pub fn add_osm_node(&mut self, name: char, location: Point, id: Option<u64>) {
if self.known_osm_nodes.contains(&name) {
if self.known_osm_nodes.contains_key(&name) {
panic!("duplicate node: {name}");
}
let id = match id {
@@ -51,10 +51,19 @@ impl OSRMWorld {
tags: HashMap::from([("name".to_string(), name.to_string())]),
};
self.known_osm_nodes.insert(name);
self.known_osm_nodes.insert(name, location);
self.osm_db.add_node(node);
}
pub fn get_location(&self, name: char) -> Point {
match name {
// TODO: move lookup to world
'0'..='9' => self.known_locations.get(&name).expect("test case specifies unknown location: {name}"),
'a'..='z' => self.known_osm_nodes.get(&name).expect("test case specifies unknown osm node: {name}"),
_ => unreachable!("nodes have to be name in [0-9][a-z]"),
}.clone()
}
pub fn add_location(&mut self, name: char, location: Point) {
if self.known_locations.contains_key(&name) {
panic!("duplicate location: {name}")