#[cfg(test)]
mod pqc {
    use cas_lib::{hashers::sha::CASSHA, pqc::{cas_pqc::MlKemKeyPair, ml_kem::{ml_kem_1024_decapsulate, ml_kem_1024_encapsulate, ml_kem_1024_generate}, slh_dsa::*}};
    use cas_lib::hashers::cas_hasher::CASHasher;

    #[test]
    pub fn round_trip_mlkem1024() {
        let secret_key_public_key: MlKemKeyPair = ml_kem_1024_generate();
            let ct = ml_kem_1024_encapsulate(secret_key_public_key.public_key).expect("encapsulate failed");
            let ss_receiver = ml_kem_1024_decapsulate(secret_key_public_key.secret_key, ct.ciphertext).expect("decapsulate failed");
        assert_eq!(ss_receiver, ss_receiver);
    }

    #[test]
    pub fn hkdf_sha256_pass() {
        let to_hash = b"Lets HashThis".to_vec();
        let hash = <CASSHA as CASHasher>::hash_512(to_hash.clone());

        let keys = generate_signing_and_verification_key();
        let signature = sign_message(hash.clone(), keys.signing_key).unwrap();
        let is_valid = verify_signature(hash, signature, keys.verification_key).unwrap();
        assert_eq!(true, is_valid);
    }

    #[test]
    pub fn hkdf_sha256_fail() {
        let to_hash = b"Lets HashThis".to_vec();
        let hash = <CASSHA as CASHasher>::hash_512(to_hash.clone());

        let keys = generate_signing_and_verification_key();
        let signature = sign_message(hash, keys.signing_key).unwrap();
        let is_valid = verify_signature(to_hash, signature, keys.verification_key).unwrap();
        assert_eq!(false, is_valid);
    }
}