Skip to content

Commit de2d9f3

Browse files
committed
Basic testcase setup
1 parent 1a621ee commit de2d9f3

File tree

7 files changed

+88
-7
lines changed

7 files changed

+88
-7
lines changed

.travis.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ matrix:
77
- env: TOXENV=pep8
88
python: 3.6
99

10-
install: pip install tox
10+
install:
11+
- export DISPLAY=:99.0; sh -e /etc/init.d/xvfb start
12+
- pip install tox
13+
- pip install pytest
1114

12-
script: tox
15+
script:
16+
- tox
17+
- pytest

demosys/test/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from .testcase import DemosysTestCase # noqa

demosys/test/testcase.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
from unittest import TestCase
2+
3+
import demosys
4+
from demosys import context, resources
5+
from demosys.opengl import ShaderProgram, TextureArray
6+
from demosys.view import controller
7+
8+
demosys.setup()
9+
controller.create_window()
10+
11+
12+
class DemosysTestCase(TestCase):
13+
window = context.window()
14+
15+
def create_shader(self, source):
16+
program = ShaderProgram(name="test")
17+
program.set_source(source)
18+
return program
19+
20+
def get_shader(self, path):
21+
return resources.shaders.get(path, create=True)
22+
23+
def get_texture(self, path):
24+
return resources.textures.get(path, create=True)
25+
26+
def get_texture_array(self, path, layers=0):
27+
return resources.textures.get(path, create=True, cls=TextureArray, layers=layers)
28+
29+
def get_track(self, name):
30+
return resources.tracks.get(name)

demosys/view/controller.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,22 @@
1515
from demosys.utils import module_loading
1616

1717

18+
def create_window():
19+
window_cls_name = settings.WINDOW.get('class', 'demosys.context.glfw.GLFW_Window')
20+
print("window class", window_cls_name)
21+
window_cls = module_loading.import_string(window_cls_name)
22+
window = window_cls()
23+
window.print_context_info()
24+
return window
25+
26+
1827
def run(manager=None):
1928
"""
2029
Initialize, load and run
2130
2231
:param manager: The effect manager to use
2332
"""
24-
window_cls_name = settings.WINDOW.get('class', 'demosys.context.glfw.GLFW_Window')
25-
print("window class", window_cls_name)
26-
window_cls = module_loading.import_string(window_cls_name)
27-
window = window_cls()
28-
window.print_context_info()
33+
window = create_window()
2934
window.manager = manager
3035

3136
print("Loader started at", time.time())

tests/settings.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
"cursor": True,
2424
}
2525

26+
HEADLESS_FRAMES = 1
27+
2628
# MUSIC = os.path.join(PROJECT_DIR, 'resources/music/tg2035.mp3')
2729
TIMER = 'demosys.timers.Timer'
2830
# TIMER = 'demosys.timers.RocketTimer'

tests/test_stuff.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from demosys.test import DemosysTestCase
2+
from demosys.opengl import FBO
3+
4+
5+
class SuffTest(DemosysTestCase):
6+
7+
def test_stuff(self):
8+
FBO.create((10, 10), depth=True)
9+
10+
def test_shader(self):
11+
self.create_shader(
12+
"""#version 330
13+
#if defined VERTEX_SHADER
14+
in vec3 in_position;
15+
void main() {
16+
gl_Position = vec4(in_position, 1.0);
17+
}
18+
#elif defined FRAGMENT_SHADER
19+
out vec4 fragColor;
20+
void main() {
21+
fragColor = vec4(1.0);
22+
}
23+
#endif
24+
"""
25+
)

tests/test_window.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import moderngl
2+
from demosys.conf import settings
3+
from demosys.test import DemosysTestCase
4+
5+
6+
class WindowTestCase(DemosysTestCase):
7+
8+
def test_ctx(self):
9+
assert isinstance(self.window.ctx, moderngl.Context)
10+
11+
def test_size(self):
12+
assert self.window.width == settings.WINDOW['size'][0]
13+
assert self.window.height == settings.WINDOW['size'][1]

0 commit comments

Comments
 (0)