]> gerrit.simantics Code Review - simantics/fmil.git/blobdiff - org.simantics.fmil.core/native/FMILibrary/Config.cmake/test_fmi1.cmake
Add FMILibrary-2.0.3 to org.simantics.fmil.core\native.
[simantics/fmil.git] / org.simantics.fmil.core / native / FMILibrary / Config.cmake / test_fmi1.cmake
diff --git a/org.simantics.fmil.core/native/FMILibrary/Config.cmake/test_fmi1.cmake b/org.simantics.fmil.core/native/FMILibrary/Config.cmake/test_fmi1.cmake
new file mode 100644 (file)
index 0000000..0931121
--- /dev/null
@@ -0,0 +1,141 @@
+#    Copyright (C) 2012 Modelon AB\r
+\r
+#    This program is free software: you can redistribute it and/or modify\r
+#    it under the terms of the BSD style license.\r
+\r
+# #    This program is distributed in the hope that it will be useful,\r
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+#    FMILIB_License.txt file for more details.\r
+\r
+#    You should have received a copy of the FMILIB_License.txt file\r
+#    along with this program. If not, contact Modelon AB <http://www.modelon.com>.\r
+\r
+include_directories(${RTTESTDIR}/FMI1)\r
+\r
+add_executable (fmi1_capi_cs_test ${RTTESTDIR}/FMI1/fmi1_capi_cs_test.c )\r
+target_link_libraries (fmi1_capi_cs_test  ${FMICAPI_LIBRARIES})\r
+\r
+add_executable (fmi1_capi_me_test ${RTTESTDIR}/FMI1/fmi1_capi_me_test.c )\r
+target_link_libraries (fmi1_capi_me_test  ${FMICAPI_LIBRARIES})\r
+\r
+#Defines for the test FMUs\r
+set(FMU_DUMMY_ME_MODEL_IDENTIFIER BouncingBall) #This must be the same as in the xml-file\r
+set(FMU_DUMMY_CS_MODEL_IDENTIFIER BouncingBall) #This must be the same as in the xml-file\r
+set(FMU_DUMMY_MF_MODEL_IDENTIFIER BouncingBall_malformed) #This must be the same as in the xml-file\r
+\r
+set(FMU_DUMMY_FOLDER ${RTTESTDIR}/FMI1/fmu_dummy)\r
+\r
+set(FMU_DUMMY_ME_SOURCE\r
+  ${FMU_DUMMY_FOLDER}/fmu1_model_me.c\r
+)\r
+set(FMU_DUMMY_CS_SOURCE\r
+  ${FMU_DUMMY_FOLDER}/fmu1_model_cs.c\r
+)\r
+set(FMU_DUMMY_HEADERS\r
+  ${FMU_DUMMY_FOLDER}/fmu1_model.h\r
+  ${FMU_DUMMY_FOLDER}/fmu1_model_defines.h\r
+)\r
+\r
+add_library(fmu1_dll_me SHARED ${FMU_DUMMY_ME_SOURCE} ${FMU_DUMMY_HEADERS})\r
+add_library(fmu1_dll_cs SHARED ${FMU_DUMMY_CS_SOURCE} ${FMU_DUMMY_HEADERS})\r
+\r
+set(XML_ME_PATH ${FMU_DUMMY_FOLDER}/modelDescription_me.xml)\r
+set(XML_CS_PATH ${FMU_DUMMY_FOLDER}/modelDescription_cs.xml)\r
+set(XML_CS_TC_PATH ${FMU_DUMMY_FOLDER}/modelDescription_cs_tc.xml)\r
+set(XML_MF_PATH ${FMU_DUMMY_FOLDER}/modelDescription_malformed.xml)\r
+\r
+set(SHARED_LIBRARY_ME_PATH ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}fmu1_dll_me${CMAKE_SHARED_LIBRARY_SUFFIX})\r
+set(SHARED_LIBRARY_CS_PATH ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}fmu1_dll_cs${CMAKE_SHARED_LIBRARY_SUFFIX})\r
+\r
+#Create FMU 1.0 ME/CS Model and generate library path to be used in test config\r
+\r
+to_native_c_path("\"${SHARED_LIBRARY_ME_PATH}\"" DLL_OUTPUT_PATH_ME_DEFINE)\r
+to_native_c_path("\"${SHARED_LIBRARY_CS_PATH}\"" DLL_OUTPUT_PATH_CS_DEFINE)\r
+\r
+to_native_c_path("\"${CMAKE_CURRENT_BINARY_DIR}/\" CMAKE_INTDIR \"/${CMAKE_SHARED_LIBRARY_PREFIX}fmu1_dll_me${CMAKE_SHARED_LIBRARY_SUFFIX}\""\r
+                               FMU1_DLL_ME_PATH)\r
+to_native_c_path("\"${CMAKE_CURRENT_BINARY_DIR}/\" CMAKE_INTDIR \"/${CMAKE_SHARED_LIBRARY_PREFIX}fmu1_dll_cs${CMAKE_SHARED_LIBRARY_SUFFIX}\""\r
+                               FMU1_DLL_CS_PATH)\r
+\r
+#function(compress_fmu OUTPUT_FOLDER MODEL_IDENTIFIER FILE_NAME_CS_ME_EXT TARGET_NAME XML_PATH SHARED_LIBRARY_PATH)\r
+compress_fmu("${TEST_OUTPUT_FOLDER}" "${FMU_DUMMY_MF_MODEL_IDENTIFIER}" "mf" "fmu1_dll_me" "${XML_MF_PATH}" "${SHARED_LIBRARY_ME_PATH}")\r
+compress_fmu("${TEST_OUTPUT_FOLDER}" "${FMU_DUMMY_ME_MODEL_IDENTIFIER}" "me" "fmu1_dll_me" "${XML_ME_PATH}" "${SHARED_LIBRARY_ME_PATH}")\r
+compress_fmu("${TEST_OUTPUT_FOLDER}" "${FMU_DUMMY_CS_MODEL_IDENTIFIER}" "cs" "fmu1_dll_cs" "${XML_CS_PATH}" "${SHARED_LIBRARY_CS_PATH}")\r
+compress_fmu("${TEST_OUTPUT_FOLDER}" "${FMU_DUMMY_CS_MODEL_IDENTIFIER}" "cs_tc" "fmu1_dll_cs" "${XML_CS_TC_PATH}" "${SHARED_LIBRARY_CS_PATH}")\r
+\r
+add_executable (fmi1_xml_parsing_test ${RTTESTDIR}/FMI1/fmi1_xml_parsing_test.c)\r
+target_link_libraries (fmi1_xml_parsing_test  ${FMILIBFORTEST}  )\r
+add_executable (fmi_import_xml_test ${RTTESTDIR}/FMI1/fmi_import_xml_test.c)\r
+target_link_libraries (fmi_import_xml_test  ${FMILIBFORTEST}  )\r
+\r
+add_executable (fmi_import_me_test ${RTTESTDIR}/FMI1/fmi_import_me_test.c)\r
+target_link_libraries (fmi_import_me_test  ${FMILIBFORTEST})\r
+add_executable (fmi_import_cs_test ${RTTESTDIR}/FMI1/fmi_import_cs_test.c)\r
+target_link_libraries (fmi_import_cs_test  ${FMILIBFORTEST})\r
+\r
+to_native_c_path("${TEST_OUTPUT_FOLDER}/${FMU_DUMMY_ME_MODEL_IDENTIFIER}_me.fmu" FMU_ME_PATH)\r
+\r
+to_native_c_path("${TEST_OUTPUT_FOLDER}/${FMU_DUMMY_CS_MODEL_IDENTIFIER}_cs.fmu" FMU_CS_PATH)\r
+\r
+to_native_c_path("${TEST_OUTPUT_FOLDER}/${FMU_DUMMY_CS_MODEL_IDENTIFIER}_cs_tc.fmu" FMU_CS_TC_PATH)\r
+\r
+# set(FMU_TEMPFOLDER ${TEST_OUTPUT_FOLDER}/tempfolder)\r
+to_native_c_path(${TEST_OUTPUT_FOLDER}/tempfolder FMU_TEMPFOLDER)\r
+\r
+add_test(ctest_fmi1_xml_parsing_test fmi1_xml_parsing_test ${RTTESTDIR}/FMI1/parser_test_xmls/)\r
+ADD_TEST(ctest_fmi_import_me_test fmi_import_me_test ${FMU_ME_PATH} ${FMU_TEMPFOLDER})\r
+ADD_TEST(ctest_fmi_import_cs_test fmi_import_cs_test ${FMU_CS_PATH} ${FMU_TEMPFOLDER} "modelDescription_cs.xml")\r
+ADD_TEST(ctest_fmi_import_cs_tc_test fmi_import_cs_test ${FMU_CS_TC_PATH} ${FMU_TEMPFOLDER} "modelDescription_cs_tc.xml")\r
+# the next test relies on the output from the previous one.\r
+ADD_TEST(ctest_fmi_import_xml_test_empty fmi_import_xml_test ${FMU_DUMMY_FOLDER})\r
+ADD_TEST(ctest_fmi_import_xml_test fmi_import_xml_test ${FMU_TEMPFOLDER})\r
+add_test(ctest_fmi_import_xml_test_mf fmi_import_xml_test ${TEST_OUTPUT_FOLDER}/${FMU_DUMMY_MF_MODEL_IDENTIFIER}_mf)\r
+  set_tests_properties(ctest_fmi_import_xml_test_mf PROPERTIES WILL_FAIL TRUE)\r
+\r
+ADD_TEST(ctest_fmi1_capi_cs_test fmi1_capi_cs_test)\r
+ADD_TEST(ctest_fmi1_capi_me_test fmi1_capi_me_test)\r
+\r
+##Add logger test\r
+add_executable (fmi1_logger_test ${RTTESTDIR}/FMI1/fmi1_logger_test.c)\r
+target_link_libraries (fmi1_logger_test  ${FMILIBFORTEST}) \r
+\r
+set(logger_output_file "${TEST_OUTPUT_FOLDER}/fmi1_logger_test_output.txt")\r
+set(logger_reference_file "${RTTESTDIR}/FMI1/fmi1_logger_test_output.txt")\r
+\r
+add_test(ctest_fmi1_logger_test_run fmi1_logger_test ${FMU_ME_PATH} ${FMU_TEMPFOLDER} ${logger_output_file})\r
+add_test(ctest_fmi1_logger_test_check ${CMAKE_COMMAND} -E compare_files ${logger_output_file}  ${logger_reference_file})\r
+\r
+set_target_properties(\r
+       fmi_import_me_test \r
+       fmi_import_cs_test \r
+       fmi_import_xml_test\r
+       fmi1_capi_cs_test\r
+       fmi1_capi_me_test\r
+       fmi1_logger_test\r
+    fmi1_xml_parsing_test\r
+    PROPERTIES FOLDER "Test/FMI1")\r
+\r
+SET_TESTS_PROPERTIES ( \r
+       ctest_fmi1_logger_test_check    \r
+       PROPERTIES DEPENDS ctest_fmi1_logger_test_run   \r
+)\r
+\r
+if(FMILIB_BUILD_BEFORE_TESTS)\r
+       SET_TESTS_PROPERTIES ( \r
+               ctest_fmi_import_me_test\r
+               ctest_fmi_import_cs_test \r
+               ctest_fmi_import_xml_test\r
+               ctest_fmi_import_xml_test_empty\r
+               ctest_fmi_import_xml_test_mf\r
+               ctest_fmi1_capi_cs_test\r
+               ctest_fmi1_capi_me_test\r
+               ctest_fmi1_logger_test_run\r
+               ctest_fmi1_xml_parsing_test\r
+               PROPERTIES DEPENDS ctest_build_all)\r
+endif()\r
+\r
+SET_TESTS_PROPERTIES ( \r
+       ctest_fmi_import_xml_test       \r
+       PROPERTIES DEPENDS ctest_fmi_import_cs_test     \r
+)\r