use automapper_validation::eval::{
ConditionEvaluator, ConditionResult, EvaluationContext, MapExternalProvider,
};
use automapper_validation::generated::fv2504::UtilmdStromConditionEvaluatorFV2504;
use mig_types::segment::OwnedSegment;
fn pia(code: &str) -> OwnedSegment {
OwnedSegment {
id: "PIA".to_string(),
elements: vec![vec!["Z02".to_string()], vec![code.to_string()]],
segment_number: 0,
}
}
#[test]
fn evaluate_73_returns_false_when_no_pia_code_is_x_in_utilmd_preisangabe() {
let segments = vec![
pia("1-02-0-001"),
pia("1-02-0-002"),
pia("1-08-4-004"),
pia("1-10-1"),
pia("1-10-2"),
pia("1-10-4"),
];
let external = MapExternalProvider::new(Default::default());
let ctx = EvaluationContext::new("55218", &external, &segments);
let eval = UtilmdStromConditionEvaluatorFV2504::default();
assert_eq!(eval.evaluate(73, &ctx), ConditionResult::False);
}
#[test]
fn evaluate_73_returns_true_when_some_pia_code_has_x_in_utilmd_preisangabe() {
let segments = vec![pia("1-07-3-001")];
let external = MapExternalProvider::new(Default::default());
let ctx = EvaluationContext::new("55218", &external, &segments);
let eval = UtilmdStromConditionEvaluatorFV2504::default();
assert_eq!(eval.evaluate(73, &ctx), ConditionResult::True);
}
#[test]
fn evaluate_73_returns_false_with_no_pia_segments() {
let segments = vec![];
let external = MapExternalProvider::new(Default::default());
let ctx = EvaluationContext::new("55218", &external, &segments);
let eval = UtilmdStromConditionEvaluatorFV2504::default();
assert_eq!(eval.evaluate(73, &ctx), ConditionResult::False);
}
#[test]
fn evaluate_73_ignores_pia_with_non_z02_qualifier() {
let pia_non_z02 = OwnedSegment {
id: "PIA".to_string(),
segment_number: 0,
elements: vec![vec!["5".to_string()], vec!["1-07-3-001".to_string()]],
};
let segments = vec![pia_non_z02];
let external = MapExternalProvider::new(Default::default());
let ctx = EvaluationContext::new("55218", &external, &segments);
let eval = UtilmdStromConditionEvaluatorFV2504::default();
assert_eq!(eval.evaluate(73, &ctx), ConditionResult::False);
}
#[test]
fn evaluate_73_returns_false_for_code_not_in_codelist() {
let segments = vec![pia("9-99-9-999")];
let external = MapExternalProvider::new(Default::default());
let ctx = EvaluationContext::new("55218", &external, &segments);
let eval = UtilmdStromConditionEvaluatorFV2504::default();
assert_eq!(eval.evaluate(73, &ctx), ConditionResult::False);
}
#[test]
fn evaluate_284_returns_true_when_pia_code_has_x_in_utilmd_codeverwendung() {
let segments = vec![pia("1-02-0-001")];
let external = MapExternalProvider::new(Default::default());
let ctx = EvaluationContext::new("55218", &external, &segments);
let eval = UtilmdStromConditionEvaluatorFV2504::default();
assert_eq!(eval.evaluate(284, &ctx), ConditionResult::True);
}
#[test]
fn evaluate_284_returns_false_when_pia_code_has_no_x_in_utilmd_codeverwendung() {
let segments = vec![pia("1-01-1-001")];
let external = MapExternalProvider::new(Default::default());
let ctx = EvaluationContext::new("55218", &external, &segments);
let eval = UtilmdStromConditionEvaluatorFV2504::default();
assert_eq!(eval.evaluate(284, &ctx), ConditionResult::False);
}
#[test]
fn evaluate_284_returns_false_with_no_pia_segments() {
let segments = vec![];
let external = MapExternalProvider::new(Default::default());
let ctx = EvaluationContext::new("55218", &external, &segments);
let eval = UtilmdStromConditionEvaluatorFV2504::default();
assert_eq!(eval.evaluate(284, &ctx), ConditionResult::False);
}
#[test]
fn evaluate_284_ignores_pia_with_non_z02_qualifier() {
let pia_non_z02 = OwnedSegment {
id: "PIA".to_string(),
segment_number: 0,
elements: vec![vec!["5".to_string()], vec!["1-02-0-001".to_string()]],
};
let segments = vec![pia_non_z02];
let external = MapExternalProvider::new(Default::default());
let ctx = EvaluationContext::new("55218", &external, &segments);
let eval = UtilmdStromConditionEvaluatorFV2504::default();
assert_eq!(eval.evaluate(284, &ctx), ConditionResult::False);
}
#[test]
fn evaluate_284_returns_false_for_code_not_in_codelist() {
let segments = vec![pia("9-99-9-999")];
let external = MapExternalProvider::new(Default::default());
let ctx = EvaluationContext::new("55218", &external, &segments);
let eval = UtilmdStromConditionEvaluatorFV2504::default();
assert_eq!(eval.evaluate(284, &ctx), ConditionResult::False);
}