mirror of
https://github.com/pybricks/pybricks-api.git
synced 2026-07-27 19:57:02 +00:00
120 lines
2.8 KiB
Python
120 lines
2.8 KiB
Python
import json
|
|
|
|
import pytest
|
|
from pybricks_jedi import CompletionItem, complete
|
|
|
|
|
|
def _create_snippet(class_name: str) -> str:
|
|
"""
|
|
Creates a code snippet::
|
|
|
|
from pybricks.parameters import {class_name}
|
|
{class_name}.
|
|
|
|
Args:
|
|
line: The value substituted for ``{class_name}``
|
|
"""
|
|
return "\n".join(
|
|
(f"from pybricks.parameters import {class_name}", f"{class_name}.")
|
|
)
|
|
|
|
|
|
ENUMS = [
|
|
pytest.param(
|
|
"Color",
|
|
[
|
|
"BLACK",
|
|
"BLUE",
|
|
"BROWN",
|
|
"CYAN",
|
|
"GRAY",
|
|
"GREEN",
|
|
"MAGENTA",
|
|
"NONE",
|
|
"ORANGE",
|
|
"RED",
|
|
"VIOLET",
|
|
"WHITE",
|
|
"YELLOW",
|
|
],
|
|
),
|
|
pytest.param("Direction", ["CLOCKWISE", "COUNTERCLOCKWISE"]),
|
|
pytest.param(
|
|
"Icon",
|
|
[
|
|
"ARROW_DOWN",
|
|
"ARROW_LEFT",
|
|
"ARROW_LEFT_DOWN",
|
|
"ARROW_LEFT_UP",
|
|
"ARROW_RIGHT",
|
|
"ARROW_RIGHT_DOWN",
|
|
"ARROW_RIGHT_UP",
|
|
"ARROW_UP",
|
|
"CIRCLE",
|
|
"CLOCKWISE",
|
|
"COUNTERCLOCKWISE",
|
|
"DOWN",
|
|
"EMPTY",
|
|
"EYE_LEFT",
|
|
"EYE_LEFT_BLINK",
|
|
"EYE_LEFT_BROW",
|
|
"EYE_LEFT_BROW_UP",
|
|
"EYE_RIGHT",
|
|
"EYE_RIGHT_BLINK",
|
|
"EYE_RIGHT_BROW",
|
|
"EYE_RIGHT_BROW_UP",
|
|
"FALSE",
|
|
"FULL",
|
|
"HAPPY",
|
|
"HEART",
|
|
"LEFT",
|
|
"PAUSE",
|
|
"RIGHT",
|
|
"SAD",
|
|
"SQUARE",
|
|
"TRIANGLE_DOWN",
|
|
"TRIANGLE_LEFT",
|
|
"TRIANGLE_RIGHT",
|
|
"TRIANGLE_UP",
|
|
"TRUE",
|
|
"UP",
|
|
],
|
|
),
|
|
pytest.param("Port", ["A", "B", "C", "D", "E", "F", "S1", "S2", "S3", "S4"]),
|
|
pytest.param("Side", ["BACK", "BOTTOM", "FRONT", "LEFT", "RIGHT", "TOP"]),
|
|
pytest.param("Stop", ["BRAKE", "COAST", "COAST_SMART", "HOLD", "NONE"]),
|
|
]
|
|
|
|
|
|
@pytest.mark.parametrize("class_name,members", ENUMS)
|
|
def test_get_parameter_class_member_completion(class_name: str, members: list[str]):
|
|
|
|
code = _create_snippet(class_name)
|
|
completions: list[CompletionItem] = json.loads(
|
|
complete(code, 2, len(class_name) + 2)
|
|
)
|
|
assert [c["insertText"] for c in completions] == members
|
|
|
|
|
|
def test_get_parameter_color_completion():
|
|
code = "\n".join(["from pybricks.parameters import Color", "Color.RED."])
|
|
completions: list[CompletionItem] = json.loads(complete(code, 2, 11))
|
|
assert [c["insertText"] for c in completions] == [
|
|
"BLACK",
|
|
"BLUE",
|
|
"BROWN",
|
|
"CYAN",
|
|
"GRAY",
|
|
"GREEN",
|
|
"h",
|
|
"MAGENTA",
|
|
"NONE",
|
|
"ORANGE",
|
|
"RED",
|
|
"s",
|
|
"v",
|
|
"VIOLET",
|
|
"WHITE",
|
|
"YELLOW",
|
|
]
|