Implement classes check
This commit is contained in:
parent
2596a9354f
commit
5d6c27762c
12
build.rs
12
build.rs
@ -104,14 +104,14 @@ fn main() {
|
|||||||
.run(flatc_rust::Args {
|
.run(flatc_rust::Args {
|
||||||
extra: &["--gen-all"],
|
extra: &["--gen-all"],
|
||||||
inputs: &[
|
inputs: &[
|
||||||
Path::new("include/engine/api/flatbuffers/position.fbs"),
|
Path::new("generated/include/engine/api/flatbuffers/position.fbs"),
|
||||||
Path::new("include/engine/api/flatbuffers/waypoint.fbs"),
|
Path::new("generated/include/engine/api/flatbuffers/waypoint.fbs"),
|
||||||
Path::new("include/engine/api/flatbuffers/route.fbs"),
|
Path::new("generated/include/engine/api/flatbuffers/route.fbs"),
|
||||||
Path::new("include/engine/api/flatbuffers/table.fbs"),
|
Path::new("generated/include/engine/api/flatbuffers/table.fbs"),
|
||||||
Path::new("include/engine/api/flatbuffers/fbresult.fbs"),
|
Path::new("generated/include/engine/api/flatbuffers/fbresult.fbs"),
|
||||||
],
|
],
|
||||||
out_dir: Path::new("target/flatbuffers/"),
|
out_dir: Path::new("target/flatbuffers/"),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
})
|
})
|
||||||
.expect("flatc failed generated files");
|
.expect("flatc failed generating files");
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ fn approx_equal_within_offset_range(actual: f64, expectation: f64, offset: f64)
|
|||||||
actual >= expectation - offset && actual <= expectation + offset
|
actual >= expectation - offset && actual <= expectation + offset
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn approximate_within_range(actual: f64, expectation: f64, offset: &Offset) -> bool{
|
pub fn approximate_within_range(actual: f64, expectation: f64, offset: &Offset) -> bool {
|
||||||
match offset {
|
match offset {
|
||||||
Offset::Absolute(a) => approx_equal_within_offset_range(actual, expectation, *a),
|
Offset::Absolute(a) => approx_equal_within_offset_range(actual, expectation, *a),
|
||||||
Offset::Percentage(p) => aprox_equal_within_percentage_range(actual, expectation, *p),
|
Offset::Percentage(p) => aprox_equal_within_percentage_range(actual, expectation, *p),
|
||||||
|
@ -14,4 +14,4 @@ impl OSRMError {
|
|||||||
};
|
};
|
||||||
response
|
response
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
use super::{
|
use super::{
|
||||||
nearest_response::NearestResponse, osm::{OSMNode, OSMWay}, osm_db::OSMDb, osrm_error::OSRMError,
|
nearest_response::NearestResponse,
|
||||||
|
osm::{OSMNode, OSMWay},
|
||||||
|
osm_db::OSMDb,
|
||||||
|
osrm_error::OSRMError,
|
||||||
route_response::RouteResponse,
|
route_response::RouteResponse,
|
||||||
};
|
};
|
||||||
use crate::{common::local_task::LocalTask, Location};
|
use crate::{common::local_task::LocalTask, Location};
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
|
|
||||||
use super::{location::Location, nearest_response::Waypoint};
|
use super::{location::Location, nearest_response::Waypoint};
|
||||||
@ -11,7 +9,7 @@ pub struct Maneuver {
|
|||||||
pub location: Location,
|
pub location: Location,
|
||||||
pub modifier: Option<String>, // TODO: should be an enum
|
pub modifier: Option<String>, // TODO: should be an enum
|
||||||
pub r#type: String, // TODO: should be an enum
|
pub r#type: String, // TODO: should be an enum
|
||||||
pub exit: Option<u64>
|
pub exit: Option<u64>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Deserialize)]
|
#[derive(Debug, Clone, Deserialize)]
|
||||||
@ -37,6 +35,7 @@ pub struct Intersection {
|
|||||||
pub entry: Vec<bool>,
|
pub entry: Vec<bool>,
|
||||||
pub bearings: Vec<u64>,
|
pub bearings: Vec<u64>,
|
||||||
pub location: Location,
|
pub location: Location,
|
||||||
|
pub classes: Option<Vec<String>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Default, Debug)]
|
#[derive(Deserialize, Default, Debug)]
|
||||||
|
@ -16,8 +16,7 @@ use core::panic;
|
|||||||
use cucumber::{
|
use cucumber::{
|
||||||
codegen::ParametersProvider,
|
codegen::ParametersProvider,
|
||||||
gherkin::{Step, Table},
|
gherkin::{Step, Table},
|
||||||
given, then, when,
|
given, then, when, World,
|
||||||
World,
|
|
||||||
};
|
};
|
||||||
use futures::{future, FutureExt};
|
use futures::{future, FutureExt};
|
||||||
use geo_types::Point;
|
use geo_types::Point;
|
||||||
@ -1124,6 +1123,28 @@ fn request_route(world: &mut OSRMWorld, step: &Step, state: String) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
assert_eq!(actual, expectation);
|
assert_eq!(actual, expectation);
|
||||||
|
},
|
||||||
|
"classes" => {
|
||||||
|
// '[' + s.intersections.map(i => '(' + (i.classes ? i.classes.join(',') : '') + ')').join(',') + ']');
|
||||||
|
|
||||||
|
let (_, response) = route_result.as_ref().expect("no route response in 'classes'");
|
||||||
|
let first_route = &response.routes[0];
|
||||||
|
let first_leg = first_route.legs.first().expect("no first leg on route");
|
||||||
|
let actual_classes = first_leg.steps.iter().map(|step| {
|
||||||
|
"[".to_string() +
|
||||||
|
&step.intersections.iter().map(|intersection| {
|
||||||
|
let tmp = match &intersection.classes {
|
||||||
|
Some(classes) => {
|
||||||
|
classes.join(",")
|
||||||
|
},
|
||||||
|
None => "".to_string(),
|
||||||
|
};
|
||||||
|
"(".to_string() + &tmp + ")"
|
||||||
|
}).collect::<Vec<_>>().join(",") + "]"
|
||||||
|
}).collect::<Vec<_>>().join(",");
|
||||||
|
|
||||||
|
let expected_classes = test_case.get("classes").expect("test case classes not found");
|
||||||
|
assert_eq!(&actual_classes, expected_classes, "classes don't match");
|
||||||
}
|
}
|
||||||
// TODO: more checks need to be implemented
|
// TODO: more checks need to be implemented
|
||||||
_ => {
|
_ => {
|
||||||
@ -1151,7 +1172,7 @@ fn main() {
|
|||||||
future::ready(()).boxed()
|
future::ready(()).boxed()
|
||||||
})
|
})
|
||||||
// .with_writer(DotWriter::default().normalized())
|
// .with_writer(DotWriter::default().normalized())
|
||||||
.filter_run("features/", |fe, r, sc| {
|
.filter_run("features", |fe, r, sc| {
|
||||||
// .filter_run("features/bicycle/classes.feature", |fe, r, sc| {
|
// .filter_run("features/bicycle/classes.feature", |fe, r, sc| {
|
||||||
let tag = "todo".to_string();
|
let tag = "todo".to_string();
|
||||||
!sc.tags.contains(&tag)
|
!sc.tags.contains(&tag)
|
||||||
|
Loading…
Reference in New Issue
Block a user