Mercurial > hg > octave-kai > gnulib-hg
annotate tests/test-filevercmp.c @ 11429:a32a8b26323e
filevercmp: handle simple~ and numbered.~3~ backup suffixes
* lib/filevercmp.c: Handle simple~ and numbered.~3~ backup suffixes.
* tests/test-filevercmp.c: Add tests for backup suffixes.
Reported by Sven Joachim.
author | Kamil Dudka <kdudka@redhat.com> |
---|---|
date | Fri, 20 Mar 2009 11:20:12 +0100 |
parents | 98bcf3f48aa7 |
children | ecb28ce608f1 |
rev | line source |
---|---|
10573 | 1 /* Test of filevercmp() function. |
11429
a32a8b26323e
filevercmp: handle simple~ and numbered.~3~ backup suffixes
Kamil Dudka <kdudka@redhat.com>
parents:
11266
diff
changeset
|
2 Copyright (C) 2008-2009 Free Software Foundation, Inc. |
10573 | 3 |
4 This program is free software; you can redistribute it and/or modify | |
5 it under the terms of the GNU General Public License as published by | |
6 the Free Software Foundation; either version 3, or (at your option) | |
7 any later version. | |
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 | |
15 along with this program; if not, write to the Free Software Foundation, | |
16 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ | |
17 | |
18 #include <config.h> | |
19 | |
20 #include "filevercmp.h" | |
21 | |
22 #include <stdio.h> | |
23 #include <stdlib.h> | |
24 | |
25 #define ASSERT(expr) \ | |
26 do \ | |
27 { \ | |
28 if (!(expr)) \ | |
29 { \ | |
30 fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \ | |
31 fflush (stderr); \ | |
32 abort (); \ | |
33 } \ | |
34 } \ | |
35 while (0) | |
36 | |
37 /* set of well sorted examples */ | |
38 static const char *const examples[] = | |
39 { | |
11266
98bcf3f48aa7
filevercmp: Move hidden files up in ordering.
Kamil Dudka <kdudka@redhat.com>
parents:
10573
diff
changeset
|
40 ".", |
98bcf3f48aa7
filevercmp: Move hidden files up in ordering.
Kamil Dudka <kdudka@redhat.com>
parents:
10573
diff
changeset
|
41 "..", |
98bcf3f48aa7
filevercmp: Move hidden files up in ordering.
Kamil Dudka <kdudka@redhat.com>
parents:
10573
diff
changeset
|
42 ".a~", |
98bcf3f48aa7
filevercmp: Move hidden files up in ordering.
Kamil Dudka <kdudka@redhat.com>
parents:
10573
diff
changeset
|
43 ".a", |
98bcf3f48aa7
filevercmp: Move hidden files up in ordering.
Kamil Dudka <kdudka@redhat.com>
parents:
10573
diff
changeset
|
44 ".b~", |
98bcf3f48aa7
filevercmp: Move hidden files up in ordering.
Kamil Dudka <kdudka@redhat.com>
parents:
10573
diff
changeset
|
45 ".b", |
98bcf3f48aa7
filevercmp: Move hidden files up in ordering.
Kamil Dudka <kdudka@redhat.com>
parents:
10573
diff
changeset
|
46 "a~", |
98bcf3f48aa7
filevercmp: Move hidden files up in ordering.
Kamil Dudka <kdudka@redhat.com>
parents:
10573
diff
changeset
|
47 "a", |
11429
a32a8b26323e
filevercmp: handle simple~ and numbered.~3~ backup suffixes
Kamil Dudka <kdudka@redhat.com>
parents:
11266
diff
changeset
|
48 "a.b~", |
a32a8b26323e
filevercmp: handle simple~ and numbered.~3~ backup suffixes
Kamil Dudka <kdudka@redhat.com>
parents:
11266
diff
changeset
|
49 "a.b", |
a32a8b26323e
filevercmp: handle simple~ and numbered.~3~ backup suffixes
Kamil Dudka <kdudka@redhat.com>
parents:
11266
diff
changeset
|
50 "a.bc~", |
a32a8b26323e
filevercmp: handle simple~ and numbered.~3~ backup suffixes
Kamil Dudka <kdudka@redhat.com>
parents:
11266
diff
changeset
|
51 "a.bc", |
11266
98bcf3f48aa7
filevercmp: Move hidden files up in ordering.
Kamil Dudka <kdudka@redhat.com>
parents:
10573
diff
changeset
|
52 "b~", |
98bcf3f48aa7
filevercmp: Move hidden files up in ordering.
Kamil Dudka <kdudka@redhat.com>
parents:
10573
diff
changeset
|
53 "b", |
10573 | 54 "gcc-c++-10.fc9.tar.gz", |
11429
a32a8b26323e
filevercmp: handle simple~ and numbered.~3~ backup suffixes
Kamil Dudka <kdudka@redhat.com>
parents:
11266
diff
changeset
|
55 "gcc-c++-10.fc9.tar.gz.~1~", |
a32a8b26323e
filevercmp: handle simple~ and numbered.~3~ backup suffixes
Kamil Dudka <kdudka@redhat.com>
parents:
11266
diff
changeset
|
56 "gcc-c++-10.fc9.tar.gz.~2~", |
10573 | 57 "gcc-c++-10.8.12-0.7rc2.fc9.tar.bz2", |
11429
a32a8b26323e
filevercmp: handle simple~ and numbered.~3~ backup suffixes
Kamil Dudka <kdudka@redhat.com>
parents:
11266
diff
changeset
|
58 "gcc-c++-10.8.12-0.7rc2.fc9.tar.bz2.~1~", |
10573 | 59 "glibc-2-0.1.beta1.fc10.rpm", |
60 "glibc-common-5-0.2.beta2.fc9.ebuild", | |
61 "glibc-common-5-0.2b.deb", | |
62 "glibc-common-11b.ebuild", | |
63 "glibc-common-11-0.6rc2.ebuild", | |
64 "libstdc++-0.5.8.11-0.7rc2.fc10.tar.gz", | |
65 "libstdc++-4a.fc8.tar.gz", | |
66 "libstdc++-4.10.4.20040204svn.rpm", | |
67 "libstdc++-devel-3.fc8.ebuild", | |
68 "libstdc++-devel-3a.fc9.tar.gz", | |
69 "libstdc++-devel-8.fc8.deb", | |
70 "libstdc++-devel-8.6.2-0.4b.fc8", | |
71 "nss_ldap-1-0.2b.fc9.tar.bz2", | |
72 "nss_ldap-1-0.6rc2.fc8.tar.gz", | |
73 "nss_ldap-1.0-0.1a.tar.gz", | |
74 "nss_ldap-10beta1.fc8.tar.gz", | |
75 "nss_ldap-10.11.8.6.20040204cvs.fc10.ebuild", | |
76 NULL | |
77 }; | |
78 | |
79 int | |
80 main (int argc, char **argv) | |
81 { | |
82 const char *const *i; | |
83 | |
84 /* Following tests taken from test-strverscmp.c */ | |
85 ASSERT (filevercmp ("", "") == 0); | |
86 ASSERT (filevercmp ("a", "a") == 0); | |
87 ASSERT (filevercmp ("a", "b") < 0); | |
88 ASSERT (filevercmp ("b", "a") > 0); | |
89 ASSERT (filevercmp ("a0", "a") > 0); | |
90 ASSERT (filevercmp ("00", "01") < 0); | |
91 ASSERT (filevercmp ("01", "010") < 0); | |
92 ASSERT (filevercmp ("9", "10") < 0); | |
93 ASSERT (filevercmp ("0a", "0") > 0); | |
94 | |
95 /* compare each version string with each other - O(n^2) */ | |
96 for (i = examples; *i; i++) | |
97 { | |
98 const char *const *j; | |
99 for (j = examples; *j; j++) | |
100 { | |
101 int result = filevercmp (*i, *j); | |
102 if (result < 0) | |
103 ASSERT (i < j); | |
104 else if (0 < result) | |
105 ASSERT (j < i); | |
106 else | |
107 ASSERT (i == j); | |
108 } | |
109 } | |
110 | |
111 return 0; | |
112 } |