msm: consistency for equally ranked keys
[platform/upstream/rpm.git] / tests / rpmvercmp.at
1 #    rpmvercmp.at: rpm version comparison tests
2
3 m4_define([RPMVERCMP],[
4 AT_SETUP([rpmvercmp($1, $2) = $3])
5 AT_KEYWORDS([vercmp])
6 AT_CHECK([runroot rpm --eval '%{lua: print(rpm.vercmp("$1", "$2"))}'], [0], [$3
7 ], [])
8 AT_CLEANUP
9 ])
10
11 AT_BANNER([RPM version comparison])
12
13 RPMVERCMP(1.0, 1.0, 0)
14 RPMVERCMP(1.0, 2.0, -1)
15 RPMVERCMP(2.0, 1.0, 1)
16
17 RPMVERCMP(2.0.1, 2.0.1, 0)
18 RPMVERCMP(2.0, 2.0.1, -1)
19 RPMVERCMP(2.0.1, 2.0, 1)
20
21 RPMVERCMP(2.0.1a, 2.0.1a, 0)
22 RPMVERCMP(2.0.1a, 2.0.1, 1)
23 RPMVERCMP(2.0.1, 2.0.1a, -1)
24
25 RPMVERCMP(5.5p1, 5.5p1, 0)
26 RPMVERCMP(5.5p1, 5.5p2, -1)
27 RPMVERCMP(5.5p2, 5.5p1, 1)
28
29 RPMVERCMP(5.5p10, 5.5p10, 0)
30 RPMVERCMP(5.5p1, 5.5p10, -1)
31 RPMVERCMP(5.5p10, 5.5p1, 1)
32
33 RPMVERCMP(10xyz, 10.1xyz, -1)
34 RPMVERCMP(10.1xyz, 10xyz, 1)
35
36 RPMVERCMP(xyz10, xyz10, 0)
37 RPMVERCMP(xyz10, xyz10.1, -1)
38 RPMVERCMP(xyz10.1, xyz10, 1)
39
40 RPMVERCMP(xyz.4, xyz.4, 0)
41 RPMVERCMP(xyz.4, 8, -1)
42 RPMVERCMP(8, xyz.4, 1)
43 RPMVERCMP(xyz.4, 2, -1)
44 RPMVERCMP(2, xyz.4, 1)
45
46 RPMVERCMP(5.5p2, 5.6p1, -1)
47 RPMVERCMP(5.6p1, 5.5p2, 1)
48
49 RPMVERCMP(5.6p1, 6.5p1, -1)
50 RPMVERCMP(6.5p1, 5.6p1, 1)
51
52 RPMVERCMP(6.0.rc1, 6.0, 1)
53 RPMVERCMP(6.0, 6.0.rc1, -1)
54
55 RPMVERCMP(10b2, 10a1, 1)
56 RPMVERCMP(10a2, 10b2, -1)
57
58 RPMVERCMP(1.0aa, 1.0aa, 0)
59 RPMVERCMP(1.0a, 1.0aa, -1)
60 RPMVERCMP(1.0aa, 1.0a, 1)
61
62 RPMVERCMP(10.0001, 10.0001, 0)
63 RPMVERCMP(10.0001, 10.1, 0)
64 RPMVERCMP(10.1, 10.0001, 0)
65 RPMVERCMP(10.0001, 10.0039, -1)
66 RPMVERCMP(10.0039, 10.0001, 1)
67
68 RPMVERCMP(4.999.9, 5.0, -1)
69 RPMVERCMP(5.0, 4.999.9, 1)
70
71 RPMVERCMP(20101121, 20101121, 0)
72 RPMVERCMP(20101121, 20101122, -1)
73 RPMVERCMP(20101122, 20101121, 1)
74
75 RPMVERCMP(2_0, 2_0, 0)
76 RPMVERCMP(2.0, 2_0, 0)
77 RPMVERCMP(2_0, 2.0, 0)
78
79 dnl RhBug:178798 case
80 RPMVERCMP(a, a, 0)
81 RPMVERCMP(a+, a+, 0)
82 RPMVERCMP(a+, a_, 0)
83 RPMVERCMP(a_, a+, 0)
84 RPMVERCMP(+a, +a, 0)
85 RPMVERCMP(+a, _a, 0)
86 RPMVERCMP(_a, +a, 0)
87 RPMVERCMP(+_, +_, 0)
88 RPMVERCMP(_+, +_, 0)
89 RPMVERCMP(_+, _+, 0)
90 RPMVERCMP(+, _, 0)
91 RPMVERCMP(_, +, 0)
92
93 dnl Basic testcases for tilde sorting
94 RPMVERCMP(1.0~rc1, 1.0~rc1, 0)
95 RPMVERCMP(1.0~rc1, 1.0, -1)
96 RPMVERCMP(1.0, 1.0~rc1, 1)
97 RPMVERCMP(1.0~rc1, 1.0~rc2, -1)
98 RPMVERCMP(1.0~rc2, 1.0~rc1, 1)
99 RPMVERCMP(1.0~rc1~git123, 1.0~rc1~git123, 0)
100 RPMVERCMP(1.0~rc1~git123, 1.0~rc1, -1)
101 RPMVERCMP(1.0~rc1, 1.0~rc1~git123, 1)
102
103 dnl These are included here to document current, arguably buggy behaviors
104 dnl for reference purposes and for easy checking against  unintended
105 dnl behavior changes.
106 dnl
107 dnl AT_BANNER([RPM version comparison oddities])
108 dnl RhBug:811992 case
109 dnl RPMVERCMP(1b.fc17, 1b.fc17, 0)
110 dnl RPMVERCMP(1b.fc17, 1.fc17, -1)
111 dnl RPMVERCMP(1.fc17, 1b.fc17, 1)
112 dnl RPMVERCMP(1g.fc17, 1g.fc17, 0)
113 dnl RPMVERCMP(1g.fc17, 1.fc17, 1)
114 dnl RPMVERCMP(1.fc17, 1g.fc17, -1)
115
116 dnl Non-ascii characters are considered equal so these are all the same, eh...
117 dnl RPMVERCMP(1.1.α, 1.1.α, 0)
118 dnl RPMVERCMP(1.1.α, 1.1.β, 0)
119 dnl RPMVERCMP(1.1.β, 1.1.α, 0)
120 dnl RPMVERCMP(1.1.αα, 1.1.α, 0)
121 dnl RPMVERCMP(1.1.α, 1.1.ββ, 0)
122 dnl RPMVERCMP(1.1.ββ, 1.1.αα, 0)