cmake_minimum_required (VERSION 2.8.6)
PROJECT (HDFJAVA_TEST_OBJECT_MISC Java)

SET(CMAKE_VERBOSE_MAKEFILE 1)

INCLUDE_DIRECTORIES(
    ${JAVA_NCSA_HDF_HDF4_BINARY_DIR}
    ${JAVA_NCSA_HDF_HDF5_BINARY_DIR}
    ${JAVA_NCSA_HDF_OBJECT_BINARY_DIR}
    ${HDFJAVA_LIB_DIR}
)

###########################################################################
# TestH5Object
###########################################################################

SET (CMAKE_JAVA_INCLUDE_PATH ${HDFJAVA_OBJECT_JARS})

FILE (WRITE ${PROJECT_BINARY_DIR}/TestH5Object_Manifest.txt
"Main-Class: test.object.misc.TestH5Object
"
)
ADD_JAR (TestH5Object ${PROJECT_BINARY_DIR}/TestH5Object_Manifest.txt TestH5Object.java)
GET_TARGET_PROPERTY(TestH5Object_JAR_FILE TestH5Object JAR_FILE)
ADD_DEPENDENCIES (TestH5Object ${HDFJAVA_NCSA_H5_LIB_TARGET})

IF (WIN32 AND NOT CYGWIN)
  SET(CMAKE_JAVA_INCLUDE_FLAG_SEP ";")
ELSE (WIN32 AND NOT CYGWIN)
  SET(CMAKE_JAVA_INCLUDE_FLAG_SEP ":")
ENDIF(WIN32 AND NOT CYGWIN)

SET (CMAKE_JAVA_CLASSPATH ".")
FOREACH (CMAKE_INCLUDE_PATH ${CMAKE_JAVA_INCLUDE_PATH})
  SET(CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_INCLUDE_PATH}")
ENDFOREACH(CMAKE_INCLUDE_PATH)
SET (CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${TestH5Object_JAR_FILE}")

ADD_TEST (
    NAME TESTH5OBJECT-object-misc
    COMMAND "${CMAKE_COMMAND}"
        -D "TEST_TESTER=${CMAKE_Java_RUNTIME}"
        -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}"
        -D "TEST_ARGS:STRING="
        -D "TEST_PROGRAM=test.object.misc.TestH5Object"
        -D "TEST_LIBRARY_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}"
        -D "TEST_FOLDER=${HDFJAVA_TEST_OBJECT_MISC_BINARY_DIR}"
        -D "TEST_OUTPUT=TestH5Object.out"
        -D "TEST_EXPECT=0"
        -D "TEST_REFERENCE=TestH5Object.txt"
        -D "TEST_SKIP_COMPARE=TRUE"
        -P "${HDFJAVA_RESOURCES_DIR}/runTest.cmake"
)

###########################################################################
# TestH5Table
###########################################################################

FILE (WRITE ${PROJECT_BINARY_DIR}/TestH5Table_Manifest.txt
"Main-Class: test.object.misc.TestH5Table
"
)
ADD_JAR (TestH5Table ${PROJECT_BINARY_DIR}/TestH5Table_Manifest.txt TestH5Table.java)
GET_TARGET_PROPERTY(TestH5Table_JAR_FILE TestH5Table JAR_FILE)
ADD_DEPENDENCIES (TestH5Table ${HDFJAVA_NCSA_H5_LIB_TARGET})

IF (HDFJAVA_TEST_H5TABLE)
  IF (WIN32 AND NOT CYGWIN)
    SET(CMAKE_JAVA_INCLUDE_FLAG_SEP ";")
  ELSE (WIN32 AND NOT CYGWIN)
  SET(CMAKE_JAVA_INCLUDE_FLAG_SEP ":")
  ENDIF(WIN32 AND NOT CYGWIN)

  SET (CMAKE_JAVA_CLASSPATH ".")
  FOREACH (CMAKE_INCLUDE_PATH ${CMAKE_JAVA_INCLUDE_PATH})
    SET(CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_INCLUDE_PATH}")
  ENDFOREACH(CMAKE_INCLUDE_PATH)
  SET (CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${TestH5Table_JAR_FILE}")

  ADD_TEST (
      NAME TESTH5TABLE-object-misc
      COMMAND "${CMAKE_COMMAND}"
          -D "TEST_TESTER=${CMAKE_Java_RUNTIME}"
          -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}"
          -D "TEST_ARGS:STRING="
          -D "TEST_PROGRAM=test.object.misc.TestH5Table"
          -D "TEST_LIBRARY_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}"
          -D "TEST_FOLDER=${HDFJAVA_TEST_OBJECT_MISC_BINARY_DIR}"
          -D "TEST_OUTPUT=TestH5Table.out"
          -D "TEST_EXPECT=0"
          -D "TEST_REFERENCE=TestH5Table.txt"
          -D "TEST_SKIP_COMPARE=TRUE"
          -P "${HDFJAVA_RESOURCES_DIR}/runTest.cmake"
  )
