Mercurial > hg > octave-kai > gnulib-hg
annotate tests/test-argmatch.c @ 12391:5d8d7c606ce6
test-dup2: enhance test
Ensure that dup2(cloexec_fd, target) returns an inheritable fd.
* modules/dup2-tests (Depends-on): Add cloexec.
* tests/test-dup2.c (main): Enhance test.
Signed-off-by: Eric Blake <ebb9@byu.net>
author | Eric Blake <ebb9@byu.net> |
---|---|
date | Sat, 05 Dec 2009 06:19:01 -0700 |
parents | 0be6f1ab456d |
children | e8d2c6fc33ad |
rev | line source |
---|---|
8325 | 1 /* Test of exact or abbreviated match search. |
9889
0be6f1ab456d
Flush the standard error stream before aborting.
Bruno Haible <bruno@clisp.org>
parents:
9476
diff
changeset
|
2 Copyright (C) 1990, 1998-1999, 2001-2008 Free Software Foundation, Inc. |
8325 | 3 |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
8891
diff
changeset
|
4 This program is free software: you can redistribute it and/or modify |
8325 | 5 it under the terms of the GNU General Public License as published by |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
8891
diff
changeset
|
6 the Free Software Foundation; either version 3 of the License, or |
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
8891
diff
changeset
|
7 (at your option) any later version. |
8325 | 8 |
9 This program is distributed in the hope that it will be useful, | |
10 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 GNU General Public License for more details. | |
13 | |
14 You should have received a copy of the GNU General Public License | |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
8891
diff
changeset
|
15 along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
8325 | 16 |
17 /* Written by Bruno Haible <bruno@clisp.org>, 2007, based on test code | |
18 by David MacKenzie <djm@gnu.ai.mit.edu>. */ | |
19 | |
8891
633babea5f62
Unconditionally include <config.h> in unit tests.
Eric Blake <ebb9@byu.net>
parents:
8754
diff
changeset
|
20 #include <config.h> |
8325 | 21 |
22 #include "argmatch.h" | |
23 | |
8754 | 24 #include <stdio.h> |
8325 | 25 #include <stdlib.h> |
26 | |
27 #include "progname.h" | |
28 | |
8754 | 29 #define ASSERT(expr) \ |
30 do \ | |
31 { \ | |
32 if (!(expr)) \ | |
33 { \ | |
34 fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \ | |
9889
0be6f1ab456d
Flush the standard error stream before aborting.
Bruno Haible <bruno@clisp.org>
parents:
9476
diff
changeset
|
35 fflush (stderr); \ |
8754 | 36 abort (); \ |
37 } \ | |
38 } \ | |
39 while (0) | |
8325 | 40 |
9476
b335ae52450d
Define a sometimes-link-required function using ARGMATCH_DIE_DECL.
Jim Meyering <meyering@redhat.com>
parents:
9468
diff
changeset
|
41 /* Some packages define ARGMATCH_DIE and ARGMATCH_DIE_DECL in <config.h>, and |
b335ae52450d
Define a sometimes-link-required function using ARGMATCH_DIE_DECL.
Jim Meyering <meyering@redhat.com>
parents:
9468
diff
changeset
|
42 thus must link with a definition of that function. Provide it here. */ |
b335ae52450d
Define a sometimes-link-required function using ARGMATCH_DIE_DECL.
Jim Meyering <meyering@redhat.com>
parents:
9468
diff
changeset
|
43 #ifdef ARGMATCH_DIE_DECL |
b335ae52450d
Define a sometimes-link-required function using ARGMATCH_DIE_DECL.
Jim Meyering <meyering@redhat.com>
parents:
9468
diff
changeset
|
44 ARGMATCH_DIE_DECL { exit (1); } |
b335ae52450d
Define a sometimes-link-required function using ARGMATCH_DIE_DECL.
Jim Meyering <meyering@redhat.com>
parents:
9468
diff
changeset
|
45 #endif |
b335ae52450d
Define a sometimes-link-required function using ARGMATCH_DIE_DECL.
Jim Meyering <meyering@redhat.com>
parents:
9468
diff
changeset
|
46 |
8325 | 47 enum backup_type |
48 { | |
49 no_backups, | |
50 simple_backups, | |
51 numbered_existing_backups, | |
52 numbered_backups | |
53 }; | |
54 | |
55 static const char *const backup_args[] = | |
56 { | |
57 "no", "none", "off", | |
58 "simple", "never", "single", | |
59 "existing", "nil", "numbered-existing", | |
60 "numbered", "t", "newstyle", | |
61 NULL | |
62 }; | |
63 | |
64 static const enum backup_type backup_vals[] = | |
65 { | |
66 no_backups, no_backups, no_backups, | |
67 simple_backups, simple_backups, simple_backups, | |
68 numbered_existing_backups, numbered_existing_backups, numbered_existing_backups, | |
69 numbered_backups, numbered_backups, numbered_backups | |
70 }; | |
71 | |
72 int | |
73 main (int argc, char *argv[]) | |
74 { | |
75 set_program_name (argv[0]); | |
76 | |
77 /* Not found. */ | |
78 ASSERT (ARGMATCH ("klingon", backup_args, backup_vals) == -1); | |
79 | |
80 /* Exact match. */ | |
81 ASSERT (ARGMATCH ("none", backup_args, backup_vals) == 1); | |
82 ASSERT (ARGMATCH ("nil", backup_args, backup_vals) == 7); | |
83 | |
84 /* Too long. */ | |
85 ASSERT (ARGMATCH ("nilpotent", backup_args, backup_vals) == -1); | |
86 | |
87 /* Abbreviated. */ | |
88 ASSERT (ARGMATCH ("simpl", backup_args, backup_vals) == 3); | |
89 ASSERT (ARGMATCH ("simp", backup_args, backup_vals) == 3); | |
90 ASSERT (ARGMATCH ("sim", backup_args, backup_vals) == 3); | |
91 | |
92 /* Exact match and abbreviated. */ | |
93 ASSERT (ARGMATCH ("numbered", backup_args, backup_vals) == 9); | |
94 ASSERT (ARGMATCH ("numbere", backup_args, backup_vals) == -2); | |
95 ASSERT (ARGMATCH ("number", backup_args, backup_vals) == -2); | |
96 ASSERT (ARGMATCH ("numbe", backup_args, backup_vals) == -2); | |
97 ASSERT (ARGMATCH ("numb", backup_args, backup_vals) == -2); | |
98 ASSERT (ARGMATCH ("num", backup_args, backup_vals) == -2); | |
99 ASSERT (ARGMATCH ("nu", backup_args, backup_vals) == -2); | |
100 ASSERT (ARGMATCH ("n", backup_args, backup_vals) == -2); | |
101 | |
102 /* Ambiguous abbreviated. */ | |
103 ASSERT (ARGMATCH ("ne", backup_args, backup_vals) == -2); | |
104 | |
105 /* Ambiguous abbreviated, but same value. */ | |
106 ASSERT (ARGMATCH ("si", backup_args, backup_vals) == 3); | |
107 ASSERT (ARGMATCH ("s", backup_args, backup_vals) == 3); | |
108 | |
109 return 0; | |
110 } |