57 lines
2.7 KiB
Python
57 lines
2.7 KiB
Python
from __future__ import annotations
|
|
|
|
from copy import deepcopy
|
|
|
|
import pytest
|
|
|
|
from cognitive_agent.application.mode_creation_seat_policy import (
|
|
ModeCreationSeatPolicyError,
|
|
creation_seat_scopes,
|
|
project_seed_operations,
|
|
)
|
|
|
|
|
|
@pytest.mark.parametrize(("text", "expected"), [
|
|
("构建一个阅读模式", {"passenger"}),
|
|
("构建一个座椅动态模式", {"passenger"}),
|
|
("构建一个主驾阅读模式", {"driver"}),
|
|
("为驾驶员构建一个舒适模式", {"driver"}),
|
|
("构建一个副驾阅读模式", {"passenger"}),
|
|
("构建一个副驾驶座椅舒适模式", {"passenger"}),
|
|
("构建一个副驾驶席阅读模式", {"passenger"}),
|
|
("为副驾驶位构建阅读模式", {"passenger"}),
|
|
("构建一个主副驾阅读模式", {"driver", "passenger"}),
|
|
("构建一个双座舒适模式", {"driver", "passenger"}),
|
|
("构建一个前排两座舒适模式", {"driver", "passenger"}),
|
|
("构建一个两个座椅阅读模式", {"driver", "passenger"}),
|
|
("构建一个两张座椅阅读模式", {"driver", "passenger"}),
|
|
("构建一个两座椅阅读模式", {"driver", "passenger"}),
|
|
("构建一个主驾空调舒适模式", {"passenger"}),
|
|
("构建一个模式,主驾温度26度", {"passenger"}),
|
|
("构建一个副驾座椅舒适模式,主驾空调26度", {"passenger"}),
|
|
("构建一个主驾舒适模式,副驾空调26度", {"driver"}),
|
|
("构建一个阅读模式,不要动主驾", {"passenger"}),
|
|
("构建一个主驾阅读模式,副驾不要动", {"driver"}),
|
|
("构建一个模式,只联动副驾,不要联动主驾", {"passenger"}),
|
|
("构建一个后排座椅舒适模式", {"unsupported"}),
|
|
("构建一个未知座位模式", {"unsupported"}),
|
|
("构建一个任意座位模式", {"unsupported"}),
|
|
])
|
|
def test_creation_seat_selection(text, expected):
|
|
assert creation_seat_scopes(text) == expected
|
|
|
|
|
|
def test_seed_projection_is_non_mutating_and_does_not_borrow_capabilities():
|
|
seed = [
|
|
{"domain": "seat", "capability": "seat.set_driver_ventilation_native", "target_scope": "driver", "parameters": {"level": 2}},
|
|
{"domain": "seat", "capability": "seat.set_backrest_recline", "target_scope": "passenger", "parameters": {"position_pct": 45}},
|
|
{"domain": "climate", "capability": "climate.set_temperature", "target_scope": "passenger", "parameters": {"temperature_c": 24}},
|
|
]
|
|
original = deepcopy(seed)
|
|
projected = project_seed_operations(seed, frozenset({"driver"}))
|
|
assert projected == [seed[0], seed[2]]
|
|
projected[0]["parameters"]["level"] = 1
|
|
assert seed == original
|
|
with pytest.raises(ModeCreationSeatPolicyError):
|
|
project_seed_operations(seed[1:], frozenset({"driver"}))
|