ENDIF (HDFJAVA_TEST_H5TABLE)

###########################################################################
# TestDebugHDF
###########################################################################

FILE (WRITE ${PROJECT_BINARY_DIR}/TestDebugHDF_Manifest.txt
"Main-Class: test.object.misc.DebugHDF
"
)
ADD_JAR (TestDebugHDF ${PROJECT_BINARY_DIR}/TestDebugHDF_Manifest.txt DebugHDF.java)
GET_TARGET_PROPERTY(TestDebugHDF_JAR_FILE TestDebugHDF JAR_FILE)
ADD_DEPENDENCIES (TestDebugHDF ${HDFJAVA_NCSA_H5_LIB_TARGET})

IF (HDFJAVA_TEST_DEBUGHDF)
  IF (WIN32 AND NOT CYGWIN)
    SET(CMAKE_JAVA_INCLUDE_FLAG_SEP ";")
  ELSE (WIN32 AND NOT CYGWIN)
  SET(CMAKE_JAVA_INCLUDE_FLAG_SEP ":")
  ENDIF(WIN32 AND NOT CYGWIN)

  SET (CMAKE_JAVA_CLASSPATH ".")
  FOREACH (CMAKE_INCLUDE_PATH ${CMAKE_JAVA_INCLUDE_PATH})
    SET(CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_INCLUDE_PATH}")
  ENDFOREACH(CMAKE_INCLUDE_PATH)
  SET (CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${TestDebugHDF_JAR_FILE}")

  ADD_TEST (
      NAME TESTDEBUGHDF-object-misc
      COMMAND "${CMAKE_COMMAND}"
          -D "TEST_TESTER=${CMAKE_Java_RUNTIME}"
          -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}"
          -D "TEST_ARGS:STRING="
          -D "TEST_PROGRAM=test.object.misc.DebugHDF"
          -D "TEST_LIBRARY_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}"
          -D "TEST_FOLDER=${HDFJAVA_TEST_OBJECT_MISC_BINARY_DIR}"
          -D "TEST_OUTPUT=DebugHDF.out"
          -D "TEST_EXPECT=0"
          -D "TEST_REFERENCE=DebugHDF.txt"
          -D "TEST_SKIP_COMPARE=TRUE"
          -P "${HDFJAVA_RESOURCES_DIR}/runTest.cmake"
  )
ENDIF (HDFJAVA_TEST_DEBUGHDF)

###########################################################################
# TestH5File
###########################################################################

FILE (WRITE ${PROJECT_BINARY_DIR}/TestH5File_Manifest.txt
"Main-Class: test.object.misc.TestH5File
"
)
ADD_JAR (TestH5File ${PROJECT_BINARY_DIR}/TestH5File_Manifest.txt TestH5File.java)
GET_TARGET_PROPERTY(TestH5File_JAR_FILE TestH5File JAR_FILE)
ADD_DEPENDENCIES (TestH5File ${HDFJAVA_NCSA_H5_LIB_TARGET})

IF (HDFJAVA_TEST_H5FILE)
  IF (WIN32 AND NOT CYGWIN)
    SET(CMAKE_JAVA_INCLUDE_FLAG_SEP ";")
  ELSE (WIN32 AND NOT CYGWIN)
  SET(CMAKE_JAVA_INCLUDE_FLAG_SEP ":")
  ENDIF(WIN32 AND NOT CYGWIN)

  SET (CMAKE_JAVA_CLASSPATH ".")
  FOREACH (CMAKE_INCLUDE_PATH ${CMAKE_JAVA_INCLUDE_PATH})
    SET(CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_INCLUDE_PATH}")
  ENDFOREACH(CMAKE_INCLUDE_PATH)
  SET (CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${TestH5File_JAR_FILE}")

  ADD_TEST (
      NAME TESTH5FILE-object-misc
      COMMAND "${CMAKE_COMMAND}"
          -D "TEST_TESTER=${CMAKE_Java_RUNTIME}"
          -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}"
          -D "TEST_ARGS:STRING="
          -D "TEST_PROGRAM=test.object.misc.TestH5File"
          -D "TEST_LIBRARY_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}"
          -D "TEST_FOLDER=${HDFJAVA_TEST_OBJECT_MISC_BINARY_DIR}"
          -D "TEST_OUTPUT=TestH5File.out"
          -D "TEST_EXPECT=0"
          -D "TEST_REFERENCE=TestH5File.txt"
          -D "TEST_SKIP_COMPARE=TRUE"
          -P "${HDFJAVA_RESOURCES_DIR}/runTest.cmake"
  )
ENDIF (HDFJAVA_TEST_H5FILE)

###########################################################################
# TestH5MemoryLeak
###########################################################################

