Skip to main content
Glama
test_midi_hardware.py4.28 kB
"""Test cases for MIDI hardware operations""" import pytest from .conftest import call_tool, reaper_available @pytest.mark.integration @pytest.mark.skipif(not reaper_available(), reason="REAPER not available") class TestMIDIHardware: """Test MIDI hardware-related operations""" @pytest.fixture(autouse=True) def setup_teardown(self, mock_project): """Ensure clean state for each test""" pass def test_get_num_midi_inputs(self, mock_project): """Test getting number of MIDI inputs""" result = call_tool("get_num_midi_inputs", {}) assert result["success"] assert "Number of MIDI inputs:" in result["result"] # Extract the count count_str = result["result"].split(": ")[1] count = int(count_str) assert count >= 0 def test_get_num_midi_outputs(self, mock_project): """Test getting number of MIDI outputs""" result = call_tool("get_num_midi_outputs", {}) assert result["success"] assert "Number of MIDI outputs:" in result["result"] # Extract the count count_str = result["result"].split(": ")[1] count = int(count_str) assert count >= 0 def test_get_midi_input_names(self, mock_project): """Test getting MIDI input names""" # First get the count result = call_tool("get_num_midi_inputs", {}) assert result["success"] count = int(result["result"].split(": ")[1]) # Get names for available inputs (test up to 3 or available count) test_count = min(count, 3) for i in range(test_count): result = call_tool("get_midi_input_name", {"input_index": i}) assert result["success"] assert f"MIDI input {i}:" in result["result"] def test_get_midi_output_names(self, mock_project): """Test getting MIDI output names""" # First get the count result = call_tool("get_num_midi_outputs", {}) assert result["success"] count = int(result["result"].split(": ")[1]) # Get names for available outputs (test up to 3 or available count) test_count = min(count, 3) for i in range(test_count): result = call_tool("get_midi_output_name", {"output_index": i}) assert result["success"] assert f"MIDI output {i}:" in result["result"] def test_invalid_midi_input_index(self, mock_project): """Test error handling for invalid MIDI input index""" # Try to get name of a very high index that likely doesn't exist result = call_tool("get_midi_input_name", {"input_index": 9999}) # This might succeed if there are many MIDI inputs, or fail # We just check that we get a response assert "result" in result or "error" in result def test_invalid_midi_output_index(self, mock_project): """Test error handling for invalid MIDI output index""" # Try to get name of a very high index that likely doesn't exist result = call_tool("get_midi_output_name", {"output_index": 9999}) # This might succeed if there are many MIDI outputs, or fail # We just check that we get a response assert "result" in result or "error" in result def test_midi_system_info(self, mock_project): """Test getting complete MIDI system information""" # Get input count result = call_tool("get_num_midi_inputs", {}) assert result["success"] input_count = int(result["result"].split(": ")[1]) # Get output count result = call_tool("get_num_midi_outputs", {}) assert result["success"] output_count = int(result["result"].split(": ")[1]) # Basic sanity checks assert input_count >= 0 assert output_count >= 0 # If we have MIDI devices, test getting their names if input_count > 0: result = call_tool("get_midi_input_name", {"input_index": 0}) assert result["success"] if output_count > 0: result = call_tool("get_midi_output_name", {"output_index": 0}) assert result["success"]

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/shiehn/total-reaper-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server