mirror of
https://github.com/dvorka/hstr.git
synced 2024-12-29 11:11:32 +08:00
Adding getopt tests.
This commit is contained in:
parent
8a10275394
commit
96c476fe8c
2 changed files with 92 additions and 0 deletions
87
tests/src/test_getopt.c
Normal file
87
tests/src/test_getopt.c
Normal file
|
@ -0,0 +1,87 @@
|
|||
/*
|
||||
============================================================================
|
||||
Name : test_getopt.c
|
||||
Author : martin.dvorak@mindforger.com
|
||||
Copyright : Apache 2.0
|
||||
Description : A test
|
||||
============================================================================
|
||||
*/
|
||||
|
||||
#include <stdio.h> /* for printf */
|
||||
#include <stdlib.h> /* for exit */
|
||||
#include <getopt.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int c;
|
||||
int digit_optind = 0;
|
||||
|
||||
while (1) {
|
||||
int this_option_optind = optind ? optind : 1;
|
||||
int option_index = 0;
|
||||
static struct option long_options[] = {
|
||||
{"add", required_argument, 0, 0 },
|
||||
{"append", no_argument, 0, 0 },
|
||||
{"delete", required_argument, 0, 0 },
|
||||
{"verbose", no_argument, 0, 0 },
|
||||
{"create", required_argument, 0, 'c'},
|
||||
{"file", required_argument, 0, 0 },
|
||||
{0, 0, 0, 0 }
|
||||
};
|
||||
|
||||
c = getopt_long(argc, argv, "abc:d:012", long_options, &option_index);
|
||||
if (c == -1)
|
||||
break;
|
||||
|
||||
|
||||
switch (c) {
|
||||
case 0:
|
||||
printf("option %s", long_options[option_index].name);
|
||||
if (optarg)
|
||||
printf(" with arg %s", optarg);
|
||||
printf("\n");
|
||||
break;
|
||||
|
||||
case '0':
|
||||
case '1':
|
||||
case '2':
|
||||
if (digit_optind != 0 && digit_optind != this_option_optind)
|
||||
printf("digits occur in two different argv-elements.\n");
|
||||
digit_optind = this_option_optind;
|
||||
printf("option %c\n", c);
|
||||
break;
|
||||
|
||||
case 'a':
|
||||
printf("option a\n");
|
||||
break;
|
||||
|
||||
case 'b':
|
||||
printf("option b\n");
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
printf("option c with value '%s'\n", optarg);
|
||||
break;
|
||||
|
||||
case 'd':
|
||||
printf("option d with value '%s'\n", optarg);
|
||||
break;
|
||||
|
||||
case '?':
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("?? getopt returned character code 0%o ??\n", c);
|
||||
}
|
||||
}
|
||||
|
||||
if (optind < argc) {
|
||||
printf("non-option ARGV-elements: ");
|
||||
while (optind < argc)
|
||||
printf("%s ", argv[optind++]);
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
5
tests/test_getopt.sh
Executable file
5
tests/test_getopt.sh
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
gcc ./src/test_getopt.c -o _getopt
|
||||
|
||||
# eof
|
Loading…
Reference in a new issue