include("${CMAKE_CURRENT_LIST_DIR}/vtkWkHtmlToImage.cmake")

if (VTK_WKHTMLTOIMAGE_EXECUTABLE)
  set(SVGTests
    TestSVGContextExport.cxx,NO_DATA,NO_VALID
    TestSVGContextShading.cxx,NO_DATA,NO_VALID
    TestSVGExporterContextPolyData.cxx,NO_VALID
    )
endif()


vtk_add_test_cxx(vtkIOExportCxxTests tests
  X3DTest.cxx,NO_DATA,NO_VALID
  TestJSONRenderWindowExporter.cxx,NO_DATA,NO_VALID
  TestOBJExporter.cxx,NO_DATA,NO_VALID
  TestGLTFExporter.cxx,NO_DATA,NO_VALID
  TestSingleVTPExporter.cxx,NO_DATA,NO_VALID
  ${SVGTests}
  TestRIBExporter.cxx,NO_VALID
  UnitTestRIB.cxx,NO_DATA,NO_VALID
  )
vtk_test_cxx_executable(vtkIOExportCxxTests tests
  DISABLE_FLOATING_POINT_EXCEPTIONS
  RENDERING_FACTORY
  )

# See if Pixar's Renderman is available
find_path(RMANTREE bin/prman HINTS
          /Applications/Pixar/RenderManProServer-19.0
          /opt/pixar/RenderManProServer-19.0
)
mark_as_advanced(RMANTREE)

# Tests to run if Renderman is present
if(RMANTREE)
  # write a Renderman ini file to specify the shaderpath
  file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/rendermn.ini
          "/shaderpath &:${CMAKE_CURRENT_SOURCE_DIR}/Testing/Cxx")
  add_test(NAME VTK::IOExport-RIBExporterShaderCompile
          COMMAND ${RMANTREE}/bin/shader
          ${CMAKE_CURRENT_SOURCE_DIR}/../Data/Input/bozo.sl
          ${CMAKE_CURRENT_SOURCE_DIR}/../Data/Input/dented.sl
          WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  )
  add_test(NAME VTK::IOExport-RIBExporterPrman
          COMMAND ${RMANTREE}/bin/prman
            ${_vtk_build_TEST_OUTPUT_DIRECTORY}/TestRIBExporter.rib
          WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  )
  # Image diff rman generated tif with baseline
  set(baseline_dir ${CMAKE_CURRENT_SOURCE_DIR}/../Data/Baseline)
  ExternalData_add_test(${_vtk_build_TEST_DATA_TARGET}
        NAME VTK::IOExportCxx-ComparePrmanImage
        COMMAND ${RMANTREE}/bin/cmptiff -d 100
        DATA{${baseline_dir}/TestRIBExporter.tif}
        ${_vtk_build_TEST_OUTPUT_DIRECTORY}/TestRIBExporter.tif
  )
  set_tests_properties(VTK::IOExport-RIBExporterPrman
        PROPERTIES
        DEPENDS
        "VTK::IOExport-TestRIBExporter"
        DEPENDS
        "VTK::IOExport-RIBExporterShaderCompile"
        ENVIRONMENT
        "RMANTREE=${RMANTREE}"
  )
  set_tests_properties("VTK::IOExportCxx-ComparePrmanImage"
        PROPERTIES
        DEPENDS "VTK::IOExportCxx-TestRIBExporter"
        REQUIRED_FILES
          "${_vtk_build_TEST_OUTPUT_DIRECTORY}/TestRIBExporter.tif"
  )
endif()

include("${CMAKE_CURRENT_LIST_DIR}/vtkTestingSVG.cmake")
vtk_add_svg_test(${SVGTests})
