tdo-core 0.2.1

The core of every Rust-based tdo application
Documentation
extern crate tdo_core;


#[cfg(test)]
mod counter {
    use tdo_core::{tdo, list, todo};

    #[test]
    fn highest_id_single_list() {
        let mut tdo = tdo::Tdo::new();
        tdo.add_list(list::TodoList::new("test")).unwrap();
        tdo.add_todo(Some("test"), todo::Todo::new(0, "First Entry", None))
            .unwrap();
        tdo.add_todo(Some("test"), todo::Todo::new(1, "Second Entry", None))
            .unwrap();

        assert_eq!(tdo.get_highest_id(), 1);
    }

    #[test]
    fn highest_id_multiple_list() {
        let mut tdo = tdo::Tdo::new();
        tdo.add_list(list::TodoList::new("test")).unwrap();
        tdo.add_todo(Some("test"), todo::Todo::new(0, "First Entry", None))
            .unwrap();
        tdo.add_todo(Some("test"), todo::Todo::new(1, "Second Entry", None))
            .unwrap();

        tdo.add_todo(None, todo::Todo::new(2, "Random third Entry", None))
            .unwrap();
        tdo.add_todo(None, todo::Todo::new(3, "Funny fourth Entry", None))
            .unwrap();

        assert_eq!(tdo.get_highest_id(), 3);
    }

    #[test]
    fn remove_number_between() {
        let mut tdo = tdo::Tdo::new();
        tdo.add_list(list::TodoList::new("test")).unwrap();
        tdo.add_todo(Some("test"), todo::Todo::new(0, "First Entry", None))
            .unwrap();
        tdo.add_todo(Some("test"), todo::Todo::new(1, "Second Entry", None))
            .unwrap();

        tdo.add_todo(None, todo::Todo::new(2, "Random third Entry", None))
            .unwrap();
        tdo.add_todo(None, todo::Todo::new(3, "Funny fourth Entry", None))
            .unwrap();

        tdo.remove_id(2).unwrap();
        assert_eq!(tdo.get_highest_id(), 3);
    }

    #[test]
    fn remove_highest_id() {
        let mut tdo = tdo::Tdo::new();
        tdo.add_list(list::TodoList::new("test")).unwrap();
        tdo.add_todo(Some("test"), todo::Todo::new(0, "First Entry", None))
            .unwrap();
        tdo.add_todo(Some("test"), todo::Todo::new(1, "Second Entry", None))
            .unwrap();

        tdo.add_todo(None, todo::Todo::new(2, "Random third Entry", None))
            .unwrap();
        tdo.add_todo(None, todo::Todo::new(3, "Funny fourth Entry", None))
            .unwrap();

        tdo.remove_id(3).unwrap();
        assert_eq!(tdo.get_highest_id(), 2);
    }

    #[test]
    fn move_item_between_lists() {
        let mut tdo = tdo::Tdo::new();
        tdo.add_list(list::TodoList::new("test")).unwrap();
        tdo.add_todo(Some("test"), todo::Todo::new(0, "First Entry", None))
            .unwrap();
        tdo.add_todo(Some("test"), todo::Todo::new(1, "Second Entry", None))
            .unwrap();

        tdo.add_todo(None, todo::Todo::new(2, "Random third Entry", None))
            .unwrap();
        tdo.add_todo(None, todo::Todo::new(3, "Funny fourth Entry", None))
            .unwrap();

        assert_eq!(tdo.move_todo(3, "test").unwrap(),
                   (),
                   "Moving the todo didn't work!");
        let list = tdo.find_id(3).unwrap();
        assert_eq!(tdo.lists[list].list.len(), 3);

        // make sure the new element is at the last position
        assert_eq!(tdo.lists[list].list[2].id, 3);

        tdo.add_todo(None, todo::Todo::new(4, "But can you pass this test?", None))
            .unwrap();
        tdo.move_todo(3, "default").unwrap();

        // make sure the element moved out of the list again
        assert_eq!(tdo.lists[list].list.len(), 2);
        let new_list = tdo.find_id(3).unwrap();
        assert_eq!(tdo.lists[new_list].list.len(), 3);
        // make sure the new element is at the  position
        assert_eq!(tdo.lists[new_list].list[1].id, 3);
    }
}