# Icinga 2
# Copyright (C) 2012-2017 Icinga Development Team (https://www.icinga.com/)
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.

set(Boost_USE_STATIC_LIBS OFF)

include(BoostTestTargets)

set(base_test_SOURCES
  base-array.cpp base-base64.cpp base-convert.cpp base-dictionary.cpp base-fifo.cpp
  base-json.cpp base-match.cpp base-netstring.cpp base-object.cpp
  base-serialize.cpp base-shellescape.cpp base-stacktrace.cpp
  base-stream.cpp base-string.cpp base-timer.cpp base-type.cpp
  base-value.cpp config-ops.cpp icinga-checkresult.cpp icinga-macros.cpp
  icinga-notification.cpp
  icinga-perfdata.cpp remote-url.cpp
)

if(ICINGA2_UNITY_BUILD)
    mkunity_target(base test base_test_SOURCES)
endif()

add_boost_test(base
  SOURCES test-runner.cpp ${base_test_SOURCES}
  LIBRARIES base config icinga
  TESTS base_array/construct
        base_array/getset
        base_array/resize
        base_array/insert
        base_array/remove
        base_array/foreach
        base_array/clone
        base_array/json
        base_base64/base64
        base_convert/tolong
        base_convert/todouble
        base_convert/tostring
        base_convert/tobool
        base_dictionary/construct
        base_dictionary/get1
        base_dictionary/get2
        base_dictionary/foreach
        base_dictionary/remove
        base_dictionary/clone
        base_dictionary/json
        base_fifo/construct
        base_fifo/io
        base_json/invalid1
        base_match/tolong
        base_netstring/netstring
        base_object/construct
        base_object/getself
        base_serialize/scalar
        base_serialize/array
        base_serialize/dictionary
        base_serialize/object
        base_shellescape/escape_basic
        base_shellescape/escape_quoted
        base_stacktrace/stacktrace
        base_stream/readline_stdio
        base_string/construct
        base_string/equal
        base_string/clear
        base_string/append
        base_string/trim
        base_string/contains
        base_string/replace
        base_string/index
        base_string/find
        base_timer/construct
        base_timer/interval
        base_timer/invoke
        base_timer/scope
        base_type/gettype
        base_type/assign
        base_type/byname
        base_type/instantiate
        base_value/scalar
        base_value/convert
        base_value/format
        config_ops/simple
        config_ops/advanced
        icinga_checkresult/host_1attempt
        icinga_checkresult/host_2attempts
        icinga_checkresult/host_3attempts
        icinga_checkresult/service_1attempt
        icinga_checkresult/service_2attempts
        icinga_checkresult/service_3attempts
        icinga_checkresult/host_flapping_notification
        icinga_checkresult/service_flapping_notification
        icinga_notification/state_filter
        icinga_notification/type_filter
        icinga_macros/simple
        icinga_perfdata/empty
        icinga_perfdata/simple
        icinga_perfdata/quotes
        icinga_perfdata/multiple
        icinga_perfdata/uom
        icinga_perfdata/warncritminmax
        icinga_perfdata/ignore_invalid_warn_crit_min_max
        icinga_perfdata/invalid
        icinga_perfdata/multi
        remote_url/id_and_path
        remote_url/parameters
        remote_url/get_and_set
        remote_url/format
        remote_url/illegal_legal_strings
)

if(ICINGA2_WITH_LIVESTATUS)
  set(livestatus_test_SOURCES
    livestatus.cpp
  )

  if(ICINGA2_UNITY_BUILD)
      mkunity_target(livestatus test livestatus_test_SOURCES)
  endif()

  add_boost_test(livestatus
    SOURCES test-runner.cpp livestatus-fixture.cpp ${livestatus_test_SOURCES}
    LIBRARIES base config icinga livestatus
    DEPENDENCIES methods
    TESTS livestatus/hosts livestatus/services
  )
endif()

set(icinga_checkable_test_SOURCES
    icinga-checkable-flapping.cpp
)

add_boost_test(icinga_checkable
  SOURCES icinga-checkable-test.cpp ${icinga_checkable_test_SOURCES}
  LIBRARIES base config icinga cli
  TESTS icinga_checkable_flapping/host_not_flapping
        icinga_checkable_flapping/host_flapping
        icinga_checkable_flapping/host_flapping_recover
        icinga_checkable_flapping/host_flapping_docs_example
)

