// Copyright (c) 2017-2024, University of Cincinnati, developed by Henry Schreiner // under NSF AWARD 1414736 and by the respective contributors. // All rights reserved. // // SPDX-License-Identifier: BSD-3-Clause #include "app_helper.hpp" #include #include #include #include #include #include #include #include #include #include #include TEMPLATE_TEST_CASE("Boost container single", "[boost][optional]", (boost::container::small_vector), (boost::container::small_vector), boost::container::flat_set, boost::container::stable_vector, boost::container::slist) { TApp tapp; TestType cv; CLI::Option *opt = tapp.app.add_option("-v", cv); tapp.args = {"-v", "1", "-1", "-v", "3", "-v", "-976"}; tapp.run(); CHECK(tapp.app.count("-v") == 4u); CHECK(cv.size() == 4u); opt->check(CLI::PositiveNumber.application_index(0)); opt->check((!CLI::PositiveNumber).application_index(1)); CHECK_NOTHROW(tapp.run()); CHECK(cv.size() == 4u); // v[3] would be negative opt->check(CLI::PositiveNumber.application_index(3)); CHECK_THROWS_AS(tapp.run(), CLI::ValidationError); } using isp = std::pair; TEMPLATE_TEST_CASE("Boost container pair", "[boost][optional]", boost::container::stable_vector, (boost::container::small_vector), boost::container::flat_set, boost::container::slist, boost::container::vector, (boost::container::flat_map)) { TApp tapp; TestType cv; tapp.app.add_option("--dict", cv); tapp.args = {"--dict", "1", "str1", "--dict", "3", "str3"}; tapp.run(); CHECK(2u == cv.size()); tapp.args = {"--dict", "1", "str1", "--dict", "3", "--dict", "-1", "str4"}; tapp.run(); CHECK(3u == cv.size()); } using tup_obj = std::tuple; TEMPLATE_TEST_CASE("Boost container tuple", "[boost][optional]", (boost::container::small_vector), boost::container::stable_vector, boost::container::flat_set, boost::container::slist) { TApp tapp; TestType cv; tapp.app.add_option("--dict", cv); tapp.args = {"--dict", "1", "str1", "4.3", "--dict", "3", "str3", "2.7"}; tapp.run(); CHECK(2u == cv.size()); tapp.args = {"--dict", "1", "str1", "4.3", "--dict", "3", "str3", "2.7", "--dict", "-1", "str4", "-1.87"}; tapp.run(); CHECK(3u == cv.size()); } using icontainer1 = boost::container::vector; using icontainer2 = boost::container::flat_set; using icontainer3 = boost::container::slist; TEMPLATE_TEST_CASE("Boost container container", "[boost][optional]", std::vector, boost::container::slist, boost::container::flat_set, (boost::container::small_vector), std::vector, boost::container::slist, boost::container::flat_set, boost::container::stable_vector, (boost::container::static_vector), boost::container::slist, boost::container::flat_set, (boost::container::static_vector)) { TApp tapp; TestType cv; tapp.app.add_option("--dict", cv); tapp.args = {"--dict", "1", "2", "4", "--dict", "3", "1"}; tapp.run(); CHECK(2u == cv.size()); tapp.args = {"--dict", "1", "2", "4", "--dict", "3", "1", "--dict", "3", "--dict", "3", "3", "3", "3", "3", "3", "3", "3", "3", "-3"}; tapp.run(); CHECK(4u == cv.size()); }