algorithmify 0.1.1

Create specifications for algorithms defined using Rust code
Documentation
use algorithmify::Interpreter;
use algorithmify_macros::define_function_builder;

#[test]
pub fn test_basic_if_condition() {
    #[define_function_builder]
    fn if_condition() -> usize {
        let mut result = 1;

        if result < 10 {
            result = result + 1;
        }

        result
    }

    let expression = Interpreter::execute_function(if_condition__function_builder()).unwrap();

    assert_eq!(if_condition(), 2);
    assert_eq!(expression, 2.into());
}

#[test]
pub fn test_if_else_condition() {
    #[define_function_builder]
    fn if_else_condition() -> usize {
        let mut result = 1;

        if result == 2 {
            result = result + 1;
        } else {
            result = result + 2;
        }

        result
    }

    let expression = Interpreter::execute_function(if_else_condition__function_builder()).unwrap();

    assert_eq!(if_else_condition(), 3);
    assert_eq!(expression, 3.into());
}

#[test]
pub fn test_else_if_condition() {
    #[define_function_builder]
    fn else_if_condition() -> usize {
        let mut result = 1;

        if result == 2 {
            result = result + 1;
        } else if result == 1 {
            result = result + 2;
        } else {
            result = 10;
        }

        result
    }

    let expression = Interpreter::execute_function(else_if_condition__function_builder()).unwrap();

    assert_eq!(else_if_condition(), 3);
    assert_eq!(expression, 3.into());
}