"""Conservative-graph contracts of the opt-in manual local-probe experiment.""" import importlib.util from pathlib import Path import unittest from types import SimpleNamespace from app.simulation.native_codegen.jacobian import StateDependencies spec=importlib.util.spec_from_file_location('local_probe_experiment',Path(__file__).parent/'manual/local_probe_experiment.py') experiment=importlib.util.module_from_spec(spec) spec.loader.exec_module(experiment) class LocalProbeDependenciesTests(unittest.TestCase): def test_unknown_leaf_taints_every_state_and_transitive_consumer(self): d=StateDependencies(3);d.assign('p[0]',{'unregistered_context'});d.assign('q[0]',{'p[0]'}) masks,unknown=experiment.dependency_masks(d) self.assertEqual(unknown,{'unregistered_context'}) self.assertEqual(masks['q[0]'],0b111) def test_union_of_branch_writes_is_preserved(self): d=StateDependencies(3);d.assign('w[0]',{'y[0]'});d.assign('w[0]',{'y[2]'}) d.assign('q[0]',{'w[0]'}) masks,_=experiment.dependency_masks(d) self.assertEqual(masks['q[0]'],0b101) def test_projected_state_coupling_reaches_downstream_equations(self): d=StateDependencies(3);d.project_states([0,1]);d.assign('p[0]',{'y[0]'}) d.assign('dy[2]',{'p[0]'}) masks,_=experiment.dependency_masks(d) self.assertEqual(masks['dy[2]'],0b011) def test_dependency_cycle_conservatively_reaches_fixed_point(self): d=StateDependencies(3);d.assign('p[0]',{'q[0]','y[0]'}) d.assign('q[0]',{'p[0]','y[2]'}) masks,_=experiment.dependency_masks(d) self.assertEqual(masks['p[0]'],0b101) self.assertEqual(masks['q[0]'],0b101) def test_experiment_refuses_to_slice_cyclic_schedule(self): d=StateDependencies(2);d.expression('dy[0]','y[0]');d.expression('dy[1]','y[1]') program=SimpleNamespace(manifest=lambda:{'jacobianStructure':{'reuse':{'enabled':True}}}) saved={'dependencies':d,'schedule':SimpleNamespace(blocks=[SimpleNamespace(cyclic=True)])} with self.assertRaisesRegex(ValueError,'rejects SCCs'): experiment.generate(program,saved) if __name__=='__main__':unittest.main()