procon 0.2.6

Procon (Pro)perty (Con)verter A program to convert between different property formats.
Documentation
use procon::property_file_reader::Delimiter;

use crate::test_helper::{assert_node, parse_test_file};

mod test_helper;

#[test]
fn yaml_file_string() {
    let nodes = parse_test_file(Delimiter::Equals, "tests/resources/yaml/string.yaml");
    println!("{:?}", nodes);

    let string_node = nodes.get(0).unwrap();
    assert_node(
        &string_node,
        "string1".to_string(),
        "Sample String 1".to_string(),
    );

    let string_node = nodes.get(1).unwrap();
    assert_node(
        &string_node,
        "string2".to_string(),
        "Sample String 2".to_string(),
    );

    let string_node = nodes.get(2).unwrap();
    assert_node(
        &string_node,
        "string3".to_string(),
        "Sample String 3".to_string(),
    );
}

#[test]
fn yaml_file_list() {
    let nodes = parse_test_file(Delimiter::Equals, "tests/resources/yaml/list.yaml");
    println!("{:?}", nodes);

    let list_node = nodes.get(0).unwrap();
    assert_node(&list_node, "list".to_string(), "A,B,C".to_string());
}

#[test]
fn yaml_file_root_list() {
    let nodes = parse_test_file(Delimiter::Equals, "tests/resources/yaml/root-list.yaml");
    println!("{:?}", nodes);

    let list_node = nodes.get(0).unwrap();
    assert_node(&list_node, "".to_string(), "A,B,C".to_string());
}

#[test]
fn yaml_file_types() {
    let nodes = parse_test_file(Delimiter::Equals, "tests/resources/yaml/types.yaml");
    println!("{:?}", nodes);

    let float_node = nodes.get(0).unwrap();
    assert_node(&float_node, "a".to_string(), "123.0".to_string());
    let string_node = nodes.get(1).unwrap();
    assert_node(&string_node, "b".to_string(), "123".to_string());
}

#[test]
fn yaml_file_comment() {
    let nodes = parse_test_file(Delimiter::Equals, "tests/resources/yaml/comment.yaml");

    let float_node = nodes.get(0).unwrap();
    assert_node(&float_node, "key".to_string(), "value".to_string());
}

#[test]
fn yaml_file_example() {
    let nodes = parse_test_file(Delimiter::Equals, "tests/resources/yaml/example.yaml");
    println!("{:?}", nodes);

    let address_node = nodes.get(0).unwrap();
    assert_node(&address_node, "address".to_string(), "".to_string());
    let list_node = address_node.children.get(0).unwrap();
    assert_node(&list_node, "list".to_string(), "A,B,C".to_string());
    let street_node = address_node.children.get(1).unwrap();
    assert_node(
        &street_node,
        "street".to_string(),
        "123 Tornado Alley\nSuite 16            \ncity:   East Centerville\nstate:  KS\n"
            .to_string(),
    );

    let contact_node = nodes.get(1).unwrap();
    assert_node(&contact_node, "contact".to_string(), "".to_string());
    let home_node = contact_node.children.get(0).unwrap();
    assert_node(&home_node, "home".to_string(), "1012355532".to_string());
    let office_node = contact_node.children.get(1).unwrap();
    assert_node(&office_node, "office".to_string(), "5002586256".to_string());

    let name_node = nodes.get(2).unwrap();
    assert_node(&name_node, "name".to_string(), "John Smith".to_string());
}