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
+)
};
static enum SetupMethod setupMethod = POINTER;
-static enum DerefMethod derefMethod = DRAWARRAYS;
+static enum DerefMethod derefMethod = DRAWELEMENTS;
static int win;
int main(int argc, char** argv)
{
+ parseArgs(argc, argv);
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(350, 350);
+++ /dev/null
-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()
--- /dev/null
+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()
--- /dev/null
+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()
--- /dev/null
+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()
flushes = 0
ref_line = ''
+ src_lines = []
if self.ref_dump is not None:
ref = open(self.ref_dump, 'rt')
ref_line = ref.readline().rstrip()
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()