#![allow(missing_docs)]
use assert_cmd::Command;
use std::fs;
use tempfile::TempDir;
fn ruchy_cmd() -> Command {
assert_cmd::cargo::cargo_bin_cmd!("ruchy")
}
#[test]
fn test_actor_state_block_with_default_value() {
let temp = TempDir::new().expect("Failed to create temp dir");
let source = temp.path().join("test.ruchy");
let code = r"
actor Counter {
state {
count: i32 = 0
}
}
";
fs::write(&source, code).expect("Failed to write test file");
ruchy_cmd().arg("check").arg(&source).assert().success();
}
#[test]
fn test_actor_state_block_without_default_value() {
let temp = TempDir::new().expect("Failed to create temp dir");
let source = temp.path().join("test.ruchy");
let code = r"
actor Counter {
state {
count: i32
}
}
";
fs::write(&source, code).expect("Failed to write test file");
ruchy_cmd().arg("check").arg(&source).assert().success();
}
#[test]
fn test_actor_state_block_multiple_fields_with_defaults() {
let temp = TempDir::new().expect("Failed to create temp dir");
let source = temp.path().join("test.ruchy");
let code = r#"
actor User {
state {
name: &str = "Anonymous"
age: i32 = 0
active: bool = true
}
}
"#;
fs::write(&source, code).expect("Failed to write test file");
ruchy_cmd().arg("check").arg(&source).assert().success();
}
#[test]
fn test_actor_state_block_mixed_defaults() {
let temp = TempDir::new().expect("Failed to create temp dir");
let source = temp.path().join("test.ruchy");
let code = r"
actor Database {
state {
url: &str
port: i32 = 5432
timeout: i32
}
}
";
fs::write(&source, code).expect("Failed to write test file");
ruchy_cmd().arg("check").arg(&source).assert().success();
}
#[test]
fn test_actor_combining_state_variable_and_block() {
let temp = TempDir::new().expect("Failed to create temp dir");
let source = temp.path().join("test.ruchy");
let code = r#"
actor OrderProcessor {
state {
order_state: &str = "new"
}
receive Process => {
let mut state = "processing";
self.order_state = state
}
}
fun process_order() -> &str {
let mut state = "pending";
if true {
state = "confirmed";
}
state
}
"#;
fs::write(&source, code).expect("Failed to write test file");
ruchy_cmd().arg("check").arg(&source).assert().success();
}