beancount-parser 2.6.0

A beancount file parser library for rust
Documentation
#![allow(missing_docs)]

use std::path::PathBuf;

use rstest::rstest;

use beancount_parser::BeancountFile;

#[rstest]
#[case("comments.beancount", 0, 0)]
#[case("simple.beancount", 16, 0)]
#[case("official.beancount", 1714, 0)]
#[case("includes.beancount", 1731, 6)]
fn can_parse_example_files(
    #[case] file_name: &str,
    #[case] expected_directive_count: usize,
    #[case] expected_include_count: usize,
) {
    let mut path: PathBuf = "./tests/samples".into();
    path.push(file_name);
    {
        let mut file = BeancountFile::<f64>::default();
        beancount_parser::read_files_v2([path.clone()], |entry| file.extend(Some(entry))).unwrap();
        assert_eq!(file.directives.len(), expected_directive_count);
        assert_eq!(file.includes.len(), expected_include_count);
    }
    {
        let mut file = BeancountFile::<f64>::default();
        file.extend(beancount_parser::read_files_to_vec([path.clone()]).unwrap());
        assert_eq!(file.directives.len(), expected_directive_count);
        assert_eq!(file.includes.len(), expected_include_count);
    }
    {
        let file = BeancountFile::<f64>::read_files([path]).unwrap();
        assert_eq!(file.directives.len(), expected_directive_count);
        assert_eq!(file.includes.len(), expected_include_count);
    }
}