#![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_feature_089_as_bytes_basic_ascii() {
let temp_dir = TempDir::new().unwrap();
let test_file = temp_dir.path().join("test_as_bytes.ruchy");
let code = r#"
fun main() {
let text = "Hello";
let bytes = text.as_bytes();
println(bytes);
}
"#;
fs::write(&test_file, code).unwrap();
let output = ruchy_cmd().arg("run").arg(&test_file).assert().success();
let stdout = String::from_utf8_lossy(&output.get_output().stdout);
assert!(
stdout.contains("[72, 101, 108, 108, 111]"),
"Expected byte array for 'Hello', got: {stdout}"
);
}
#[test]
fn test_feature_089_as_bytes_empty_string() {
let temp_dir = TempDir::new().unwrap();
let test_file = temp_dir.path().join("test_empty.ruchy");
let code = r#"
fun main() {
let text = "";
let bytes = text.as_bytes();
println(bytes.len());
}
"#;
fs::write(&test_file, code).unwrap();
let output = ruchy_cmd().arg("run").arg(&test_file).assert().success();
let stdout = String::from_utf8_lossy(&output.get_output().stdout);
assert!(
stdout.contains('0'),
"Expected length 0 for empty string, got: {stdout}"
);
}
#[test]
fn test_feature_089_as_bytes_utf8() {
let temp_dir = TempDir::new().unwrap();
let test_file = temp_dir.path().join("test_utf8.ruchy");
let code = r#"
fun main() {
let text = "A";
let bytes = text.as_bytes();
// 'A' is ASCII 65
println(bytes[0]);
}
"#;
fs::write(&test_file, code).unwrap();
let output = ruchy_cmd().arg("run").arg(&test_file).assert().success();
let stdout = String::from_utf8_lossy(&output.get_output().stdout);
assert!(
stdout.contains("65"),
"Expected byte value 65 for 'A', got: {stdout}"
);
}
#[test]
fn test_feature_089_as_bytes_indexing() {
let temp_dir = TempDir::new().unwrap();
let test_file = temp_dir.path().join("test_index.ruchy");
let code = r#"
fun main() {
let text = "ABC";
let bytes = text.as_bytes();
println(bytes[0]);
println(bytes[1]);
println(bytes[2]);
}
"#;
fs::write(&test_file, code).unwrap();
let output = ruchy_cmd().arg("run").arg(&test_file).assert().success();
let stdout = String::from_utf8_lossy(&output.get_output().stdout);
assert!(stdout.contains("65"), "Expected 65 (A), got: {stdout}");
assert!(stdout.contains("66"), "Expected 66 (B), got: {stdout}");
assert!(stdout.contains("67"), "Expected 67 (C), got: {stdout}");
}
#[test]
fn test_feature_089_as_bytes_special_chars() {
let temp_dir = TempDir::new().unwrap();
let test_file = temp_dir.path().join("test_special.ruchy");
let code = r#"
fun main() {
let text = "\n";
let bytes = text.as_bytes();
println(bytes[0]);
}
"#;
fs::write(&test_file, code).unwrap();
let output = ruchy_cmd().arg("run").arg(&test_file).assert().success();
let stdout = String::from_utf8_lossy(&output.get_output().stdout);
assert!(
stdout.contains("10"),
"Expected byte value 10 for newline, got: {stdout}"
);
}
#[test]
fn test_feature_089_as_bytes_iteration() {
let temp_dir = TempDir::new().unwrap();
let test_file = temp_dir.path().join("test_iter.ruchy");
let code = r#"
fun main() {
let text = "Hi";
let bytes = text.as_bytes();
for byte in bytes {
println(byte);
}
}
"#;
fs::write(&test_file, code).unwrap();
let output = ruchy_cmd().arg("run").arg(&test_file).assert().success();
let stdout = String::from_utf8_lossy(&output.get_output().stdout);
assert!(stdout.contains("72"), "Expected 72 (H), got: {stdout}");
assert!(stdout.contains("105"), "Expected 105 (i), got: {stdout}");
}
#[test]
fn test_feature_089_as_bytes_method_chaining() {
let temp_dir = TempDir::new().unwrap();
let test_file = temp_dir.path().join("test_chain.ruchy");
let code = r#"
fun main() {
let text = "Test";
let length = text.as_bytes().len();
println(length);
}
"#;
fs::write(&test_file, code).unwrap();
let output = ruchy_cmd().arg("run").arg(&test_file).assert().success();
let stdout = String::from_utf8_lossy(&output.get_output().stdout);
assert!(
stdout.contains('4'),
"Expected length 4 for 'Test', got: {stdout}"
);
}
#[test]
fn test_feature_089_other_string_methods_still_work() {
let temp_dir = TempDir::new().unwrap();
let test_file = temp_dir.path().join("test_sanity.ruchy");
let code = r#"
fun main() {
let text = "Hello";
println(text.len());
println(text.to_uppercase());
}
"#;
fs::write(&test_file, code).unwrap();
let output = ruchy_cmd().arg("run").arg(&test_file).assert().success();
let stdout = String::from_utf8_lossy(&output.get_output().stdout);
assert!(stdout.contains('5'), "Expected length 5, got: {stdout}");
assert!(stdout.contains("HELLO"), "Expected HELLO, got: {stdout}");
}