Files
2026-09-30 13:18:18 +08:00

40 lines
2.0 KiB
Python

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()