38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
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)
|