phalus 0.6.0

Private Headless Automated License Uncoupling System — AI-powered clean room software reimplementation
Documentation
pub fn check_api_surface(expected_exports: &[String], generated_code: &str) -> f64 {
    if expected_exports.is_empty() {
        return 1.0;
    }
    let found = expected_exports
        .iter()
        .filter(|name| generated_code.contains(name.as_str()))
        .count();
    found as f64 / expected_exports.len() as f64
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_all_exports_present() {
        let exports = vec!["add".into(), "subtract".into()];
        let code = "function add(a, b) {}\nfunction subtract(a, b) {}";
        assert!((check_api_surface(&exports, code) - 1.0).abs() < 0.001);
    }

    #[test]
    fn test_partial_exports() {
        let exports = vec!["add".into(), "subtract".into()];
        let code = "function add(a, b) {}";
        assert!((check_api_surface(&exports, code) - 0.5).abs() < 0.001);
    }
}