import unittest from finalize import decide_status class FinalStatusTests(unittest.TestCase): def decide(self, **overrides): args = dict(numerical=True, seed=dict(execution_gate_pass=True, representation_gate_pass=True), novel=dict(execution_gate_pass=True, representation_gate_pass=True), integrity_pass=True, reference_pass=True, reference_present=True) args.update(overrides) return decide_status(**args) def test_complete_only_representation_pass_is_not_named_learning(self): self.assertEqual(self.decide(), 'PASS-FROZEN-D18-INDEPENDENT-VALIDATION') def test_seed_failure_without_novel_is_completed_scientific_failure(self): self.assertEqual(self.decide(seed=dict(execution_gate_pass=True, representation_gate_pass=False), novel=None), 'FAIL-SEED-VALIDATION-REPRESENTATION') def test_novel_gate_failure_is_preserved(self): self.assertEqual(self.decide(novel=dict(execution_gate_pass=True, representation_gate_pass=False)), 'FAIL-NOVEL-ODOR-REPRESENTATION') def test_missing_execution_or_reference_is_not_scientific_pass(self): for changes in (dict(numerical=False), dict(novel=None), dict(reference_present=False), dict(seed=None)): with self.subTest(changes=changes): self.assertEqual(self.decide(**changes), 'INCOMPLETE-VALIDATION-EXECUTION') def test_numerical_and_unlock_failure_are_not_representation_results(self): self.assertEqual(self.decide(known_numerical_failure=True), 'FAIL-NUMERICAL-OR-EXECUTION-POLICY') self.assertEqual(self.decide(unauthorized_novel=True), 'FAIL-NUMERICAL-OR-EXECUTION-POLICY') def test_old_integrity_or_reference_fail_overrides_new_pass(self): self.assertEqual(self.decide(integrity_pass=False), 'FAIL-FROZEN-INTEGRITY-OR-REGRESSION') self.assertEqual(self.decide(reference_pass=False), 'FAIL-FROZEN-INTEGRITY-OR-REGRESSION') if __name__ == '__main__': unittest.main()