| """The catch engine must fire on the exact cues and stay quiet otherwise.""" |
| from witnessbox.contradictions import ContradictionEngine |
|
|
|
|
| def test_timeline_catch(): |
| eng = ContradictionEngine() |
| r = eng.detect( |
| "The wire cleared on March 6th — before the board approved it on the 14th.", |
| caught_ids=set(), |
| ) |
| assert r is not None and r.is_catch and r.lie.id == "timeline" |
|
|
|
|
| def test_authorization_catch(): |
| eng = ContradictionEngine() |
| r = eng.detect( |
| "Anything over $5 million requires the CFO's sign-off — and your credentials are on the authorization log.", |
| caught_ids=set(), |
| ) |
| assert r is not None and r.is_catch and r.lie.id == "authorization" |
|
|
|
|
| def test_relationship_catch(): |
| eng = ContradictionEngine() |
| r = eng.detect( |
| "You were cc'd on Meridian's incorporation filing two years ago — Dana Voss, your old colleague.", |
| caught_ids=set(), |
| ) |
| assert r is not None and r.is_catch and r.lie.id == "relationship" |
|
|
|
|
| def test_irrelevant_question_is_not_a_catch(): |
| eng = ContradictionEngine() |
| r = eng.detect("Were you in the office on Tuesday morning?", caught_ids=set()) |
| assert r is None or not r.is_catch |
|
|
|
|
| def test_partial_authorization_is_not_a_catch(): |
| |
| eng = ContradictionEngine() |
| r = eng.detect("Didn't you authorize it yourself?", caught_ids=set()) |
| assert r is not None and not r.is_catch |
|
|
|
|
| def test_already_caught_lie_is_skipped(): |
| eng = ContradictionEngine() |
| r = eng.detect( |
| "The wire cleared on March 6th, before the board approved it on the 14th.", |
| caught_ids={"timeline"}, |
| ) |
| assert r is None or r.lie.id != "timeline" |
|
|