# -*- coding: utf-8; cmake-tab-width: 4; indent-tabs-mode: nil; -*- vim:fenc=utf-8:ft=cmake:et:sw=4:ts=4:sts=4

macro(set_testing_path)
    if( WIN32 )
        foreach( dir ${NDS_CLIENT_LIBRARY_DIRS} )
            get_filename_component( dir "${dir}/../bin" ABSOLUTE )
            file( TO_NATIVE_PATH ${dir} dir )
            list( APPEND TPATH ${dir} )
        endforeach( )
        list( APPEND TPATH  $ENV{PATH} )
        string( REPLACE ";" "\\;" TPATH "${TPATH}" )
        # message( FATAL_ERROR "DEBUG: TPATH: ${TPATH}" )
    else( WIN32 )
        set(TPATH "$ENV{PATH}")
    endif( WIN32 )
endmacro()

if ( ENABLE_SWIG_JAVA )
    include(CMakeParseArguments)
    include(UseCopyIfDifferent)

    file( TO_NATIVE_PATH ${Java_JAVA_EXECUTABLE} PROG_JAVA )
    if ( WIN32 )
        # string( REPLACE "\\" "\\\\" PROG_JAVA "${PROG_JAVA}" )
    endif( )

    get_filename_component( NDS_JAR "${CMAKE_CURRENT_BINARY_DIR}/../module/nds2.jar" ABSOLUTE )
    message( STATUS "NDS_JAR: ${NDS_JAR}" )

    set( MATLAB_TEST_FLAGS "")
    if ( MATLAB_NO_NODISPLAY )
        set ( MATLAB_TEST_FLAGS "--no-nodisplay" )
    endif ( MATLAB_NO_NODISPLAY )

    function(to_path_list var path1)
        if (WIN32)
            set(sep "\\;")
        else(WIN32)
            set(sep ":")
        endif(WIN32)
        set(result "${path1}") # First element doesn't require separator at all...
        foreach(path ${ARGN})
            set(result "${result}${sep}${path}") # ... but other elments do.
        endforeach(path)
        #list(APPEND result ${path1} ${ARGN})
        set(${var} "${result}" PARENT_SCOPE)
    endfunction(to_path_list)


    function(COMPILE_JAVA target)
        #--------------------------------------------------------------------
        # Parse the parameters
        #--------------------------------------------------------------------
        set(options)
        set(oneValueArgs)
        set(multiValueArgs SOURCES BINARY_SOURCES)
        cmake_parse_arguments( "" "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
        message( STATUS "target: ${target} ARGN: ${ARGN}" )
        set(ALL_SOURCES "" )
        if( _SOURCES )
          set_source_files_properties( ${_SOURCES} PROPERTIES GENERATED TRUE )
          foreach( i ${_SOURCES} )
                list( APPEND ALL_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/${i}" )
                # list( APPEND ALL_SOURCES "${i}" )
            endforeach( i )
        endif( _SOURCES )
        message( STATUS "BINARY_SOURCES: ${_BINARY_SOURCES}" )
        if( _BINARY_SOURCES )
            foreach( i ${_BINARY_SOURCES} )
                list( APPEND ALL_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/${i}" )
                # list( APPEND ALL_SOURCES "${i}" )
            endforeach( i )
        endif( _BINARY_SOURCES )
        message( STATUS "ALL_SOURCES: ${ALL_SOURCES}" )
        #--------------------------------------------------------------------
        #
        #--------------------------------------------------------------------
        set(CMAKE_JAVA_COMPILE_FLAGS -source 1.7 -target 1.7 )
        #-------------------------------------------------------------------
        # Get source into local build directory
        #-------------------------------------------------------------------
        if ( _SOURCES )
            copy_if_different(
                ${CMAKE_CURRENT_SOURCE_DIR}
                ${CMAKE_CURRENT_BINARY_DIR}
                "${_SOURCES}"
                JavaStageTargets "JavaStage${target}" )
            add_custom_target( CopyJavaStage${target}
                ALL DEPENDS ${JavaStageTargets} )
        endif ( _SOURCES )
        #-------------------------------------------------------------------
        # Compile source
        #-------------------------------------------------------------------
        set( CMAKE_JAVA_INCLUDE_PATH ${NDS_JAR} )
        message( STATUS "DEBUG: NDS_JAR: ${NDS_JAR}" )
        add_jar( ${target}
            SOURCES ${ALL_SOURCES}
            WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
        add_dependencies( ${target} ndstesting nds2 nds2JNI )
        if( JavaStageTargets )
            add_dependencies( ${target} CopyJavaStage${target} )
        endif( JavaStageTargets )
    endfunction(COMPILE_JAVA)

    function(COMPILE_JAVA_TEST target)
        compile_java(${target} ${ARGN} )
    endfunction(COMPILE_JAVA_TEST)

    function(ADD_JAVA_TEST target)
        list(GET ARGN 0 cmd )
        set_testing_path( )
        to_path_list(java_test_jars ${CMAKE_CURRENT_BINARY_DIR}/${cmd}.jar ${NDS_JAR} )
        add_test( ${target}
            ${Java_JAVA_EXECUTABLE} -cp ${java_test_jars} -enableassertions ${CMAKE_JAVA_EXTRA_FLAGS} ${ARGN} )
        set( env 
              "PATH=${TPATH}"
              "JAVA=${PROG_JAVA}"
              ${NDS_EXTEND_JAVA_BOOT_LIBRARY_PATH} )
        set_test_properties( ${target}
            ENVIRONMENT "${env}"
            )
    endfunction(ADD_JAVA_TEST)

    #-----------------------------------------------------------------------
    # Need to build some scripts since they depend on dynamic data.
    #-----------------------------------------------------------------------

    configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/test_nds2_version_java.java.in
                    ${CMAKE_CURRENT_BINARY_DIR}/test_nds2_version_java.java
                    @ONLY )

    configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/test_nds2_version_matlab.m.in
                    ${CMAKE_CURRENT_BINARY_DIR}/test_nds2_version_matlab.m
                    @ONLY )

    configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/unittest.java
                    ${CMAKE_CURRENT_BINARY_DIR}/ndstesting/unittest.java
                    COPYONLY )
    #-----------------------------------------------------------------------
    #-----------------------------------------------------------------------
    compile_java(
        ndstesting
        BINARY_SOURCES
            "ndstesting/unittest.java" )
    #-----------------------------------------------------------------------
    # Run tests that depend on python
    #-----------------------------------------------------------------------
    if( PYTHON_DFLT_EXECUTABLE )
        #-------------------------------------------------------------------
        # All of these require python to run
        #-------------------------------------------------------------------
        function(null_server_test name command)
            set( _include_test TRUE )
            get_filename_component( COMMAND_EXT ${command} EXT )
            message( STATUS "Command extension: ${COMMAND_EXT}" )
            if( ${COMMAND_EXT} STREQUAL ".m" )
                if ( PROG_MATLAB )
                    list(APPEND COMMAND_OPTIONS --matlab=${PROG_MATLAB})
                    list(APPEND COMMAND_OPTIONS ${MATLAB_TEST_FLAGS})
                    list(APPEND COMMAND_OPTIONS --jarfiles=${CMAKE_CURRENT_BINARY_DIR}/ndstesting.jar)
                else ( PROG_MATLAB )
                    set( _include_test FALSE )
                endif ( PROG_MATLAB )
            endif( ${COMMAND_EXT} STREQUAL ".m" )
            if ( _include_test )
                set_testing_path( )
                if (NOT IS_ABSOLUTE ${command})
                    if ( EXISTS "${CMAKE_CURRENT_BINARY_DIR}/${command}")
                        set( command "${CMAKE_CURRENT_BINARY_DIR}/${command}")
                    elseif ( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${command}")
                        set( command "${CMAKE_CURRENT_SOURCE_DIR}/${command}")
                    endif ( EXISTS "${CMAKE_CURRENT_BINARY_DIR}/${command}")
                endif (NOT IS_ABSOLUTE ${command})
                add_test(
                    NAME ${name}
                    COMMAND
                        ${PYTHON_DFLT_EXECUTABLE} ${PROG_NDS_TESTER} ${NDS_TESTER_FLAGS}
                        ${COMMAND_OPTIONS}
                        --null-server
                        "${command}" )
                set( env
                    "PATH=${TPATH}"
                    "JAVA=${PROG_JAVA}"
                    ${NDS_EXTEND_JAVA_BOOT_LIBRARY_PATH} )
                # message( FATAL_ERROR "DEBUG: env: ${env}" )
                set_tests_properties( ${name}
                    PROPERTIES
                        SKIP_RETURN_CODE 77
                        ENVIRONMENT "${env}"
                        )
                set( NDS_CUSTOM_MEMCHECK_IGNORE
                    ${NDS_CUSTOM_MEMCHECK_IGNORE} ${name}
                    CACHE INTERNAL "" )
            endif ( _include_test )
        endfunction(null_server_test)

        function(mock_server_test name command)
            set( _include_test TRUE )
            get_filename_component( COMMAND_EXT ${command} EXT )
            message( STATUS "Command extension: ${COMMAND_EXT}" )
            if( ${COMMAND_EXT} STREQUAL ".class" )
                set(COMMAND_DIR ${CMAKE_CURRENT_BINARY_DIR})
            else( ${COMMAND_EXT} STREQUAL ".class" )
                set(COMMAND_DIR ${CMAKE_CURRENT_SOURCE_DIR})
            endif( ${COMMAND_EXT} STREQUAL ".class" )
            if( ${COMMAND_EXT} STREQUAL ".m" )
                if ( PROG_MATLAB )
                    list(APPEND COMMAND_OPTIONS --matlab=${PROG_MATLAB})
                    list(APPEND COMMAND_OPTIONS ${MATLAB_TEST_FLAGS})
                    list(APPEND COMMAND_OPTIONS --jarfiles=${CMAKE_CURRENT_BINARY_DIR}/ndstesting.jar)
                else ( PROG_MATLAB )
                    set( _include_test FALSE )
                endif ( PROG_MATLAB )
            endif( ${COMMAND_EXT} STREQUAL ".m" )
            if ( _include_test )
                set_testing_path( )
                add_test(
                    NAME ${name}
                    COMMAND
                        ${PYTHON_DFLT_EXECUTABLE} ${PROG_NDS_TESTER} ${NDS_TESTER_FLAGS}
                        ${COMMAND_OPTIONS}
                        --nds1-mock-server
                        "${COMMAND_DIR}/${command}" )
                set( env
                    "PATH=${TPATH}"
                    "JAVA=${PROG_JAVA}"
                    ${NDS_EXTEND_JAVA_BOOT_LIBRARY_PATH} )
                set_tests_properties( ${name}
                    PROPERTIES
                        SKIP_RETURN_CODE 77
                        ENVIRONMENT "${env}"
                          )
                set( NDS_CUSTOM_MEMCHECK_IGNORE
                    ${NDS_CUSTOM_MEMCHECK_IGNORE} ${name}
                    CACHE INTERNAL "" )
            endif ( _include_test )
        endfunction(mock_server_test)

        function(replay_server_test name command json)
            if ( REPLAY_BLOB_CACHE_DIR )
                set_nds_protocols(protocols ${name})
                foreach ( proto ${protocols} )
                    set(test_name "${name}${proto}_")
                    set( _include_test TRUE )
                    get_filename_component( COMMAND_EXT ${command} EXT )
                    if( ${COMMAND_EXT} STREQUAL ".m" )
                        if ( NOT PROG_MATLAB )
                            set( _include_test FALSE )
                        endif ( NOT PROG_MATLAB )
                    endif( ${COMMAND_EXT} STREQUAL ".m" )
                    if ( _include_test )
                        set_testing_path( )
                        add_test(
                            NAME ${test_name}
                            COMMAND
                                ${PYTHON_DFLT_EXECUTABLE} ${PROG_NDS_TESTER} ${NDS_TESTER_FLAGS}
                                --matlab=${PROG_MATLAB}
                                ${MATLAB_TEST_FLAGS}
                                --jarfiles=${CMAKE_CURRENT_BINARY_DIR}/ndstesting.jar
                                --replay-server
                                --replay-json-filename ${json}
                                --replay-protocol ${proto}
                                "${CMAKE_CURRENT_SOURCE_DIR}/${command}" ${ARGN} )
                        set( env
                            "PATH=${TPATH}"
                            "JAVA=${PROG_JAVA}"
                            "REPLAY_BLOB_REMOTE_CACHE=${REPLAY_BLOB_CACHE_DIR}"
                            ${NDS_EXTEND_JAVA_BOOT_LIBRARY_PATH}
                            )
                        set_tests_properties( ${test_name}
                            PROPERTIES
                                SKIP_RETURN_CODE 77
                            ENVIRONMENT "${env}"
                                )
                        set( NDS_CUSTOM_MEMCHECK_IGNORE
                            ${NDS_CUSTOM_MEMCHECK_IGNORE} ${test_name}
                            CACHE INTERNAL "" )
                    endif ( _include_test )
                endforeach( proto )
            endif ( REPLAY_BLOB_CACHE_DIR )
        endfunction(replay_server_test)


        #====================================================================
        # These tests require a minimum of Python
        #====================================================================
        # Final variable substitution before use
        #--------------------------------------------------------------------
        string(CONFIGURE "${NDS_TESTER_FLAGS}" NDS_TESTER_FLAGS )
        #--------------------------------------------------------------------
        compile_java_test(
            test_nds2_version_java
            BINARY_SOURCES
                "test_nds2_version_java.java" )
        null_server_test( _java_version_ test_nds2_version_java.class )
        null_server_test( _jmatlab_version_ test_nds2_version_matlab.m )
        #--------------------------------------------------------------------
        compile_java_test(
            test_is_trend_type_java
            SOURCES
                "test_is_trend_type_java.java" )
        null_server_test( _java_is-trend-type_ test_is_trend_type_java.class )
        null_server_test( _jmatlab_is-trend-type_ test_is_trend_type_matlab.m )
        #--------------------------------------------------------------------
        compile_java_test(
            test_mockup_java
            SOURCES
                "test_mockup_java.java" )
        mock_server_test( _java_mockup_ test_mockup_java.class )
        mock_server_test( _jmatlab_mockup_ test_mockup_matlab.m )
        #--------------------------------------------------------------------
        compile_java_test(
            test_fetch_all_gap_java
            SOURCES
                test_fetch_all_gap_java.java
            BINARY_SOURCES
            "ndstesting/unittest.java")
        replay_server_test(
            _java_test_nds2_fetch_all_gap_
            test_fetch_all_gap_java.class
            nds2-fetch-all-gap.json)
        replay_server_test(
            _jmatlab_test_nds2_fetch_all_gap_
            test_fetch_all_gap_matlab.m
            nds2-fetch-all-gap.json)
        #--------------------------------------------------------------------
        compile_java_test(
            test_iterate_with_full_gap_java
            SOURCES
            test_iterate_with_full_gap_java.java
            BINARY_SOURCES
            "ndstesting/unittest.java")
        replay_server_test(
            _java_test_nds2_iterate_with_full_gap_
            test_iterate_with_full_gap_java.class
            nds2-iterate-with-full-gap.json)
        replay_server_test(
            _jmatlab_test_nds2_iterate_with_full_gap_
            test_iterate_with_full_gap_matlab.m
            nds2-iterate-with-full-gap.json)
        #--------------------------------------------------------------------
        compile_java_test(
            test_fetch_java
            SOURCES
                test_fetch_java.java)
        replay_server_test(
            _java_nds2_fetch_
            test_fetch_java.class
            lho-prod.json )
        replay_server_test(
            _jmatlab_nds2_fetch_
            test_fetch_matlab.m
            lho-prod.json )
        #--------------------------------------------------------------------
        compile_java_test(
                test_fetch_java_standalone
                SOURCES
                test_fetch_java_standalone.java )
        replay_server_test(
                _java_nds1_fetch_standalone_
                test_fetch_java_standalone.class
                nds1-test-fetch-standalone.json )
        #--------------------------------------------------------------------
        compile_java_test(
                test_nds1_list_testpoint_java
                SOURCES
                "test_nds1_list_testpoint_java.java"
                BINARY_SOURCES
                "ndstesting/unittest.java")
        replay_server_test(
                _java_nds1_list_testpoint_
                test_nds1_list_testpoint_java.class
                nds1-list-testpoint.json )
        replay_server_test(
                _jmatlab_nds1_list_testpoint_
                test_nds1_list_testpoint.m
                nds1-list-testpoint.json )
        #--------------------------------------------------------------------
        compile_java_test(
                test_find_channels_synthetic_standalone_java
                SOURCES
                "test_find_channels_synthetic_standalone_java.java"
                BINARY_SOURCES
                "ndstesting/unittest.java" )
        replay_server_test(
                _java_nds2_find-channels-synthetic-standalone_
                test_find_channels_synthetic_standalone_java.class
                nds2-find-channels-synthetic-standalone.json )
        #--------------------------------------------------------------------
        compile_java_test(
            test_find_channels_synthetic_java
            SOURCES
                "test_find_channels_synthetic_java.java"
             BINARY_SOURCES
                "ndstesting/unittest.java" )
        replay_server_test(
            _java_nds2_find-channels-synthetic_
            test_find_channels_synthetic_java.class
            nds2-find-channels-synthetic.json )
        replay_server_test(
            _jmatlab_nds2_find-channels-synthetic_
            test_find_channels_synthetic_matlab.m
            nds2-find-channels-synthetic.json )
        #--------------------------------------------------------------------
        compile_java_test(
            test_nds2_availability_java
            SOURCES
                "test_nds2_availability_java.java"
             BINARY_SOURCES
                "ndstesting/unittest.java" )
        replay_server_test(
            _java_nds2_availability_
            test_nds2_availability_java.class
            nds2-availability.json )
        replay_server_test(
            _jmatlab_nds2_availability_
            test_nds2_availability_matlab.m
            nds2-availability.json )
        #----------------------------------------------------------------
        compile_java_test(
            test_get_epochs_java
            SOURCES
                "test_get_epochs_java.java"
             BINARY_SOURCES
                "ndstesting/unittest.java" )
        replay_server_test(
            _java_nds1_get-epochs_
            test_get_epochs_java.class
            nds1-get-epoch.json -proto-1 )
        replay_server_test(
            _jmatlab_nds1_get-epochs_
            test_get_epochs_matlab.m
            nds1-get-epoch.json -proto-1 )
        replay_server_test(
            _java_nds2_get-epochs_
            test_get_epochs_java.class
            nds2-get-epoch.json -proto-2 )
        replay_server_test(
            _jmatlab_nds2_get-epochs_
            test_get_epochs_matlab.m
            nds2-get-epoch.json -proto-2 )
        #----------------------------------------------------------------
        compile_java_test(
            test_dissimilar_gaps_java
            SOURCES
                "test_dissimilar_gaps_java.java"
             BINARY_SOURCES
                "ndstesting/unittest.java" )
        replay_server_test(
            _java_nds2_dissimilar-gaps_
            test_dissimilar_gaps_java.class
            nds2-dissimilar_gaps.json )
        replay_server_test(
            _jmatlab_nds2_dissimilar-gaps_
            test_dissimilar_gaps_matlab.m
            nds2-dissimilar_gaps.json )
        #----------------------------------------------------------------
        compile_java_test(
            test_ticket_169_java
            SOURCES
                "test_ticket_169_java.java"
             BINARY_SOURCES
                "ndstesting/unittest.java" )
        replay_server_test(
            _java_nds2_ticket-169_
            test_ticket_169_java.class
            nds2-ticket-169.json )
        replay_server_test(
            _jmatlab_nds2_ticket-169_
            test_ticket_169_matlab.m
            nds2-ticket-169.json )
        #----------------------------------------------------------------
        compile_java_test(
            test_ticket_246_java
            SOURCES
                "test_ticket_246_java.java"
             BINARY_SOURCES
                "ndstesting/unittest.java" )
        replay_server_test(
            _java_nds2_ticket-246_
            test_ticket_246_java.class
            nds2-ticket-246.json )
        replay_server_test(
            _jmatlab_nds2_ticket-246_
            test_ticket_246_matlab.m
            nds2-ticket-246.json )
        #--------------------------------------------------------------------
        compile_java_test(
            test_ticket_288_java
            SOURCES
                "test_ticket_288_java.java"
             BINARY_SOURCES
                "ndstesting/unittest.java" )
        replay_server_test(
            _java_nds2_ticket-288_
            test_ticket_288_java.class
            nds2-ticket-288.json)
        replay_server_test(
            _jmatlab_nds2_ticket-288_
            test_ticket_288_matlab.m
            nds2-ticket-288.json)
        #--------------------------------------------------------------------
        compile_java_test(
            test_ticket_289_java
            SOURCES
                "test_ticket_289_java.java"
             BINARY_SOURCES
                "ndstesting/unittest.java" )
        replay_server_test(
            _java_nds2_ticket-289_
            test_ticket_289_java.class
            nds2-ticket-289.json)
        replay_server_test(
            _jmatlab_nds2_ticket-289_
            test_ticket_289_matlab.m
            nds2-ticket-289.json)
        #----------------------------------------------------------------
        compile_java_test(
            test_iterate_with_gaps_java
            SOURCES
                "test_iterate_with_gaps_java.java"
             BINARY_SOURCES
                "ndstesting/unittest.java" )
        replay_server_test(
            _java_nds1_iterate-with-gaps_
            test_iterate_with_gaps_java.class
            nds1-iterate_with_leading_gap.json
            -proto-1 )
        replay_server_test(
            _jmatlab_nds1_iterate-with-gaps_
            test_iterate_with_gaps_matlab.m
            nds1-iterate_with_leading_gap.json
            -proto-1 )
        replay_server_test(
            _java_nds2_iterate-with-gaps_
            test_iterate_with_gaps_java.class
            nds2-iterate_with_leading_gap.json
            -proto-2 )
        replay_server_test(
            _jmatlab_nds2_iterate-with-gaps_
            test_iterate_with_gaps_matlab.m
            nds2-iterate_with_leading_gap.json
            -proto-2 )
        #----------------------------------------------------------------
        compile_java_test(
                test_iterate_all_data_standalone_java
                SOURCES
                    "test_iterate_all_data_standalone_java.java"
                BINARY_SOURCES
                    "ndstesting/unittest.java")
        replay_server_test(
                _java_nds2_iterate-all-data-standalone_
                test_iterate_all_data_standalone_java.class
                nds2-iterate-all-data-standalone-synthetic.json
                -proto-2 -explicit-args
        )
        replay_server_test(
                _java_nds2_iterate-all-data-standalone-nogaphandler_
                test_iterate_all_data_standalone_java.class
                nds2-iterate-all-data-standalone-synthetic.json
                -proto-2 -no-gap -explicit-args
        )
        #----------------------------------------------------------------
        compile_java_test(
            test_iterate_all_data_java
            SOURCES
                "test_iterate_all_data_java.java"
             BINARY_SOURCES
                "ndstesting/unittest.java" )
        replay_server_test(
            _java_nds2_iterate-all-data_
            test_iterate_all_data_java.class
            nds2-iterate-all-data-synthetic.json
            -proto-2
            )
        replay_server_test(
            _jmatlab_nds2_iterate-all-data_
            test_iterate_all_data_matlab.m
            nds2-iterate-all-data-synthetic.json
            -proto-2
            )
        replay_server_test(
            _java_nds2_iterate-all-data-nogaphandler_
            test_iterate_all_data_java.class
            nds2-iterate-all-data-synthetic.json
            -proto-2 -no-gap
            )
        replay_server_test(
            _jmatlab_nds2_iterate-all-data-nogaphandler_
            test_iterate_all_data_matlab.m
            nds2-iterate-all-data-synthetic.json
            -proto-2 -no-gap
            )
        replay_server_test(
            _java_nds1_iterate-all-data_
            test_iterate_all_data_java.class
            nds1-iterate-all-data-synthetic.json
            -proto-1
            )
        replay_server_test(
            _jmatlab_nds1_iterate-all-data_
            test_iterate_all_data_matlab.m
            nds1-iterate-all-data-synthetic.json
            -proto-1
            )
        replay_server_test(
            _java_nds1_iterate-all-data-nogaphandler_
            test_iterate_all_data_java.class
            nds1-iterate-all-data-synthetic.json
            -proto-1 -no-gap
            )
        replay_server_test(
            _jmatlab_nds1_iterate-all-data-nogaphandler_
            test_iterate_all_data_matlab.m
            nds1-iterate-all-data-synthetic.json
            -proto-1 -no-gap
            )
        #----------------------------------------------------------------
        compile_java_test(
            test_iterate_with_synth_gaps_java
            SOURCES
                "test_iterate_with_synth_gaps_java.java"
             BINARY_SOURCES
                "ndstesting/unittest.java" )
        replay_server_test(
            _java_nds1_iterate-with-synth-gaps_
            test_iterate_with_synth_gaps_java.class
            nds1-iterate-with-gaps-synthetic.json
            -proto-1
            )
        replay_server_test(
            _jmatlab_nds1_iterate-with-synth-gaps_
            test_iterate_with_synth_gaps_matlab.m
            nds1-iterate-with-gaps-synthetic.json
            -proto-1
            )
        replay_server_test(
            _java_nds1_iterate-with-synth-gaps-nogaphandler_
            test_iterate_with_synth_gaps_java.class
            nds1-iterate-with-gaps-synthetic.json
            -proto-1 -no-gap
            )
        replay_server_test(
            _jmatlab_nds1_iterate-with-synth-gaps-nogaphandler_
            test_iterate_with_synth_gaps_matlab.m
            nds1-iterate-with-gaps-synthetic.json
            -proto-1 -no-gap
            )
        replay_server_test(
            _java_nds1_iterate-with-synth-gaps-defaultgaphandler_
            test_iterate_with_synth_gaps_java.class
            nds1-iterate-with-gaps-synthetic.json
            -proto-1 -default-gap-handling
            )
        replay_server_test(
            _jmatlab_nds1_iterate-with-synth-gaps-defaultgaphandler_
            test_iterate_with_synth_gaps_matlab.m
            nds1-iterate-with-gaps-synthetic.json
            -proto-1 -default-gap-handling
            )
        #----------------------------------------------------------------
        compile_java_test(
                test_nds1_restart_failure_java
            SOURCES
            "test_nds1_restart_failure_java.java"
            BINARY_SOURCES
            "ndstesting/unittest.java" )
        replay_server_test(
            _java_nds1_restart_failure_
            test_nds1_restart_failure_java.class
                nds1-restart-failure.json )
        replay_server_test(
            _jmatlab_nds1_restart_failure_
            test_nds1_restart_failure_matlab.m
            nds1-restart-failure.json
        )
        #----------------------------------------------------------------
        compile_java_test(
            test_iterate_live_data_bounded_java
            SOURCES
                "test_iterate_live_data_bounded_java.java"
             BINARY_SOURCES
                "ndstesting/unittest.java" )
        replay_server_test(
            _java_nds2_iterate-live-data-bounded_
            test_iterate_live_data_bounded_java.class
            nds2-iterate-live-data-bounded-synthetic.json
            -proto-2
            )
        replay_server_test(
            _jmatlab_nds2_iterate-live-data-bounded_
            test_iterate_live_data_bounded_matlab.m
            nds2-iterate-live-data-bounded-synthetic.json
            -proto-2
            )
        replay_server_test(
            _java_nds1_iterate-live-data-bounded_
            test_iterate_live_data_bounded_java.class
            nds1-iterate-live-data-bounded-synthetic-multiconn.json
            -proto-1
            )
        replay_server_test(
            _jmatlab_nds1_iterate-live-data-bounded_
            test_iterate_live_data_bounded_matlab.m
            nds1-iterate-live-data-bounded-synthetic-multiconn.json
            -proto-1
            )
        #----------------------------------------------------------------
        compile_java_test(
            test_iterate_live_data_java
            SOURCES
                "test_iterate_live_data_java.java"
             BINARY_SOURCES
                "ndstesting/unittest.java" )
        replay_server_test(
            _java_nds2_iterate-live-data_
            test_iterate_live_data_java.class
            nds2-iterate-live-data-synthetic.json
            -proto-2
            )
        replay_server_test(
            _jmatlab_nds2_iterate-live-data_
            test_iterate_live_data_matlab.m
            nds2-iterate-live-data-synthetic.json
            -proto-2
            )
        replay_server_test(
            _java_nds1_iterate-live-data_
            test_iterate_live_data_java.class
            nds1-iterate-live-data-synthetic.json
            -proto-1
            )
        replay_server_test(
            _jmatlab_nds1_iterate-live-data_
            test_iterate_live_data_matlab.m
            nds1-iterate-live-data-synthetic.json
            -proto-1
            )
        #----------------------------------------------------------------
        compile_java_test(
            test_count_channels_java
            SOURCES
                "test_count_channels_java.java"
             BINARY_SOURCES
                "ndstesting/unittest.java" )
        replay_server_test(
            _java_nds1_count-channels_
            test_count_channels_java.class
            nds1-count-channels-synthetic.json
            -proto-1 )
        replay_server_test(
            _jmatlab_nds1_count-channels_
            test_count_channels_matlab.m
            nds1-count-channels-synthetic.json
            -proto-1 )
        replay_server_test(
            _java_nds2_count-channels_
            test_count_channels_java.class
            nds2-count-channels-synthetic.json
            -proto-2 )
        replay_server_test(
            _jmatlab_nds2_count-channels_
            test_count_channels_matlab.m
            nds2-count-channels-synthetic.json
            -proto-2 )
        #--------------------------------------------------------------------
        compile_java_test(
            test_nds1_timeout_java
            SOURCES
                "test_nds1_timeout_java.java" )
        replay_server_test(
            _java_nds1_timeout_
            test_nds1_timeout_java.class
            nds1-timeout.json )
        replay_server_test(
            _jmatlab_nds1_timeout_
            test_nds1_timeout.m
            nds1-timeout.json )
        #----------------------------------------------------------------
        compile_java_test(
            test_time_range_error_java
            SOURCES
                "test_time_range_error_java.java"
             BINARY_SOURCES
                "ndstesting/unittest.java" )
        replay_server_test(
            _java_nds2_time-range_
            test_time_range_error_java.class
            nds2-iterate-all-data-synthetic.json
            -proto-2
            )
        replay_server_test(
            _jmatlab_nds2_time-range_
            test_time_range_error_matlab.m
            nds2-iterate-all-data-synthetic.json
            -proto-2
            )
        #----------------------------------------------------------------
    endif( PYTHON_DFLT_EXECUTABLE )
endif ( ENABLE_SWIG_JAVA )
