From: Arnaud Giersch Date: Fri, 1 Feb 2019 13:58:38 +0000 (+0100) Subject: Convert the unit tests of xbt::config to Catch2. X-Git-Tag: v3_22~423 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/c4de3b4124781ae066e774981efb0a6ef8c857ed Convert the unit tests of xbt::config to Catch2. --- diff --git a/src/xbt/config.cpp b/src/xbt/config.cpp index 2b0e47260d..07d839f327 100644 --- a/src/xbt/config.cpp +++ b/src/xbt/config.cpp @@ -714,90 +714,3 @@ int xbt_cfg_get_boolean(const char *key) { return (*simgrid_config)[key].get_value() ? 1 : 0; } - -#ifdef SIMGRID_TEST - -#include - -#include "simgrid/Exception.hpp" -#include "xbt.h" -#include "xbt/ex.h" - -#include - -XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(xbt_cfg); - -XBT_TEST_SUITE("config", "Configuration support"); - -XBT_PUBLIC_DATA simgrid::config::Config* simgrid_config; - -static void make_set() -{ - simgrid_config = nullptr; - xbt_log_threshold_set(&_XBT_LOGV(xbt_cfg), xbt_log_priority_critical); - simgrid::config::declare_flag("speed", "description", 0); - simgrid::config::declare_flag("peername", "description", ""); - simgrid::config::declare_flag("user", "description", ""); -} /* end_of_make_set */ - -XBT_TEST_UNIT("memuse", test_config_memuse, "Alloc and free a config set") -{ - auto temp = simgrid_config; - make_set(); - xbt_test_add("Alloc and free a config set"); - simgrid::config::set_parse("peername:veloce user:bidule"); - simgrid::config::finalize(); - simgrid_config = temp; -} - -XBT_TEST_UNIT("use", test_config_use, "Data retrieving tests") -{ - auto temp = simgrid_config; - make_set(); - xbt_test_add("Get a single value"); - { - /* get_single_value */ - simgrid::config::set_parse("peername:toto:42 speed:42"); - int ival = simgrid::config::get_value("speed"); - if (ival != 42) - xbt_test_fail("Speed value = %d, I expected 42", ival); - } - - xbt_test_add("Access to a non-existant entry"); - { - try { - simgrid::config::set_parse("color:blue"); - } catch(xbt_ex& e) { - if (e.category != not_found_error) - xbt_test_exception(e); - } - } - simgrid::config::finalize(); - simgrid_config = temp; -} - -XBT_TEST_UNIT("c++flags", test_config_cxx_flags, "C++ flags") -{ - auto temp = simgrid_config; - make_set(); - xbt_test_add("C++ declaration of flags"); - - simgrid::config::Flag int_flag("int", "", 0); - simgrid::config::Flag string_flag("string", "", "foo"); - simgrid::config::Flag double_flag("double", "", 0.32); - simgrid::config::Flag bool_flag1("bool1", "", false); - simgrid::config::Flag bool_flag2("bool2", "", true); - - xbt_test_add("Parse values"); - simgrid::config::set_parse("int:42 string:bar double:8.0 bool1:true bool2:false"); - xbt_test_assert(int_flag == 42, "Check int flag"); - xbt_test_assert(string_flag == "bar", "Check string flag"); - xbt_test_assert(double_flag == 8.0, "Check double flag"); - xbt_test_assert(bool_flag1, "Check bool1 flag"); - xbt_test_assert(not bool_flag2, "Check bool2 flag"); - - simgrid::config::finalize(); - simgrid_config = temp; -} - -#endif /* SIMGRID_TEST */ diff --git a/src/xbt/config_test.cpp b/src/xbt/config_test.cpp new file mode 100644 index 0000000000..dd89d9e6e8 --- /dev/null +++ b/src/xbt/config_test.cpp @@ -0,0 +1,84 @@ +/* Copyright (c) 2004-2019. The SimGrid Team. All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ + +#include + +#include "simgrid/Exception.hpp" +#include +#include + +#include "catch.hpp" + +XBT_PUBLIC_DATA simgrid::config::Config* simgrid_config; + +static void make_set() +{ + XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(xbt_cfg); + xbt_log_threshold_set(&_XBT_LOGV(xbt_cfg), xbt_log_priority_critical); + simgrid_config = nullptr; + simgrid::config::declare_flag("speed", "description", 0); + simgrid::config::declare_flag("peername", "description", ""); + simgrid::config::declare_flag("user", "description", ""); +} + +TEST_CASE("xbt::config: Configuration support", "config") +{ + + SECTION("Alloc and free a config set") + { + auto temp = simgrid_config; + make_set(); + INFO("Alloc and free a config set"); + simgrid::config::set_parse("peername:veloce user:bidule"); + simgrid::config::finalize(); + simgrid_config = temp; + } + + SECTION("Data retrieving tests") + { + auto temp = simgrid_config; + make_set(); + + INFO("Get a single value"); + /* get_single_value */ + simgrid::config::set_parse("peername:toto:42 speed:42"); + int ival = simgrid::config::get_value("speed"); + REQUIRE(ival == 42); // Unexpected value for speed + + INFO("Access to a non-existant entry"); + + REQUIRE_THROWS_MATCHES( + simgrid::config::set_parse("color:blue"), xbt_ex, + Catch::Matchers::Predicate([](xbt_ex const& e) { return e.category == not_found_error; }, + "category not_found_error")); + + simgrid::config::finalize(); + simgrid_config = temp; + } + + SECTION("C++ flags") + { + auto temp = simgrid_config; + make_set(); + INFO("C++ declaration of flags"); + + simgrid::config::Flag int_flag("int", "", 0); + simgrid::config::Flag string_flag("string", "", "foo"); + simgrid::config::Flag double_flag("double", "", 0.32); + simgrid::config::Flag bool_flag1("bool1", "", false); + simgrid::config::Flag bool_flag2("bool2", "", true); + + INFO("Parse values"); + simgrid::config::set_parse("int:42 string:bar double:8.0 bool1:true bool2:false"); + REQUIRE(int_flag == 42); // Check int flag + REQUIRE(string_flag == "bar"); // Check string flag + REQUIRE(double_flag == 8.0); // Check double flag + REQUIRE(bool_flag1); // Check bool1 flag + REQUIRE(not bool_flag2); // Check bool2 flag + + simgrid::config::finalize(); + simgrid_config = temp; + } +} diff --git a/tools/cmake/Tests.cmake b/tools/cmake/Tests.cmake index 02da373062..7bc08675e5 100644 --- a/tools/cmake/Tests.cmake +++ b/tools/cmake/Tests.cmake @@ -124,6 +124,7 @@ ADD_TEST(testall ${CMAKE_BINARY_DIR}/testall) # New tests should use the Catch Framework set(UNIT_TESTS src/surf/trace_mgr_test.cpp + src/xbt/config_test.cpp src/xbt/dict_test.cpp src/xbt/dynar_test.cpp src/xbt/xbt_str_test.cpp) diff --git a/tools/cmake/UnitTesting.cmake b/tools/cmake/UnitTesting.cmake index 1ac344d091..93a7d777d8 100644 --- a/tools/cmake/UnitTesting.cmake +++ b/tools/cmake/UnitTesting.cmake @@ -6,7 +6,6 @@ set(FILES_CONTAINING_UNITTESTS src/xbt/cunit.cpp - src/xbt/config.cpp ) #### Nothing to change below this line to add a new tested file