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)]
})
);
}