include(${CMAKE_SOURCE_DIR}/cmake/BuildboxGTestSetup.cmake)

include_directories(".")

macro(add_commonmetrics_test TEST_NAME TEST_SOURCE)
    # Create a separate test executable per test source.
    add_executable(commonmetrics_${TEST_NAME} ${TEST_SOURCE} buildboxcommonmetrics_tests.m.cpp)

    # This allows us to pass an optional argument if the cwd for the test is not the default.
    set(ExtraMacroArgs ${ARGN})
    list(LENGTH ExtraMacroArgs NumExtraArgs)
    if(${NumExtraArgs} GREATER 0)
      list(GET ExtraMacroArgs 0 TEST_WORKING_DIRECTORY)
    else()
      set(TEST_WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
    endif()

    add_test(NAME commonmetrics_${TEST_NAME} COMMAND commonmetrics_${TEST_NAME} WORKING_DIRECTORY ${TEST_WORKING_DIRECTORY})
    target_link_libraries(commonmetrics_${TEST_NAME} PUBLIC commonmetrics ${GTEST_MAIN_TARGET} ${GMOCK_TARGET})
endmacro()

add_commonmetrics_test(durationmetrictimer_test buildboxcommonmetrics_durationmetrictimer_test.t.cpp)
add_commonmetrics_test(durationmetricvalue_test buildboxcommonmetrics_durationmetricvalue_test.t.cpp)
add_commonmetrics_test(countingmetricvalue_test buildboxcommonmetrics_countingmetricvalue_test.t.cpp)
add_commonmetrics_test(countingmetricutil_test buildboxcommonmetrics_countingmetricutil_test.t.cpp)
add_commonmetrics_test(countingmetric_test buildboxcommonmetrics_countingmetric_test.t.cpp)
add_commonmetrics_test(distributionmetric_test buildboxcommonmetrics_distributionmetric.t.cpp)
add_commonmetrics_test(distributionmetricutil_test buildboxcommonmetrics_distributionmetricutil.t.cpp)
add_commonmetrics_test(distributionmetricvalue_test buildboxcommonmetrics_distributionmetricvalue.t.cpp)
add_commonmetrics_test(gaugemetric_test buildboxcommonmetrics_gaugemetric.t.cpp)
add_commonmetrics_test(gaugemetricvalue_test buildboxcommonmetrics_gaugemetricvalue.t.cpp)
add_commonmetrics_test(gaugemetricutil_test buildboxcommonmetrics_gaugemetricutil.t.cpp)
add_commonmetrics_test(metriccollector_test buildboxcommonmetrics_metriccollector_test.t.cpp)
add_commonmetrics_test(metriccollectorfactory_one_test buildboxcommonmetrics_metriccollectorfactory_one_test.t.cpp)
add_commonmetrics_test(metriccollectorfactory_two_test buildboxcommonmetrics_metriccollectorfactory_two_test.t.cpp)
add_commonmetrics_test(metricguard_disabled_test buildboxcommonmetrics_metricguard_disabled_test.t.cpp)
add_commonmetrics_test(metricguard_enabled_test buildboxcommonmetrics_metricguard_enabled_test.t.cpp)
add_commonmetrics_test(metricteeguard_test buildboxcommonmetrics_metricteeguard_test.t.cpp)
add_commonmetrics_test(publisherguard_test buildboxcommonmetrics_publisherguard_test.t.cpp)
add_commonmetrics_test(scopedperiodicpublisherdaemon_test buildboxcommonmetrics_scopedperiodicpublisherdaemon_test.t.cpp)
add_commonmetrics_test(statsdpublisher_test_stderr buildboxcommonmetrics_statsdpublisher_test_stderr.t.cpp)
add_commonmetrics_test(statsdpublisher_test_file buildboxcommonmetrics_statsdpublisher_test_file.t.cpp)
add_commonmetrics_test(totaldurationmetrictimer_test buildboxcommonmetrics_totaldurationmetrictimer_test.t.cpp)
add_commonmetrics_test(totaldurationmetricvalue_test buildboxcommonmetrics_totaldurationmetricvalue_test.t.cpp)
add_commonmetrics_test(metricsconfigurator_test buildboxcommonmetrics_metricsconfigurator.t.cpp)
add_commonmetrics_test(statsdpublishercreator_test buildboxcommonmetrics_statsdpublishercreator.t.cpp)
add_commonmetrics_test(metricsconfigutil_test buildboxcommonmetrics_metricsconfigutil.t.cpp)
add_commonmetrics_test(metricsconfigurator_statsd_test buildboxcommonmetrics_metricsconfigurator_statsd.t.cpp)
add_commonmetrics_test(testingutils_test buildboxcommonmetrics_testingutils.t.cpp)
add_commonmetrics_test(udpwriter_test buildboxcommonmetrics_udpwriter_test.t.cpp)
