a few more tests

v2
Brett 2025-02-20 00:50:49 -05:00
parent 389762e2ae
commit e8e891d4fc
2 changed files with 47 additions and 2 deletions

View File

@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.20) cmake_minimum_required(VERSION 3.20)
include(cmake/color.cmake) include(cmake/color.cmake)
set(BLT_VERSION 4.0.19) set(BLT_VERSION 4.0.20)
set(BLT_TARGET BLT) set(BLT_TARGET BLT)

View File

@ -288,7 +288,7 @@ namespace blt::argparse
} }
// Helper function to simulate argument parsing for nargs tests // Helper function to simulate argument parsing for nargs tests
bool parse_arguments(const std::vector<std::string_view>& args, int expected_nargs) bool parse_arguments(const std::vector<std::string_view>& args, const nargs_v expected_nargs)
{ {
argument_parser_t parser; argument_parser_t parser;
@ -371,6 +371,49 @@ namespace blt::argparse
std::cout << "Success: test_nargs_2\n"; std::cout << "Success: test_nargs_2\n";
} }
void test_nargs_all() {
std::cout << "[Running Test: test_nargs_all]\n";
// Valid case: No arguments
const std::vector<std::string_view> valid_args_0 = {"./program"};
BLT_ASSERT(parse_arguments(valid_args_0, argparse::nargs_t::ALL),
"nargs=ALL: Should accept all remaining arguments (even if none left)");
// Valid case: Multiple arguments
const std::vector<std::string_view> valid_args_2 = {"./program", "arg1", "arg2"};
BLT_ASSERT(parse_arguments(valid_args_2, argparse::nargs_t::ALL),
"nargs=ALL: Should accept all remaining arguments");
// Valid case: Many arguments
const std::vector<std::string_view> valid_args_many = {"./program", "arg1", "arg2", "arg3", "arg4"};
BLT_ASSERT(parse_arguments(valid_args_many, argparse::nargs_t::ALL),
"nargs=ALL: Should accept all remaining arguments");
std::cout << "Success: test_nargs_all\n";
}
// Test case for nargs_t::ALL_AT_LEAST_ONE
void test_nargs_all_at_least_one() {
std::cout << "[Running Test: test_nargs_all_at_least_one]\n";
// Valid case: 1 argument
const std::vector<std::string_view> valid_args_1 = {"arg1"};
BLT_ASSERT(parse_arguments(valid_args_1, argparse::nargs_t::ALL_AT_LEAST_ONE),
"nargs=ALL_AT_LEAST_ONE: Should accept at least one argument and consume it");
// Valid case: Multiple arguments
const std::vector<std::string_view> valid_args_3 = {"arg1", "arg2", "arg3"};
BLT_ASSERT(parse_arguments(valid_args_3, argparse::nargs_t::ALL_AT_LEAST_ONE),
"nargs=ALL_AT_LEAST_ONE: Should accept at least one argument and consume all remaining arguments");
// Invalid case: No arguments
const std::vector<std::string_view> invalid_args_0 = {};
BLT_ASSERT(!parse_arguments(invalid_args_0, argparse::nargs_t::ALL_AT_LEAST_ONE),
"nargs=ALL_AT_LEAST_ONE: Should reject if no arguments are provided");
std::cout << "Success: test_nargs_all_at_least_one\n";
}
void run_argparse_flag_tests() void run_argparse_flag_tests()
{ {
test_single_flag_prefixes(); test_single_flag_prefixes();
@ -385,6 +428,8 @@ namespace blt::argparse
test_nargs_0(); test_nargs_0();
test_nargs_1(); test_nargs_1();
test_nargs_2(); test_nargs_2();
test_nargs_all();
test_nargs_all_at_least_one();
std::cout << "All nargs tests passed successfully.\n"; std::cout << "All nargs tests passed successfully.\n";
} }