flowcode-core 0.4.3-alpha

Core execution engine for FlowCode data scripting language
Documentation
use flowcode_core::parser::{Parser, ParsedCommand};
use flowcode_core::ast::ArgValue;
use flowcode_core::error::FCError;

#[test]
fn test_parse_combine() {
    let parser = Parser::new();
    let result = parser.parse("combine 10 20 30");
    assert_eq!(
        result,
        Ok(ParsedCommand {
            name: "combine".to_string(),
            args: vec![ArgValue::Number(10.0), ArgValue::Number(20.0), ArgValue::Number(30.0)]
        })
    );
}

#[test]
fn test_parse_predict() {
    let parser = Parser::new();
    let result = parser.parse("predict 1 2 3 4 5");
    assert_eq!(
        result,
        Ok(ParsedCommand {
            name: "predict".to_string(),
            args: vec![
                ArgValue::Number(1.0),
                ArgValue::Number(2.0),
                ArgValue::Number(3.0),
                ArgValue::Number(4.0),
                ArgValue::Number(5.0),
            ]
        })
    );
}

#[test]
fn test_parse_no_args() {
    let parser = Parser::new();
    let result = parser.parse("show");
    assert_eq!(
        result,
        Ok(ParsedCommand {
            name: "show".to_string(),
            args: vec![]
        })
    );
}

#[test]
fn test_parse_empty_input() {
    let parser = Parser::new();
    let result = parser.parse("");
    assert!(matches!(result, Err(FCError::ParseError(_))));
}

#[test]
fn test_parse_whitespace_only() {
    let parser = Parser::new();
    let result = parser.parse("   ");
    assert!(matches!(result, Err(FCError::ParseError(_))));
}

#[test]
fn test_parse_command_with_trailing_spaces() {
    let parser = Parser::new();
    let result = parser.parse("combine 10 20   ");
    assert_eq!(
        result,
        Ok(ParsedCommand {
            name: "combine".to_string(),
            args: vec![ArgValue::Number(10.0), ArgValue::Number(20.0)]
        })
    );
}