titlefmt 0.4.0

Metadata Title Formatting Library
Documentation
use std::collections::HashMap;
use {test, Formatter};

#[test]
fn test_function_substr() {
    let formatter = Formatter::new();
    {
        let test_metadata = test::MetadataProvider::new(HashMap::new());
        let do_test = |original, from_char, to_char, expected| {
            let expression = formatter
                .parser()
                .parse(&format!(
                    r#"$substr({},{},{})"#,
                    original, from_char, to_char
                ))
                .unwrap();
            let s = expression.apply(&test_metadata);
            assert_eq!(
                expected,
                s.to_string().as_str(),
                "arguments: {}, {}, {}",
                original,
                from_char,
                to_char
            );
        };
        do_test("HELLO TEST", 1, 5, "HELLO");
        do_test("HELLO TEST", 6, 11, " TEST");
        do_test("HELLO TEST", 6, 30, " TEST");
        do_test("HELLO TEST", 0, 5, "HELLO");
        do_test("HELLO TEST", 0, 30, "HELLO TEST");
        do_test("HELLO TEST", 0, 0, "");
        do_test("HELLO TEST", 1, 1, "H");
        do_test("HELLO TEST", 3, 3, "L");
        do_test("HELLO TEST", 13, 13, "");
        do_test("HELLO TEST", 10, 5, "");
        do_test("HELLO TEST", 10, -3, "");
        do_test("今日は", 1, 1, "");
        do_test("今日は", 2, 2, "");
        do_test("今日は", 3, 3, "");
        do_test("今日は", 2, 3, "日は");
        do_test("今日は", 0, 2, "今日");
        do_test("今日は", 1, 2, "今日");
    }
}