1 : /*
2 : * Copyright (C) 2007 Enrico Zini <enrico@enricozini.org>
3 : *
4 : * This library is free software; you can redistribute it and/or
5 : * modify it under the terms of the GNU Lesser General Public
6 : * License as published by the Free Software Foundation; either
7 : * version 2.1 of the License, or (at your option) any later version.
8 : *
9 : * This library 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 GNU
12 : * Lesser General Public License for more details.
13 : *
14 : * You should have received a copy of the GNU Lesser General Public
15 : * License along with this library; if not, write to the Free Software
16 : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 : */
18 :
19 : #include <ept/test.h>
20 : #include <ept/apt/version.h>
21 :
22 : using namespace std;
23 : using namespace ept::apt;
24 :
25 : struct TestAptVersion {
26 :
27 : // Basic test for invalid version
28 1 : Test invalid()
29 : {
30 1 : Version test;
31 :
32 1 : assert_eq(test.name(), "");
33 1 : assert_eq(test.version(), "");
34 1 : assert_eq(test.isValid(), false);
35 :
36 1 : string p = test.name();
37 :
38 1 : assert_eq(p, string());
39 1 : }
40 :
41 : // Basic test for version
42 1 : Test basic()
43 : {
44 1 : Version test("test", "1.0");
45 :
46 2 : assert_eq(test.name(), "test");
47 1 : assert_eq(test.version(), "1.0");
48 1 : assert_eq(test.isValid(), true);
49 :
50 1 : string p = test.name();
51 :
52 1 : assert_eq(p, "test");
53 :
54 1 : Version v(p, "1.1");
55 2 : assert_eq(v.name(), "test");
56 1 : assert_eq(v.version(), "1.1");
57 1 : assert_eq(v.isValid(), true);
58 1 : }
59 :
60 : // Comparison semanthics
61 1 : Test comparison()
62 : {
63 1 : Version test("test", "1.0");
64 2 : Version test1("test", "1.0");
65 :
66 2 : assert(test == test1);
67 2 : assert(! (test != test1));
68 2 : assert(! (test < test1));
69 2 : assert(! (test > test1));
70 2 : assert(test <= test1);
71 2 : assert(test >= test1);
72 :
73 :
74 2 : Version test2("test2", "1.0");
75 :
76 2 : assert(test != test2);
77 2 : assert(test != test2);
78 2 : assert(test < test2);
79 2 : assert(! (test > test2));
80 2 : assert(test <= test2);
81 2 : assert(! (test >= test2));
82 :
83 :
84 2 : Version test3("test", "2.0");
85 :
86 2 : assert(test != test3);
87 2 : assert(test != test3);
88 2 : assert(test < test3);
89 2 : assert(! (test > test3));
90 2 : assert(test <= test3);
91 2 : assert(! (test >= test3));
92 1 : }
93 :
94 : // Value-copy semanthics
95 1 : Test valueCopy()
96 : {
97 1 : Version test("test", "1.0");
98 1 : Version test1 = test;
99 :
100 1 : assert(test == test1);
101 :
102 1 : Version test2;
103 1 : test2 = test;
104 1 : assert(test == test2);
105 2 : assert(test1 == test2);
106 :
107 2 : Version test3("test", "1.0");
108 2 : assert(test == test3);
109 2 : assert(test1 == test3);
110 2 : assert(test2 == test3);
111 1 : }
112 :
113 : // Extraction of upstream version
114 1 : Test upstreamVersion()
115 : {
116 1 : assert_eq(Version("a", "10.0").upstreamVersion(), "10.0");
117 2 : assert_eq(Version("a", "10.0-1").upstreamVersion(), "10.0");
118 2 : assert_eq(Version("a", "10.0~foo.1-1.0").upstreamVersion(), "10.0~foo.1");
119 2 : assert_eq(Version("a", "1.0:10.0~foo.1-1.0").upstreamVersion(), "10.0~foo.1");
120 1 : }
121 :
122 : // Debian policy comparison semanthics
123 1 : Test policyComparison()
124 : {
125 1 : assert(Version("a", "10.0") > Version("a", "2.1"));
126 2 : assert(Version("a", "1:10.0") < Version("a", "2:2.1"));
127 2 : assert(Version("a", "10.0-1") < Version("a", "10.0-2"));
128 2 : assert(Version("a", "10.0-2") > Version("a", "10.0-1"));
129 2 : assert(Version("a", "1:10.0-1") <= Version("a", "1:10.0-1"));
130 2 : assert(Version("a", "1:10.0-1") >= Version("a", "1:10.0-1"));
131 : // TODO: add more
132 1 : }
133 :
134 : };
135 :
136 : // vim:set ts=4 sw=4:
|