forked from Kitware/VTK
/
vtkTestingGL2PS.cmake
157 lines (147 loc) · 5.83 KB
/
vtkTestingGL2PS.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# vtk_add_gl2ps_test_cxx([pdf] <test> [<another test> <yet another test> ...])
#
# Takes a list of test source files as arguments and adds additional tests
# to convert a postscript output into png (RasterizePNG) and validates against a
# baseline (VerifyRasterizedPNG).
#
# If the first parameter is pdf, besides validating postscript files it validates pdf
# files using the same procedure. RasterizePNG will generate two pngs, one for the
# postscript file and one for the PDF file. We'll have two validation tests: VerifyRasterizedPNG
# and VerifyRasterizedPDFPNG
#
# This function does not replace vtk_add_test_cxx, but supplements it -- this
# only creates the rasterize/verify tests, vtk_add_test_cxx is needed to create
# the test that generates the original postscript.
function(vtk_add_gl2ps_test_cxx)
set(tests ${ARGN})
if(${ARGC} GREATER 0 AND "${ARGV0}" STREQUAL "pdf")
set (RASTERIZE_PDF TRUE)
list(REMOVE_AT tests 0)
else()
set (RASTERIZE_PDF FALSE)
endif()
foreach(test ${tests})
string(REGEX REPLACE ",.*" "" testsrc "${test}")
get_filename_component(TName ${testsrc} NAME_WE)
# Convert ps to png
add_test(NAME ${vtk-module}Cxx-${TName}-RasterizePNG
COMMAND ${CMAKE_COMMAND}
"-DPSFILE=${VTK_TEST_OUTPUT_DIR}/${TName}.ps"
"-DPNGFILE=${VTK_TEST_OUTPUT_DIR}/${TName}-raster.png"
"-DPDFPNGFILE=${VTK_TEST_OUTPUT_DIR}/${TName}-raster-pdf.png"
"-DGS_EXECUTABLE=${VTK_GHOSTSCRIPT_EXECUTABLE}"
-DREMOVEPS=1
-DRASTERIZE_PDF=${RASTERIZE_PDF}
-P "${vtkTestingGL2PS_SOURCE_DIR}/RasterizePostScript.cmake"
)
set_tests_properties("${vtk-module}Cxx-${TName}-RasterizePNG"
PROPERTIES
DEPENDS "${vtk-module}Cxx-${TName}"
REQUIRED_FILES
"${VTK_TEST_OUTPUT_DIR}/${TName}.ps"
LABELS "${${vtk-module}_TEST_LABELS}"
)
get_filename_component(TName ${test} NAME_WE)
if(${${TName}Error})
set(_error_threshold ${${TName}Error})
else()
set(_error_threshold 15)
endif()
# Unit test executable containing PNGCompare test:
if(VTK_RENDERING_BACKEND STREQUAL "OpenGL")
set(PNGCompareTest vtkRenderingGL2PSCxxTests)
elseif(VTK_RENDERING_BACKEND STREQUAL "OpenGL2")
set(PNGCompareTest vtkRenderingGL2PSOpenGL2CxxTests)
endif()
# Image diff rasterized png produced from a PS with baseline
ExternalData_add_test(VTKData
NAME ${vtk-module}Cxx-${TName}-VerifyRasterizedPNG
COMMAND "${PNGCompareTest}" PNGCompare
-D "${VTK_TEST_DATA_DIR}"
-T "${VTK_TEST_OUTPUT_DIR}"
-E "${_error_threshold}"
-V "DATA{../Data/Baseline/${TName}-rasterRef.png,:}"
--test-file "${VTK_TEST_OUTPUT_DIR}/${TName}-raster.png"
)
set_tests_properties("${vtk-module}Cxx-${TName}-VerifyRasterizedPNG"
PROPERTIES
DEPENDS "${vtk-module}Cxx-${TName}-RasterizePNG"
REQUIRED_FILES
"${VTK_TEST_OUTPUT_DIR}/${TName}-raster.png"
LABELS "${${vtk-module}_TEST_LABELS}"
)
if(${RASTERIZE_PDF})
ExternalData_add_test(VTKData
NAME ${vtk-module}Cxx-${TName}-VerifyRasterizedPDFPNG
COMMAND "${PNGCompareTest}" PNGCompare
-D "${VTK_TEST_DATA_DIR}"
-T "${VTK_TEST_OUTPUT_DIR}"
-E "${_error_threshold}"
-V "DATA{../Data/Baseline/${TName}-rasterRef.png,:}"
--test-file "${VTK_TEST_OUTPUT_DIR}/${TName}-raster-pdf.png"
)
set_tests_properties("${vtk-module}Cxx-${TName}-VerifyRasterizedPDFPNG"
PROPERTIES
DEPENDS "${vtk-module}Cxx-${TName}-RasterizePNG"
REQUIRED_FILES
"${VTK_TEST_OUTPUT_DIR}/${TName}-raster-pdf.png"
LABELS "${${vtk-module}_TEST_LABELS}"
)
endif()
endforeach()
endfunction()
# Like the above, but only tests PDF (instead of always PS and maybe PDF).
function(vtk_add_pdf_test_cxx)
set(tests ${ARGN})
foreach(test ${tests})
string(REGEX REPLACE ",.*" "" testsrc "${test}")
get_filename_component(TName ${testsrc} NAME_WE)
# Convert pdf to png
add_test(NAME ${vtk-module}Cxx-${TName}-RasterizePDFToPNG
COMMAND ${CMAKE_COMMAND}
"-DPDFFILE=${VTK_TEST_OUTPUT_DIR}/${TName}.pdf"
"-DPDFPNGFILE=${VTK_TEST_OUTPUT_DIR}/${TName}-rasterPDF.png"
"-DGS_EXECUTABLE=${VTK_GHOSTSCRIPT_EXECUTABLE}"
-DREMOVEPDF=1
-DRASTERIZE_PDF=1
-P "${vtkTestingGL2PS_SOURCE_DIR}/RasterizePostScript.cmake"
)
set_tests_properties("${vtk-module}Cxx-${TName}-RasterizePDFToPNG"
PROPERTIES
DEPENDS "${vtk-module}Cxx-${TName}"
REQUIRED_FILES
"${VTK_TEST_OUTPUT_DIR}/${TName}.pdf"
LABELS "${${vtk-module}_TEST_LABELS}"
)
get_filename_component(TName ${test} NAME_WE)
if(${${TName}Error})
set(_error_threshold ${${TName}Error})
else()
set(_error_threshold 15)
endif()
# Unit test executable containing PNGCompare test:
if(VTK_RENDERING_BACKEND STREQUAL "OpenGL")
set(PNGCompareTest vtkRenderingGL2PSCxxTests)
elseif(VTK_RENDERING_BACKEND STREQUAL "OpenGL2")
set(PNGCompareTest vtkRenderingGL2PSOpenGL2CxxTests)
endif()
# Image diff rasterized png produced from a PS with baseline
ExternalData_add_test(VTKData
NAME ${vtk-module}Cxx-${TName}-VerifyRasterizedPDFPNG
COMMAND "${PNGCompareTest}" PNGCompare
-D "${VTK_TEST_DATA_DIR}"
-T "${VTK_TEST_OUTPUT_DIR}"
-E "${_error_threshold}"
-V "DATA{../Data/Baseline/${TName}-rasterPDFRef.png,:}"
--test-file "${VTK_TEST_OUTPUT_DIR}/${TName}-rasterPDF.png"
)
set_tests_properties("${vtk-module}Cxx-${TName}-VerifyRasterizedPDFPNG"
PROPERTIES
DEPENDS "${vtk-module}Cxx-${TName}-RasterizePDFToPNG"
REQUIRED_FILES
"${VTK_TEST_OUTPUT_DIR}/${TName}-rasterPDF.png"
LABELS "${${vtk-module}_TEST_LABELS}"
)
endforeach()
endfunction()
set(vtkTestingGL2PS_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}")