diff --git a/src/pyrecest/utils/_point_set_registration_common.py b/src/pyrecest/utils/_point_set_registration_common.py index ec6ea09cf..2fb04cde0 100644 --- a/src/pyrecest/utils/_point_set_registration_common.py +++ b/src/pyrecest/utils/_point_set_registration_common.py @@ -224,7 +224,7 @@ def _validate_tolerance(tolerance) -> float: raise ValueError("tolerance must be a finite non-negative scalar.") tolerance_scalar = tolerance_array.item() - if isinstance(tolerance_scalar, bool): + if isinstance(tolerance_scalar, (bool, str, bytes, bytearray)): raise ValueError("tolerance must be a finite non-negative scalar.") try: diff --git a/tests/test_registration_loop_control_validation.py b/tests/test_registration_loop_control_validation.py index 147de3d27..c8b93968e 100644 --- a/tests/test_registration_loop_control_validation.py +++ b/tests/test_registration_loop_control_validation.py @@ -45,6 +45,24 @@ def test_joint_registration_assignment_rejects_invalid_min_matches(self): min_matches=bad_value, ) + @unittest.skipIf( + pyrecest.backend.__backend_name__ == "jax", + reason="Not supported on this backend", + ) + def test_joint_registration_assignment_rejects_text_tolerance(self): + reference = array([[0.0, 0.0], [1.0, 0.0], [0.0, 1.0]]) + moving = reference + array([1.0, -1.0]) + + for bad_value in ("0.1", b"0.1"): + with self.subTest(bad_value=bad_value): + with self.assertRaisesRegex(ValueError, "tolerance"): + joint_registration_assignment( + reference, + moving, + model="translation", + tolerance=bad_value, + ) + @unittest.skipIf( pyrecest.backend.__backend_name__ == "jax", reason="Not supported on this backend",