feat: tolerate recoverable seat intent inputs
This commit is contained in:
@@ -301,6 +301,29 @@ class LocalIntentParserTests(unittest.TestCase):
|
||||
self.assertTrue(minimum["actions"][0]["motion_intent"]["duration_clamped"])
|
||||
self.assertIn("最小允许时长为0.3秒", minimum["actions"][0]["user_notice"])
|
||||
|
||||
def test_rounds_decimal_and_clamps_negative_absolute_positions(self) -> None:
|
||||
decimal = parse_local_intent("副驾座椅水平位置调到50.5%")
|
||||
negative = parse_local_intent("副驾座椅水平位置调到-10%")
|
||||
|
||||
self.assertEqual(decimal["ambiguities"], [])
|
||||
self.assertEqual(decimal["actions"][0]["position_pct"], 51)
|
||||
self.assertIn("取整为51%", decimal["actions"][0]["user_notice"])
|
||||
self.assertEqual(negative["ambiguities"], [])
|
||||
self.assertEqual(negative["actions"][0]["position_pct"], 0)
|
||||
self.assertIn("0%的备用目标", negative["actions"][0]["user_notice"])
|
||||
|
||||
def test_zero_duration_uses_minimum_safe_motion_instead_of_rejecting(self) -> None:
|
||||
result = parse_local_intent(
|
||||
"副驾靠背向后移动0秒", self.motion_context()
|
||||
)
|
||||
|
||||
self.assertEqual(result["ambiguities"], [])
|
||||
motion = result["actions"][0]["motion_intent"]
|
||||
self.assertEqual(motion["requested_duration_ms"], 0)
|
||||
self.assertEqual(motion["applied_duration_ms"], 300)
|
||||
self.assertTrue(motion["duration_clamped"])
|
||||
self.assertIn("已按0.3秒", result["actions"][0]["user_notice"])
|
||||
|
||||
def test_rejects_unsupported_level_and_conflicting_state(self) -> None:
|
||||
unsupported = parse_local_intent("副驾加热开到4档")
|
||||
conflicting = parse_local_intent("打开副驾加热然后关闭副驾加热")
|
||||
|
||||
Reference in New Issue
Block a user