#![cfg(feature = "cfg-predict-distance")]
use cfg::Cfg;
use cfg::predict_distance::MinimalDistance;
#[test]
fn test_minimum_distance() {
let mut cfg = Cfg::new();
let [start, a, b, c, x, y] = cfg.sym();
cfg.rule(a)
.rhs([])
.rule(start)
.rhs([a, x, b, c, y])
.rhs([c])
.rule(b)
.rhs([a, a])
.rhs([a, c])
.rule(c)
.rhs([x])
.rhs([y]);
let mut minimal_distance = MinimalDistance::new(&cfg);
let distances = minimal_distance
.minimal_distances(&[(1, 3)], cfg_predict_distance::DistanceDirection::Forward);
let expected_distances = vec![
vec![Some(0)],
vec![Some(1), Some(1), Some(0), Some(0), None, None],
vec![None, None],
vec![Some(0), Some(0), Some(0)],
vec![Some(1), Some(1), Some(0)],
vec![Some(1), Some(0)],
vec![Some(1), Some(0)],
];
assert_eq!(distances, &expected_distances[..]);
}