"""Tests for debug tools.""" import pytest from unittest.mock import MagicMock from unreal_mcp.tools.debug import analyze_crash_dump @pytest.mark.asyncio async def test_analyze_crash_dump_null_pointer( mock_connection: MagicMock, ) -> None: """Test crash dump analysis for null pointer.""" crash_log = """ Access violation - code c0000005 (first/second chance not available) Unreal Engine is exiting due to D3D device being lost. NullPointerException at Weapon.cpp:145 """ result = await analyze_crash_dump(mock_connection, crash_log) assert result["success"] is True assert "Null pointer" in result["data"]["root_cause"] assert result["data"]["file"] == "Weapon.cpp" assert result["data"]["line"] == 145 @pytest.mark.asyncio async def test_analyze_crash_dump_array_bounds( mock_connection: MagicMock, ) -> None: """Test crash dump analysis for array out of bounds.""" crash_log = "Array index out of bounds: index 10 from array of size 5" result = await analyze_crash_dump(mock_connection, crash_log) assert result["success"] is True assert "Array" in result["data"]["root_cause"] assert "IsValidIndex" in result["data"]["fix_suggestion"] @pytest.mark.asyncio async def test_analyze_crash_dump_stack_overflow( mock_connection: MagicMock, ) -> None: """Test crash dump analysis for stack overflow.""" crash_log = "Stack overflow error in recursive function call" result = await analyze_crash_dump(mock_connection, crash_log) assert result["success"] is True assert "Stack overflow" in result["data"]["root_cause"] @pytest.mark.asyncio async def test_analyze_crash_dump_division_zero( mock_connection: MagicMock, ) -> None: """Test crash dump analysis for division by zero.""" crash_log = "Divide by zero error in calculation" result = await analyze_crash_dump(mock_connection, crash_log) assert result["success"] is True assert "Division by zero" in result["data"]["root_cause"] assert "SMALL_NUMBER" in result["data"]["fix_suggestion"]