#[test]
fn test_quality_score_moderate_overlap() {
let config = CodeEdaConfig::default();
let eda = CodeEda::new(config);
let seed = "let x = 42;\nlet y = 99;\nlet z = x + y;".to_string();
let generated = "let value = 42;\nlet result = 99;\nlet z = value + result;".to_string();
let quality = eda.quality_score(&generated, &seed);
assert!(quality > 0.0);
}
#[test]
fn test_augment_all_operations_enabled() {
let config = CodeEdaConfig::default()
.with_rename_prob(1.0)
.with_comment_prob(1.0)
.with_reorder_prob(1.0)
.with_remove_prob(1.0);
let eda = CodeEda::new(config);
let code = "let x = 42;\nlet y = 99;\nlet n = x + y;\n";
let augmented = eda.augment(code, 100);
assert!(!augmented.is_empty());
}
#[test]
fn test_statement_reorder_single_statement() {
let config = CodeEdaConfig::default();
let eda = CodeEda::new(config);
let tokens = eda.tokenize("let x = 1;");
let mut rng = 42_u64;
let reordered = eda.apply_statement_reorder(&tokens, &mut rng);
let result: String = reordered.into_iter().collect();
assert_eq!(result, "let x = 1;");
}
#[test]
fn test_variable_rename_no_synonyms() {
let config = CodeEdaConfig::default().with_rename_prob(1.0);
let eda = CodeEda::new(config);
let tokens = eda.tokenize("let foobar = baz;");
let mut rng = 42_u64;
let renamed = eda.apply_variable_rename(&tokens, &mut rng);
let result: String = renamed.into_iter().collect();
assert!(result.contains("foobar"));
assert!(result.contains("baz"));
}
#[test]
fn test_code_language_default() {
let lang = CodeLanguage::default();
assert_eq!(lang, CodeLanguage::Rust);
}
#[test]
fn test_code_eda_config_partial_eq() {
let config1 = CodeEdaConfig::default();
let config2 = CodeEdaConfig::default();
assert_eq!(config1, config2);
let config3 = CodeEdaConfig::new().with_rename_prob(0.5);
assert_ne!(config1, config3);
}
#[test]
fn test_code_eda_debug_and_clone() {
let config = CodeEdaConfig::default();
let eda = CodeEda::new(config);
let cloned = eda.clone();
let debug_str = format!("{:?}", eda);
assert!(debug_str.contains("CodeEda"));
assert_eq!(cloned.config().num_augments, eda.config().num_augments);
}
#[test]
fn test_variable_synonyms_debug_and_clone() {
let synonyms = VariableSynonyms::new();
let cloned = synonyms.clone();
let debug_str = format!("{:?}", synonyms);
assert!(debug_str.contains("VariableSynonyms"));
assert_eq!(cloned.has_synonym("x"), synonyms.has_synonym("x"));
}