add dora-joy node publishing gamepad axes and buttons
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
"""The probe: what it draws, without a pad or a terminal."""
|
||||
|
||||
from dora_joy.gamepad import Sample
|
||||
from dora_joy.probe import bar, render
|
||||
from tests.conftest import stick
|
||||
|
||||
|
||||
def test_a_centred_stick_puts_the_marker_in_the_middle():
|
||||
drawn = bar(0.0)
|
||||
|
||||
assert drawn[len(drawn) // 2] == "#"
|
||||
|
||||
|
||||
def test_the_bar_leans_the_way_the_stick_is_pushed():
|
||||
left = bar(-1.0)
|
||||
right = bar(1.0)
|
||||
|
||||
assert left.index("#") < left.index("|")
|
||||
assert right.index("#") > right.index("|")
|
||||
|
||||
|
||||
def test_a_reading_beyond_full_deflection_stays_on_the_bar():
|
||||
# SDL has been known to report slightly outside -1..1 on a worn stick.
|
||||
assert "#" in bar(-4.0)
|
||||
assert "#" in bar(4.0)
|
||||
|
||||
|
||||
def test_no_gamepad_says_so_and_names_the_index_it_looked_for(config):
|
||||
config.joystick_index = 2
|
||||
|
||||
drawn = render(Sample(present=False), config)
|
||||
|
||||
assert "no gamepad found" in drawn
|
||||
assert "index 2" in drawn
|
||||
|
||||
|
||||
def test_every_axis_the_pad_reports_is_shown(config):
|
||||
# A pad whose sticks land on unexpected indices is what this is for, so
|
||||
# nothing may be hidden.
|
||||
drawn = render(Sample(axes=[0.0] * 8, buttons=[], present=True), config)
|
||||
|
||||
assert "axes (8 reported)" in drawn
|
||||
for index in range(8):
|
||||
assert f" {index} " in drawn
|
||||
|
||||
|
||||
def test_the_buttons_being_held_are_listed_by_index(config):
|
||||
drawn = render(stick(buttons=[False, True, False, True]), config)
|
||||
|
||||
assert "1, 3" in drawn
|
||||
|
||||
|
||||
def test_a_pad_with_nothing_pressed_says_so(config):
|
||||
assert "none pressed" in render(stick(), config)
|
||||
Reference in New Issue
Block a user