libwispha 0.1.0

Library is used by Wispha program.
Documentation
use libwispha::core::*;
use libwispha::serde::ser::Error;

use std::rc::Rc;
use std::cell::RefCell;
use std::path::PathBuf;

use maplit::*;

#[test]
fn to_json_test() {
    let config = TreeConfig {
        project_name: String::from("TestProject")
    };

    let tree = Tree::new(&config);

    let root_path = NodePath::new(&tree);
    let subnode1_path = root_path.push(String::from("subnode1"));

    let root = Rc::new(RefCell::new(Node::Direct(DirectNode {
        children: vec![subnode1_path.clone()],
        node_properties: NodeProperties {
            name: "TestProject".to_string(),
            parent: None,
            record_file: PathBuf::from("LOOKME.json")
        },
        properties: hashmap!{"description".to_string() => "Project directory".to_string()}
    })));

    tree.insert_node(root_path.clone(), root);

    let subnode1 = Rc::new(RefCell::new(Node::Direct(DirectNode {
        children: vec![],
        node_properties: NodeProperties {
            name: "subnode1".to_string(),
            parent: Some(root_path.clone()),
            record_file: PathBuf::from("LOOKME.json")
        },
        properties: hashmap!{"description".to_string() => "subnode1".to_string()}
    })));

    tree.insert_node(subnode1_path.clone(), subnode1);

    let string = tree.to_string();
    assert!(string.is_ok())
}

#[test]
fn none_tree_test() {
    let tree = Tree::new(&TreeConfig {
        project_name: "My Project".to_string()
    });

    let res = tree.to_string();
    if let Err(error) = res {
        match error {
            Error::EmptyTree => assert!(true),
            _ => assert!(false)
        }
    } else {
        assert!(false)
    }
}