Files
TuxDMX-WebUI/tools/tuxdmx-midi-bridge/tests/test_midi_serialization.py
T
thomas 1f110866f5
CI / backend (pull_request) Canceled after 0s
CI / shell (pull_request) Canceled after 0s
CI / frontend (pull_request) Canceled after 0s
CI / arm64-smoke (pull_request) Canceled after 0s
CI / backend (push) Canceled after 0s
CI / shell (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
CI / arm64-smoke (push) Canceled after 0s
Update docs and screenshots
2026-07-25 10:26:29 +02:00

39 lines
1.1 KiB
Python

from __future__ import annotations
from dataclasses import dataclass
from tuxdmx_midi_bridge.midi import MidiEventFilter, normalize_message
@dataclass
class FakeMessage:
type: str
channel: int
note: int | None = None
control: int | None = None
program: int | None = None
velocity: int | None = None
value: int | None = None
def test_normalize_note_on() -> None:
payload = normalize_message(
FakeMessage(type="note_on", channel=0, note=36, velocity=127),
"bridge-a",
"USB MIDI",
)
assert payload is not None
assert payload["message"]["type"] == "note_on"
assert payload["message"]["number"] == 36
assert payload["message"]["value"] == 127
def test_filter_suppresses_duplicates_and_rate_limits_control_change() -> None:
event_filter = MidiEventFilter(channel_filter=None, control_change_interval_ms=25, suppress_duplicate_values=True)
payload = {
"message": {"type": "control_change", "channel": 0, "number": 14, "value": 64}
}
assert event_filter.should_forward(payload) is True
assert event_filter.should_forward(payload) is False