summaryrefslogtreecommitdiff
path: root/lemon/test/CMakeLists.txt
blob: 8d139824866124faa2591ceea7fdc40da846201d (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
INCLUDE_DIRECTORIES(
  ${PROJECT_SOURCE_DIR}
  ${PROJECT_BINARY_DIR}
)

LINK_DIRECTORIES(
  ${PROJECT_BINARY_DIR}/lemon
)

SET(TEST_WITH_VALGRIND "NO" CACHE STRING
  "Run the test with valgrind (YES/NO).")
SET(VALGRIND_FLAGS "" CACHE STRING "Valgrind flags used by the tests.")

SET(TESTS
  adaptors_test
  bellman_ford_test
  bfs_test
  circulation_test
  connectivity_test
  counter_test
  dfs_test
  digraph_test
  dijkstra_test
  dim_test
  edge_set_test
  error_test
  euler_test
  fractional_matching_test
  gomory_hu_test
  graph_copy_test
  graph_test
  graph_utils_test
  hao_orlin_test
  heap_test
  kruskal_test
  lgf_test
  maps_test
  matching_test
  min_cost_arborescence_test
  min_cost_flow_test
  min_mean_cycle_test
  path_test
  planarity_test
  preflow_test
  radix_sort_test
  random_test
  suurballe_test
  time_measure_test
  unionfind_test
)

IF(LEMON_HAVE_LP)
  IF(${CMAKE_BUILD_TYPE} STREQUAL "Maintainer")
    ADD_EXECUTABLE(lp_test lp_test.cc)
  ELSE()
    ADD_EXECUTABLE(lp_test EXCLUDE_FROM_ALL lp_test.cc)
  ENDIF()

  SET(LP_TEST_LIBS lemon)

  IF(LEMON_HAVE_GLPK)
    SET(LP_TEST_LIBS ${LP_TEST_LIBS} ${GLPK_LIBRARIES})
  ENDIF()
  IF(LEMON_HAVE_CPLEX)
    SET(LP_TEST_LIBS ${LP_TEST_LIBS} ${CPLEX_LIBRARIES})
  ENDIF()
  IF(LEMON_HAVE_CLP)
    SET(LP_TEST_LIBS ${LP_TEST_LIBS} ${COIN_CLP_LIBRARIES})
  ENDIF()

  TARGET_LINK_LIBRARIES(lp_test ${LP_TEST_LIBS})
  ADD_TEST(lp_test lp_test)
  ADD_DEPENDENCIES(check lp_test)

  IF(WIN32 AND LEMON_HAVE_GLPK)
    GET_TARGET_PROPERTY(TARGET_LOC lp_test LOCATION)
    GET_FILENAME_COMPONENT(TARGET_PATH ${TARGET_LOC} PATH)
    ADD_CUSTOM_COMMAND(TARGET lp_test POST_BUILD
      COMMAND ${CMAKE_COMMAND} -E copy ${GLPK_BIN_DIR}/glpk.dll ${TARGET_PATH}
      COMMAND ${CMAKE_COMMAND} -E copy ${GLPK_BIN_DIR}/libltdl3.dll ${TARGET_PATH}
      COMMAND ${CMAKE_COMMAND} -E copy ${GLPK_BIN_DIR}/zlib1.dll ${TARGET_PATH}
    )
  ENDIF()

  IF(WIN32 AND LEMON_HAVE_CPLEX)
    GET_TARGET_PROPERTY(TARGET_LOC lp_test LOCATION)
    GET_FILENAME_COMPONENT(TARGET_PATH ${TARGET_LOC} PATH)
    ADD_CUSTOM_COMMAND(TARGET lp_test POST_BUILD
      COMMAND ${CMAKE_COMMAND} -E copy ${CPLEX_BIN_DIR}/cplex91.dll ${TARGET_PATH}
    )
  ENDIF()
ENDIF()

IF(LEMON_HAVE_MIP)
  IF(${CMAKE_BUILD_TYPE} STREQUAL "Maintainer")
    ADD_EXECUTABLE(mip_test mip_test.cc)
  ELSE()
    ADD_EXECUTABLE(mip_test EXCLUDE_FROM_ALL mip_test.cc)
  ENDIF()

  SET(MIP_TEST_LIBS lemon)

  IF(LEMON_HAVE_GLPK)
    SET(MIP_TEST_LIBS ${MIP_TEST_LIBS} ${GLPK_LIBRARIES})
  ENDIF()
  IF(LEMON_HAVE_CPLEX)
    SET(MIP_TEST_LIBS ${MIP_TEST_LIBS} ${CPLEX_LIBRARIES})
  ENDIF()
  IF(LEMON_HAVE_CBC)
    SET(MIP_TEST_LIBS ${MIP_TEST_LIBS} ${COIN_CBC_LIBRARIES})
  ENDIF()

  TARGET_LINK_LIBRARIES(mip_test ${MIP_TEST_LIBS})
  ADD_TEST(mip_test mip_test)
  ADD_DEPENDENCIES(check mip_test)

  IF(WIN32 AND LEMON_HAVE_GLPK)
    GET_TARGET_PROPERTY(TARGET_LOC mip_test LOCATION)
    GET_FILENAME_COMPONENT(TARGET_PATH ${TARGET_LOC} PATH)
    ADD_CUSTOM_COMMAND(TARGET mip_test POST_BUILD
      COMMAND ${CMAKE_COMMAND} -E copy ${GLPK_BIN_DIR}/glpk.dll ${TARGET_PATH}
      COMMAND ${CMAKE_COMMAND} -E copy ${GLPK_BIN_DIR}/libltdl3.dll ${TARGET_PATH}
      COMMAND ${CMAKE_COMMAND} -E copy ${GLPK_BIN_DIR}/zlib1.dll ${TARGET_PATH}
    )
  ENDIF()

  IF(WIN32 AND LEMON_HAVE_CPLEX)
    GET_TARGET_PROPERTY(TARGET_LOC mip_test LOCATION)
    GET_FILENAME_COMPONENT(TARGET_PATH ${TARGET_LOC} PATH)
    ADD_CUSTOM_COMMAND(TARGET mip_test POST_BUILD
      COMMAND ${CMAKE_COMMAND} -E copy ${CPLEX_BIN_DIR}/cplex91.dll ${TARGET_PATH}
    )
  ENDIF()
ENDIF()

FOREACH(TEST_NAME ${TESTS})
  IF(${CMAKE_BUILD_TYPE} STREQUAL "Maintainer")
    ADD_EXECUTABLE(${TEST_NAME} ${TEST_NAME}.cc)
  ELSE()
    ADD_EXECUTABLE(${TEST_NAME} EXCLUDE_FROM_ALL ${TEST_NAME}.cc)
  ENDIF()
  TARGET_LINK_LIBRARIES(${TEST_NAME} lemon)
    IF(TEST_WITH_VALGRIND)
      ADD_TEST(${TEST_NAME}
        valgrind --error-exitcode=1 ${VALGRIND_FLAGS}
        ${CMAKE_CURRENT_BINARY_DIR}/${TEST_NAME} )
    ELSE()
      ADD_TEST(${TEST_NAME} ${TEST_NAME})
    ENDIF()
  ADD_DEPENDENCIES(check ${TEST_NAME})
ENDFOREACH()