From 7acb60aa5e6b9c2d905c64a1416d222c83bd9e79 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Fri, 4 Nov 2011 06:46:28 +0000 Subject: [PATCH] Test varray variants. --- apps/gl/CMakeLists.txt | 60 ++++++++++++++++--- apps/gl/varray.c | 3 +- ...rray.ref.txt => varray_drawarrays.ref.txt} | 0 apps/gl/varray_drawelements.ref.txt | 13 ++++ apps/gl/varray_interleaved.ref.txt | 13 ++++ driver.py | 10 +++- 6 files changed, 90 insertions(+), 9 deletions(-) rename apps/gl/{varray.ref.txt => varray_drawarrays.ref.txt} (100%) create mode 100644 apps/gl/varray_drawelements.ref.txt create mode 100644 apps/gl/varray_interleaved.ref.txt diff --git a/apps/gl/CMakeLists.txt b/apps/gl/CMakeLists.txt index e14ad3a..4268819 100644 --- a/apps/gl/CMakeLists.txt +++ b/apps/gl/CMakeLists.txt @@ -19,15 +19,61 @@ set (targets varray ) -foreach (target ${targets}) - add_executable (${subdir}_${target} ${target}.c) - set_target_properties (${subdir}_${target} PROPERTIES OUTPUT_NAME ${target}) +function (ADD_APP_TEST) + cmake_parse_arguments( + TEST + # Options + "" + # One value args + "NAME;TARGET;REF" + # Multi value args + "ARGS" + ${ARGN} + ) add_test( - NAME ${subdir}_${target} - COMMAND python ${CMAKE_SOURCE_DIR}/driver.py + NAME ${TEST_NAME} + COMMAND + python ${CMAKE_SOURCE_DIR}/driver.py --build ${APITRACE_BINARY_DIR} - --ref-dump ${CMAKE_CURRENT_SOURCE_DIR}/${target}.ref.txt - "$" + --ref-dump ${CMAKE_CURRENT_SOURCE_DIR}/${TEST_REF} + "$" + ${TEST_ARGS} ) +endfunction () + +foreach (target ${targets}) + add_executable (${subdir}_${target} ${target}.c) + set_target_properties (${subdir}_${target} PROPERTIES OUTPUT_NAME ${target}) + + if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${target}.ref.txt) + add_test( + NAME ${subdir}_${target} + COMMAND python ${CMAKE_SOURCE_DIR}/driver.py + --build ${APITRACE_BINARY_DIR} + --ref-dump ${CMAKE_CURRENT_SOURCE_DIR}/${target}.ref.txt + "$" + ) + endif () endforeach (target) + +add_app_test ( + NAME "gl_varray_drawarrays" + TARGET ${subdir}_varray + REF varray_drawarrays.ref.txt + ARGS pointer drawarrays +) + +add_app_test ( + NAME "gl_varray_elements" + TARGET ${subdir}_varray + REF varray_drawelements.ref.txt + ARGS pointer drawelements +) + +add_app_test ( + NAME "gl_varray_interleaved" + TARGET ${subdir}_varray + REF varray_interleaved.ref.txt + ARGS interleaved drawarrays +) diff --git a/apps/gl/varray.c b/apps/gl/varray.c index edc09fe..6632fac 100644 --- a/apps/gl/varray.c +++ b/apps/gl/varray.c @@ -66,7 +66,7 @@ enum DerefMethod { }; static enum SetupMethod setupMethod = POINTER; -static enum DerefMethod derefMethod = DRAWARRAYS; +static enum DerefMethod derefMethod = DRAWELEMENTS; static int win; @@ -175,6 +175,7 @@ static void reshape(int w, int h) int main(int argc, char** argv) { + parseArgs(argc, argv); glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(350, 350); diff --git a/apps/gl/varray.ref.txt b/apps/gl/varray_drawarrays.ref.txt similarity index 100% rename from apps/gl/varray.ref.txt rename to apps/gl/varray_drawarrays.ref.txt diff --git a/apps/gl/varray_drawelements.ref.txt b/apps/gl/varray_drawelements.ref.txt new file mode 100644 index 0000000..cf817f3 --- /dev/null +++ b/apps/gl/varray_drawelements.ref.txt @@ -0,0 +1,13 @@ +glClearColor(red = 0, green = 0, blue = 0, alpha = 0) +glShadeModel(mode = GL_SMOOTH) +glEnableClientState(array = GL_VERTEX_ARRAY) +glEnableClientState(array = GL_COLOR_ARRAY) +glViewport(x = 0, y = 0, width = 350, height = 350) +glMatrixMode(mode = GL_PROJECTION) +glLoadIdentity() +glOrtho(left = 0, right = 350, bottom = 0, top = 350, zNear = -1, zFar = 1) +glClear(mask = GL_COLOR_BUFFER_BIT) +glColorPointer(size = 3, type = GL_FLOAT, stride = 12, pointer = blob(60)) +glVertexPointer(size = 2, type = GL_INT, stride = 8, pointer = blob(40)) +glDrawElements(mode = GL_POLYGON, count = 4, type = GL_UNSIGNED_INT, indices = blob(16)) +glFlush() diff --git a/apps/gl/varray_interleaved.ref.txt b/apps/gl/varray_interleaved.ref.txt new file mode 100644 index 0000000..07aaa4b --- /dev/null +++ b/apps/gl/varray_interleaved.ref.txt @@ -0,0 +1,13 @@ +glClearColor(red = 0, green = 0, blue = 0, alpha = 0) +glShadeModel(mode = GL_SMOOTH) +glEnableClientState(array = GL_VERTEX_ARRAY) +glEnableClientState(array = GL_COLOR_ARRAY) +glViewport(x = 0, y = 0, width = 350, height = 350) +glMatrixMode(mode = GL_PROJECTION) +glLoadIdentity() +glOrtho(left = 0, right = 350, bottom = 0, top = 350, zNear = -1, zFar = 1) +glClear(mask = GL_COLOR_BUFFER_BIT) +glColorPointer(size = 3, type = GL_FLOAT, stride = 12, pointer = blob(60)) +glVertexPointer(size = 2, type = GL_INT, stride = 8, pointer = blob(40)) +glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 6) +glFlush() diff --git a/driver.py b/driver.py index e219e61..31f49fc 100755 --- a/driver.py +++ b/driver.py @@ -138,6 +138,7 @@ class TestCase: flushes = 0 ref_line = '' + src_lines = [] if self.ref_dump is not None: ref = open(self.ref_dump, 'rt') ref_line = ref.readline().rstrip() @@ -157,11 +158,18 @@ class TestCase: if src_line == ref_line: sys.stdout.write(src_line + '\n') ref_line = ref.readline().rstrip() + src_lines = [] + else: + src_lines.append(src_line) + p.wait() if p.returncode != 0: self.fail('`apitrace dump` returned code %i' % p.returncode) if ref_line: - self.fail('missing call %s' % ref_line) + if src_lines: + self.fail('missing call `%s` (found `%s`)' % (ref_line, src_lines[0])) + else: + self.fail('missing call %s' % ref_line) def run(self): self.standalone() -- 2.43.0