//! Deliberately trapping Component used to verify Actor fault isolation.
//!
//! Sending the exact bytes `fault` triggers a panic. This crate is a test
//! fixture and must not be deployed as an application service.

mod bindings {
    // Compile the versioned WIT world into canonical ABI Rust bindings.
    wit_bindgen::generate!({
        path: "wit",
        world: "fault-component",
    });
}

struct Fault;

impl bindings::Guest for Fault {
    fn init(_config: Vec<u8>) -> Result<(), bindings::ServiceError> {
        Ok(())
    }

    fn invoke(input: Vec<u8>) -> Result<Vec<u8>, bindings::ServiceError> {
        // A panic becomes a Wasm trap so Runtime tests can assert that one
        // faulted Actor does not corrupt other service instances.
        assert_ne!(input, b"fault", "intentional test fault");
        Ok(input)
    }
}

bindings::export!(Fault with_types_in bindings);
