annotate tests/test-readtokens.c @ 16614:1e2b27c67c69

test-readtokens.c: use const; remove unwarranted cast * tests/test-readtokens.c: Declare delim to be const, to avoid a cast.
author Bruno Haible <bruno@clisp.org>
date Thu, 08 Mar 2012 12:04:16 +0100
parents 1e35ae24b8f2
children e542fd46ad6f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16598
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
1 /* Test the readtokens module.
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
2 Copyright (C) 2012 Free Software Foundation, Inc.
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
3
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
4 This program is free software: you can redistribute it and/or modify
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
5 it under the terms of the GNU General Public License as published by
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
6 the Free Software Foundation; either version 3 of the License, or
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
7 (at your option) any later version.
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
8
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
9 This program is distributed in the hope that it will be useful,
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
12 GNU General Public License for more details.
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
13
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
14 You should have received a copy of the GNU General Public License
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
15 along with this program. If not, see <http://www.gnu.org/licenses/>. */
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
16
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
17 #include <config.h>
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
18 #include <stdbool.h>
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
19 #include <sys/types.h>
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
20 #include <sys/stat.h>
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
21 #include <fcntl.h>
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
22 #include <string.h>
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
23 #include <stdio.h>
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
24 #include <unistd.h>
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
25
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
26 #include "readtokens.h"
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
27 #include "closeout.h"
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
28 #include "macros.h"
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
29
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
30 static void
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
31 basic (void)
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
32 {
16609
1e35ae24b8f2 test-readtokens.c: avoid const-related compilation warnings
Jim Meyering <meyering@redhat.com>
parents: 16598
diff changeset
33 char const *filename = "in.827";
16598
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
34 int fd = open (filename, O_CREAT | O_WRONLY, 0600);
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
35 ASSERT (fd >= 0);
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
36 ASSERT (write (fd, "a|b;c+d", 7) == 7);
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
37 ASSERT (close (fd) == 0);
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
38
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
39 {
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
40 token_buffer tb;
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
41 FILE *fp = fopen (filename, "r");
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
42 ASSERT (fp);
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
43
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
44 init_tokenbuffer (&tb);
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
45 ASSERT (readtoken (fp, "|;", 2, &tb) == 1 && tb.buffer[0] == 'a');
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
46 ASSERT (readtoken (fp, "|;", 2, &tb) == 1 && tb.buffer[0] == 'b');
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
47 ASSERT (readtoken (fp, "+", 1, &tb) == 1 && tb.buffer[0] == 'c');
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
48 ASSERT (readtoken (fp, "-", 1, &tb) == 1 && tb.buffer[0] == 'd');
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
49 ASSERT (readtoken (fp, "%", 0, &tb) == (size_t) -1);
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
50 ASSERT ( ! ferror (fp));
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
51 ASSERT (fclose (fp) == 0);
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
52 }
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
53 }
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
54
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
55 int
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
56 main (int argc, char **argv)
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
57 {
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
58 token_buffer tb;
16614
1e2b27c67c69 test-readtokens.c: use const; remove unwarranted cast
Bruno Haible <bruno@clisp.org>
parents: 16609
diff changeset
59 char const *delim;
16598
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
60 size_t delim_len;
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
61
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
62 atexit (close_stdout);
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
63
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
64 if (argc == 1)
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
65 {
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
66 basic ();
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
67 return 0;
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
68 }
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
69
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
70 init_tokenbuffer (&tb);
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
71
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
72 if (argc != 2)
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
73 return 99;
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
74
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
75 delim = argv[1];
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
76 delim_len = strlen (delim);
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
77
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
78 if (STREQ (delim, "\\0"))
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
79 {
16614
1e2b27c67c69 test-readtokens.c: use const; remove unwarranted cast
Bruno Haible <bruno@clisp.org>
parents: 16609
diff changeset
80 delim = "";
16598
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
81 delim_len = 1;
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
82 }
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
83
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
84 while (1)
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
85 {
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
86 size_t token_length = readtoken (stdin, delim, delim_len, &tb);
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
87 if (token_length == (size_t) -1)
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
88 break;
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
89 fwrite (tb.buffer, 1, token_length, stdout);
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
90 putchar (':');
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
91 }
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
92 putchar ('\n');
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
93 free (tb.buffer);
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
94
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
95 ASSERT ( ! ferror (stdin));
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
96
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
97 return 0;
dcdc513e338b readtokens: add tests
Jim Meyering <meyering@redhat.com>
parents:
diff changeset
98 }