from genomeloom.signature import generate_behavioral_signature, signature_summary def test_signature_determinism(): seq = ["open", "read", "close", "open", "write", "close"] imports = ["wasi::fd_read", "wasi::fd_write"] s1 = generate_behavioral_signature(seq, imports) s2 = generate_behavioral_signature(seq, imports) assert s1 == s2 def test_signature_changes_on_sequence(): seq1 = ["open", "read", "close"] seq2 = ["open", "write", "close"] imports = [] s1 = generate_behavioral_signature(seq1, imports) s2 = generate_behavioral_signature(seq2, imports) assert s1 != s2 def test_signature_summary_structure(): seq = ["socket", "connect", "send", "recv", "close"] imports = ["net"] summary = signature_summary(seq, imports) assert "ngrams" in summary assert "imports" in summary assert summary["imports"] == ["net"]