# Initialize ######################################################################################

Include                     ( cotire        OPTIONAL RESULT_VARIABLE HAS_COTIRE )
Include                     ( pedantic      OPTIONAL RESULT_VARIABLE HAS_PEDANTIC )
Include                     ( cmake_tests OPTIONAL RESULT_VARIABLE HAS_CMAKE_TESTS )

# Test ############################################################################################

Find_Package                ( GTest )
If                          ( NOT "${GTest_FOUND}" )
    Return                      ( )
EndIf                       ( )

File                        ( GLOB_RECURSE CPPLOGGING_TEST_HEADER_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h )
File                        ( GLOB_RECURSE CPPLOGGING_TEST_INLINE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.inl )
File                        ( GLOB_RECURSE CPPLOGGING_TEST_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp )

Add_Executable              ( cpplogging-test
                              EXCLUDE_FROM_ALL
                              ${CPPLOGGING_TEST_HEADER_FILES}
                              ${CPPLOGGING_TEST_INLINE_FILES}
                              ${CPPLOGGING_TEST_SOURCE_FILES} )
Target_Link_Libraries       ( cpplogging-test
                              PUBLIC
                                cpplogging-objects
                                GMock::Main )

# pedantic
If                          ( HAS_PEDANTIC )
    Pedantic_Apply_Flags_Target ( cpplogging-test ALL )
EndIf                       ( )

# optimization
If                          ( HAS_COTIRE )
    Cotire                      ( cpplogging-test )
EndIf                       ( )

# test
If                          ( HAS_CMAKE_TESTS )
    Add_CMake_Test              ( NAME cpplogging TARGET cpplogging-test )
Else                        ( )
    Add_Test                    ( NAME cpplogging COMMAND cpplogging-test )
EndIf                       ( )
