]> git.cworth.org Git - apitrace-tests/commitdiff
Test varray variants.
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Fri, 4 Nov 2011 06:46:28 +0000 (06:46 +0000)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Fri, 4 Nov 2011 06:46:28 +0000 (06:46 +0000)
apps/gl/CMakeLists.txt
apps/gl/varray.c
apps/gl/varray.ref.txt [deleted file]
apps/gl/varray_drawarrays.ref.txt [new file with mode: 0644]
apps/gl/varray_drawelements.ref.txt [new file with mode: 0644]
apps/gl/varray_interleaved.ref.txt [new file with mode: 0644]
driver.py

index e14ad3a680aa2cf6cfcee4ebdef534410c9e33f4..42688190138f936d2233ae46c4651021656f4cce 100644 (file)
@@ -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
-            "$<TARGET_FILE:${subdir}_${target}>"
+            --ref-dump ${CMAKE_CURRENT_SOURCE_DIR}/${TEST_REF}
+            "$<TARGET_FILE:${TEST_TARGET}>"
+            ${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
+                "$<TARGET_FILE:${subdir}_${target}>"
+        )
+    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
+)
index edc09fe8c1fad81a3a16e8946bb29a302e34c155..6632fac1e262c0ce17b08cb30d5da405d388561b 100644 (file)
@@ -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.ref.txt
deleted file mode 100644 (file)
index 636db63..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-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(72))
-glVertexPointer(size = 2, type = GL_INT, stride = 8, pointer = blob(48))
-glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 6)
-glFlush()
diff --git a/apps/gl/varray_drawarrays.ref.txt b/apps/gl/varray_drawarrays.ref.txt
new file mode 100644 (file)
index 0000000..636db63
--- /dev/null
@@ -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(72))
+glVertexPointer(size = 2, type = GL_INT, stride = 8, pointer = blob(48))
+glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 6)
+glFlush()
diff --git a/apps/gl/varray_drawelements.ref.txt b/apps/gl/varray_drawelements.ref.txt
new file mode 100644 (file)
index 0000000..cf817f3
--- /dev/null
@@ -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 (file)
index 0000000..07aaa4b
--- /dev/null
@@ -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()
index e219e611c9288022c2bd947a1648177e7fca89be..31f49fc68a2dfbc3a541379186d63c0342c63b49 100755 (executable)
--- 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()