#![allow(dead_code)]
use rustledger_core::{Directive, NaiveDate};
use rustledger_parser::Spanned;
use rustledger_validate::{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 session = ValidationSession::new(options);
let (session, mut errors) = session.run_early(directives, today);
let (session, late_errs) = session.run_late(directives, today);
errors.extend(late_errs);
errors.extend(session.finalize());
errors
}
pub fn validate_spanned_with_options(
directives: &[Spanned<Directive>],
options: ValidationOptions,
) -> Vec<ValidationError> {
let today = test_today();
let session = ValidationSession::new(options);
let (session, mut errors) = session.run_early_spanned(directives, today);
let (session, late_errs) = session.run_late_spanned(directives, today);
errors.extend(late_errs);
errors.extend(session.finalize());
errors
}