import os
import unittest

from pygame.tests import test_utils
import pygame
from pygame.locals import *


@unittest.skipIf(
    os.environ.get("SDL_VIDEODRIVER") == pygame.NULL_VIDEODRIVER,
    "OpenGL requires a non-null SDL_VIDEODRIVER",
)
class GL_ImageSave(unittest.TestCase):
    def test_image_save_works_with_opengl_surfaces(self):
        """
        |tags:display,slow,opengl|
        """

        pygame.display.init()
        screen = pygame.display.set_mode((640, 480), OPENGL | DOUBLEBUF)
        pygame.display.flip()

        tmp_dir = test_utils.get_tmp_dir()
        # Try the imageext module.
        tmp_file = os.path.join(tmp_dir, "opengl_save_surface_test.png")
        pygame.image.save(screen, tmp_file)

        self.assertTrue(os.path.exists(tmp_file))

        os.remove(tmp_file)

        # Only test the image module.
        tmp_file = os.path.join(tmp_dir, "opengl_save_surface_test.bmp")
        pygame.image.save(screen, tmp_file)

        self.assertTrue(os.path.exists(tmp_file))

        os.remove(tmp_file)

        # stops tonnes of tmp dirs building up in trunk dir
        os.rmdir(tmp_dir)
        pygame.display.quit()


if __name__ == "__main__":
    unittest.main()
