#![allow(dead_code)]
use rustledger_core::{Directive, NaiveDate};
use rustledger_parser::Spanned;
use rustledger_validate::{Phase, ValidationError, ValidationOptions, ValidationSession};
pub fn test_today() -> NaiveDate {
rustledger_core::naive_date(2030, 1, 1).unwrap()
}
pub fn validate(directives: &[Directive]) -> Vec<ValidationError> {
validate_with_options(directives, ValidationOptions::default())
}
pub fn validate_with_options(
directives: &[Directive],
options: ValidationOptions,
) -> Vec<ValidationError> {
validate_with_today(directives, options, test_today())
}
pub fn validate_with_today(
directives: &[Directive],
options: ValidationOptions,
today: NaiveDate,
) -> Vec<ValidationError> {
let mut session = ValidationSession::new(options);
let mut errors = session.run_phase(directives, Phase::Early, today);
errors.extend(session.run_phase(directives, Phase::Late, today));
errors.extend(session.finalize());
errors
}
pub fn validate_spanned_with_options(
directives: &[Spanned<Directive>],
options: ValidationOptions,
) -> Vec<ValidationError> {
let mut session = ValidationSession::new(options);
let mut errors = session.run_phase_spanned(directives, Phase::Early, test_today());
errors.extend(session.run_phase_spanned(directives, Phase::Late, test_today()));
errors.extend(session.finalize());
errors
}