40 lines
2.0 KiB
Python
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()
|