mod common;
#[test]
fn range_value_rule_test_api() {
static TOLERANCE: f64 = 1e-9;
use maliput::api::rules::RuleState;
let road_network = common::create_loop_road_pedestrian_crosswalk_road_network_with_books();
let book = road_network.rulebook();
let expected_rule_id = String::from("Speed-Limit Rule Type/1_0_1_1");
let expected_type_id = String::from("Speed-Limit Rule Type");
let rule = book.get_range_value_rule(&expected_rule_id);
assert!(rule.is_some());
let rule = rule.unwrap();
assert_eq!(rule.id(), expected_rule_id);
assert_eq!(rule.type_id(), expected_type_id);
let zone = rule.zone();
let expected_zone_length = 15.;
assert!((zone.length() - expected_zone_length).abs() < TOLERANCE);
let invalid_rule_id = String::from("Invaliid Rule Type/InvalidRule");
let invalid_rule = book.get_range_value_rule(&invalid_rule_id);
assert!(invalid_rule.is_none());
let states = rule.states();
assert_eq!(states.len(), 1); let speed_limit_state = states.first().expect("State not found");
assert_eq!(speed_limit_state.description(), "m/s");
assert_eq!(speed_limit_state.min(), 0.);
assert_eq!(speed_limit_state.max(), 11.11111111111111);
let severity = speed_limit_state.severity();
assert_eq!(severity, 0);
let related_rules = speed_limit_state.related_rules();
assert_eq!(related_rules.len(), 0);
let related_unique_ids = speed_limit_state.related_unique_ids();
assert_eq!(related_unique_ids.len(), 0);
}