Skip to content

Commit b6f6a06

Browse files
committed
liboptparse/test: test optparse_get_size() and get_size_int()
Problem: The liboptparse get_size() and get_size_int() accessors are not tested in the optparse unit tests. Add a set of tests for optparse_get_size() and optparse_get_size_int() to the optparse unit tests.
1 parent 60d1e15 commit b6f6a06

File tree

1 file changed

+64
-3
lines changed

1 file changed

+64
-3
lines changed

src/common/liboptparse/test/optparse.c

Lines changed: 64 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -370,17 +370,23 @@ void test_convenience_accessors (void)
370370
{ .name = "dub", .key = 7, .has_arg = 1, .arginfo = "", .usage = "" },
371371
{ .name = "ndb", .key = 8, .has_arg = 1, .arginfo = "", .usage = "" },
372372
{ .name = "dur", .key = 9, .has_arg = 1, .arginfo = "", .usage = "" },
373+
{ .name = "size", .key = 10, .has_arg = 1, .arginfo = "", .usage = "" },
374+
{ .name = "sizeint", .key = 11, .has_arg = 1, .arginfo = "", .usage = "" },
373375
OPTPARSE_TABLE_END,
374376
};
375377

376378
char *av[] = { "test", "--foo", "--baz=hello", "--mnf=7", "--neg=-4",
377-
"--dub=5.7", "--ndb=-3.2", "--dur=1.5m", NULL };
379+
"--dub=5.7", "--ndb=-3.2", "--dur=1.5m", "--size=4G",
380+
"--sizeint=1.25G", NULL };
378381
int ac = ARRAY_SIZE (av) - 1;
379382
int rc, optindex;
380383

381384
optparse_t *p = optparse_create ("test");
382385
ok (p != NULL, "create object");
383386

387+
ok (optparse_set (p, OPTPARSE_LOG_FN, diag) == OPTPARSE_SUCCESS,
388+
"optparse_set LOG_FN");
389+
384390
rc = optparse_add_option_table (p, opts);
385391
ok (rc == OPTPARSE_SUCCESS, "register options");
386392

@@ -463,6 +469,61 @@ void test_convenience_accessors (void)
463469
ok (optparse_get_duration (p, "dur", 42) == 90.,
464470
"get_duration returns duration arg when present");
465471

472+
/* get_size
473+
*/
474+
dies_ok ({optparse_get_size (p, "no-exist", "0"); },
475+
"get_size exits on unknown arg");
476+
dies_ok ({optparse_get_size (p, "foo", "0"); },
477+
"get_size exits on option with no argument");
478+
dies_ok ({optparse_get_size (p, "baz", "0"); },
479+
"get_size exits on option with wrong type argument (string)");
480+
dies_ok ({optparse_get_size (p, "neg", "42"); },
481+
"get_size exits on negative arg");
482+
dies_ok ({optparse_get_size (p, "dur", "42"); },
483+
"get_size exits on bad suffix");
484+
dies_ok ({optparse_get_size (p, "bar", "1m"); },
485+
"get_size exits on bad suffix in default");
486+
lives_ok ({optparse_get_size (p, "size", "1k"); },
487+
"get_size lives on known arg");
488+
489+
ok (optparse_get_size (p, "bar", "10M") == 10*1024*1024,
490+
"get_size returns default argument when arg not present");
491+
ok (optparse_get_size (p, "bar", NULL) == 0,
492+
"get_size default_argument=NULL results in default=0 ");
493+
ok (optparse_get_size (p, "mnf", "0") == 7,
494+
"get_size returns arg when present");
495+
ok (optparse_get_size (p, "size", "0") == 4*1024UL*1024*1024,
496+
"get_size returns size arg when present");
497+
498+
/* get_size_int
499+
*/
500+
dies_ok ({optparse_get_size_int (p, "no-exist", "0"); },
501+
"get_size_int exits on unknown arg");
502+
dies_ok ({optparse_get_size_int (p, "foo", "0"); },
503+
"get_size_int exits on option with no argument");
504+
dies_ok ({optparse_get_size_int (p, "baz", "0"); },
505+
"get_size_int exits on option with wrong type argument (string)");
506+
dies_ok ({optparse_get_size_int (p, "neg", "42"); },
507+
"get_size_int exits on negative arg");
508+
dies_ok ({optparse_get_size_int (p, "dur", "42"); },
509+
"get_size_int exits on bad suffix");
510+
dies_ok ({optparse_get_size_int (p, "bar", "1m"); },
511+
"get_size_int exits on bad suffix in default");
512+
dies_ok ({optparse_get_size_int (p, "size", "1M"); },
513+
"get_size_int exits on value too large");
514+
lives_ok ({optparse_get_size_int (p, "mnf", "1k"); },
515+
"get_size_int lives on known arg");
516+
517+
ok (optparse_get_size_int (p, "bar", "10M") == 10*1024*1024,
518+
"get_size_int returns default argument when arg not present");
519+
ok (optparse_get_size_int (p, "bar", NULL) == 0,
520+
"get_size_int default_argument=NULL results in default=0 ");
521+
ok (optparse_get_size_int (p, "mnf", "0") == 7,
522+
"get_size_int returns arg when present");
523+
ok (optparse_get_size_int (p, "sizeint", "0") == 1.25*1024L*1024*1024,
524+
"get_size_int returns size arg when present");
525+
526+
466527
/* get_str
467528
*/
468529
dies_ok ({optparse_get_str (p, "no-exist", NULL); },
@@ -1363,9 +1424,9 @@ static void test_optional_args ()
13631424

13641425
int main (int argc, char *argv[])
13651426
{
1366-
plan (299);
1427+
plan (323);
13671428

1368-
test_convenience_accessors (); /* 36 tests */
1429+
test_convenience_accessors (); /* 60 tests */
13691430
test_usage_output (); /* 46 tests */
13701431
test_option_cb (); /* 16 tests */
13711432
test_errors (); /* 9 tests */

0 commit comments

Comments
 (0)