#![cfg_attr(coverage_nightly, coverage(off))]
use super::*;
use std::sync::Arc;
#[test]
fn test_rust_adapter_creation() {
let adapter = RustAdapter::new();
assert_eq!(adapter.name(), "rust");
assert_eq!(adapter.extensions(), &["rs"]);
}
#[test]
fn test_rust_adapter_mutation_operators_count() {
let adapter = RustAdapter::new();
let operators = adapter.mutation_operators();
assert_eq!(operators.len(), 6);
}
#[test]
fn test_rust_adapter_mutation_operators_names() {
let adapter = RustAdapter::new();
let operators = adapter.mutation_operators();
let names: Vec<&str> = operators.iter().map(|op| op.name()).collect();
assert!(names.contains(&"AOR"));
assert!(names.contains(&"ROR"));
assert!(names.contains(&"COR"));
assert!(names.contains(&"UOR"));
assert!(names.contains(&"CRR"));
assert!(names.contains(&"SDL"));
}
#[tokio::test]
async fn test_rust_adapter_parse_valid() {
let adapter = RustAdapter::new();
let source = "fn main() { println!(\"Hello\"); }";
let result = adapter.parse(source).await;
assert!(result.is_ok());
}
#[tokio::test]
async fn test_rust_adapter_parse_invalid() {
let adapter = RustAdapter::new();
let source = "fn main() { invalid syntax here }}}";
let result = adapter.parse(source).await;
assert!(result.is_err());
}
#[tokio::test]
async fn test_rust_adapter_unparse() {
let adapter = RustAdapter::new();
let source = "fn test() {}";
let result = adapter.unparse(source).await;
assert!(result.is_ok());
assert_eq!(result.unwrap(), source);
}