FILE (WRITE ${PROJECT_BINARY_DIR}/TestH5MemoryLeak_Manifest.txt
"Main-Class: test.object.misc.TestH5MemoryLeak
"
)
ADD_JAR (TestH5MemoryLeak ${PROJECT_BINARY_DIR}/TestH5MemoryLeak_Manifest.txt TestH5MemoryLeak.java)
GET_TARGET_PROPERTY(TestH5MemoryLeak_JAR_FILE TestH5MemoryLeak JAR_FILE)
ADD_DEPENDENCIES (TestH5MemoryLeak ${HDFJAVA_NCSA_H5_LIB_TARGET})

IF (HDFJAVA_TEST_MEMORYLEAK)
  IF (WIN32 AND NOT CYGWIN)
    SET(CMAKE_JAVA_INCLUDE_FLAG_SEP ";")
  ELSE (WIN32 AND NOT CYGWIN)
  SET(CMAKE_JAVA_INCLUDE_FLAG_SEP ":")
  ENDIF(WIN32 AND NOT CYGWIN)

  SET (CMAKE_JAVA_CLASSPATH ".")
  FOREACH (CMAKE_INCLUDE_PATH ${CMAKE_JAVA_INCLUDE_PATH})
    SET(CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_INCLUDE_PATH}")
  ENDFOREACH(CMAKE_INCLUDE_PATH)
  SET (CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${TestH5MemoryLeak_JAR_FILE}")

  ADD_TEST (
      NAME TESTMEMORYLEAK-object-misc
      COMMAND "${CMAKE_COMMAND}"
          -D "TEST_TESTER=${CMAKE_Java_RUNTIME}"
          -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}"
          -D "TEST_ARGS:STRING="
          -D "TEST_PROGRAM=test.object.misc.TestH5MemoryLeak"
          -D "TEST_LIBRARY_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}"
          -D "TEST_FOLDER=${HDFJAVA_TEST_OBJECT_MISC_BINARY_DIR}"
          -D "TEST_OUTPUT=TestH5MemoryLeak.out"
          -D "TEST_EXPECT=0"
          -D "TEST_REFERENCE=TestH5MemoryLeak.txt"
          -D "TEST_SKIP_COMPARE=TRUE"
          -P "${HDFJAVA_RESOURCES_DIR}/runTest.cmake"
  )
ENDIF (HDFJAVA_TEST_MEMORYLEAK)

###########################################################################
# TestH4File
###########################################################################

FILE (WRITE ${PROJECT_BINARY_DIR}/TestH4File_Manifest.txt
"Main-Class: test.object.misc.TestH4File
"
)
ADD_JAR (TestH4File ${PROJECT_BINARY_DIR}/TestH4File_Manifest.txt TestH4File.java)
GET_TARGET_PROPERTY(TestH4File_JAR_FILE TestH4File JAR_FILE)
ADD_DEPENDENCIES (TestH4File ${HDFJAVA_NCSA_H4_LIB_TARGET})

IF (HDFJAVA_TEST_H4FILE)
  IF (WIN32 AND NOT CYGWIN)
    SET(CMAKE_JAVA_INCLUDE_FLAG_SEP ";")
  ELSE (WIN32 AND NOT CYGWIN)
  SET(CMAKE_JAVA_INCLUDE_FLAG_SEP ":")
  ENDIF(WIN32 AND NOT CYGWIN)

  SET (CMAKE_JAVA_CLASSPATH ".")
  FOREACH (CMAKE_INCLUDE_PATH ${CMAKE_JAVA_INCLUDE_PATH})
    SET(CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${CMAKE_INCLUDE_PATH}")
  ENDFOREACH(CMAKE_INCLUDE_PATH)
  SET (CMAKE_JAVA_CLASSPATH "${CMAKE_JAVA_CLASSPATH}${CMAKE_JAVA_INCLUDE_FLAG_SEP}${TestH4File_JAR_FILE}")

  ADD_TEST (
      NAME TESTH4FILE-object-misc
      COMMAND "${CMAKE_COMMAND}"
          -D "TEST_TESTER=${CMAKE_Java_RUNTIME}"
          -D "TEST_CLASSPATH:STRING=${CMAKE_JAVA_CLASSPATH}"
          -D "TEST_ARGS:STRING="
          -D "TEST_PROGRAM=test.object.misc.TestH4File"
          -D "TEST_LIBRARY_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}"
          -D "TEST_FOLDER=${HDFJAVA_TEST_OBJECT_MISC_BINARY_DIR}"
          -D "TEST_OUTPUT=TestH4File.out"
          -D "TEST_EXPECT=0"
          -D "TEST_REFERENCE=TestH4File.txt"
          -D "TEST_SKIP_COMPARE=TRUE"
          -P "${HDFJAVA_RESOURCES_DIR}/runTest.cmake"
  )
ENDIF (HDFJAVA_TEST_H4FILE)
