diff --git a/tests/test_validate_network.py b/tests/test_validate_network.py index 95a9362..4d108d3 100644 --- a/tests/test_validate_network.py +++ b/tests/test_validate_network.py @@ -114,6 +114,26 @@ class ValidationTests(unittest.TestCase): with self.assertRaisesRegex(ValueError,'unsupported conduit shape'): self.run_case(fixture(text),text) + def test_coordinate_roundoff_inside_tolerance_passes(self): + data=fixture();data['nodes'][1]['xy'][0]+=0.0000005 + data['links'][0]['pathXY'][1][0]+=0.0000005 + self.assertEqual(self.run_case(data)['status'],'passed') + + def test_coordinate_change_outside_tolerance_fails(self): + data=fixture();data['nodes'][1]['xy'][0]+=0.000002 + self.assertEqual(self.run_case(data)['status'],'failed') + + def test_nested_comparison_rejects_nonfinite_boolean_and_null(self): + for bad in (float('nan'),float('inf'),True,None): + with self.subTest(bad=bad): + self.assertFalse(validator.values_match({'xy':[bad,2]}, {'xy':[1,2]},1e-6)) + self.assertFalse(validator.values_match({'flag':1},{'flag':True},1e-6)) + + def test_nested_comparison_keeps_id_and_order(self): + self.assertFalse(validator.values_match(['A','B'],['B','A'],1e-6)) + self.assertFalse(validator.values_match('1',1,1e-6)) + self.assertTrue(validator.values_match({'xy':[1.0000005,2]}, {'xy':[1,2]},1e-6)) + if __name__=='__main__': unittest.main()