"""Controller return-code translation. The vendor SDK header defines the auxiliary error block at 30000; everything else is the firmware's own number. The point of these tests is that AutoCal never invents a meaning for a code it cannot read out of that header. """ from __future__ import annotations import pytest from orisys_autocal.motion import errors DOCUMENTED = sorted(errors.MESSAGES) def test_zero_is_success_in_both_languages(): assert errors.describe(0) == "成功" assert errors.describe(0, language="en_US") == "OK" def test_the_documented_block_is_the_vendor_offset(): assert errors.ERR_AUX_OFFSET == 30000 assert DOCUMENTED == [30000, 30001, 30002, 30003, 30004, 30005] @pytest.mark.parametrize("code", DOCUMENTED) def test_every_documented_code_has_both_languages(code): zh = errors.describe(code) en = errors.describe(code, language="en_US") assert zh and en and zh != en @pytest.mark.parametrize("code", DOCUMENTED) def test_no_documented_message_is_empty(code): assert errors.describe(code).strip() assert errors.describe(code, language="en_US").strip() def test_an_unknown_code_keeps_its_number(): """A guessed meaning on a motion controller is worse than 'unknown'.""" message = errors.describe(12345) assert "12345" in message assert message == "错误码 12345" def test_an_unknown_code_points_at_zdevelop(): message = errors.describe_with_hint(-1) assert "-1" in message assert errors.UNKNOWN_HINT in message def test_a_documented_code_gets_no_hint_appended(): assert errors.describe_with_hint(30000) == errors.describe(30000)