import pytest from unittest.mock import patch, MagicMock import OpenGL.GL as gl def test_shader_manager_fbo_initialization(): with patch("src.shader_manager.gl") as mock_gl: mock_gl.glGenFramebuffers.return_value = 1 mock_gl.glGenTextures.return_value = 2 mock_gl.glCheckFramebufferStatus.return_value = mock_gl.GL_FRAMEBUFFER_COMPLETE from src.shader_manager import ShaderManager manager = ShaderManager() manager.setup_capture_fbo(800, 600) assert manager.capture_fbo == 1 assert manager.capture_tex == 2 assert mock_gl.glGenFramebuffers.called assert mock_gl.glGenTextures.called assert mock_gl.glCheckFramebufferStatus.called def test_shader_manager_capture_lifecycle(): with patch("src.shader_manager.gl") as mock_gl: mock_gl.glCheckFramebufferStatus.return_value = mock_gl.GL_FRAMEBUFFER_COMPLETE from src.shader_manager import ShaderManager manager = ShaderManager() # Ensure setup is called on first capture manager.capture_begin(1024, 768) assert manager.fbo_width == 1024 assert manager.fbo_height == 768 assert mock_gl.glBindFramebuffer.called mock_gl.glBindFramebuffer.reset_mock() manager.capture_end() # Verify unbind (glBindFramebuffer(..., 0)) mock_gl.glBindFramebuffer.assert_called_with(mock_gl.GL_FRAMEBUFFER, 0)