#![cfg(not(target_arch = "wasm32"))]
use runmat_core::format_tokens;
#[test]
fn tokenize_simple_input() {
let result = format_tokens("x = 1 + 2;");
assert_eq!(result, "Ident Assign Integer Plus Integer Semicolon");
}
#[test]
fn handles_whitespace_and_comments() {
let result = format_tokens("foo % comment\n+");
assert_eq!(result, "Ident Newline Plus");
}
#[test]
fn empty_input_yields_empty_string() {
let result = format_tokens("");
assert!(result.is_empty());
}
#[test]
fn unknown_char_produces_error() {
let result = format_tokens("$");
assert_eq!(result, "Error");
}
#[test]
fn unterminated_string_is_error_token() {
let result = format_tokens("'oops");
assert!(result.contains("Error"));
}
#[test]
fn keywords_are_case_sensitive() {
let result = format_tokens("IF ELSE");
assert_eq!(result, "Ident Ident");
}
#[test]
fn complex_expression_tokens() {
let result = format_tokens("1 * (2 + 3)");
assert_eq!(result, "Integer Star LParen Integer Plus Integer RParen");
}
#[test]
fn multiple_statements() {
let result = format_tokens("x=1; y=2;");
assert_eq!(
result,
"Ident Assign Integer Semicolon Ident Assign Integer Semicolon"
);
}