libept
version.test.h
Go to the documentation of this file.
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 
26 
27  // Basic test for invalid version
28  Test invalid()
29  {
30  Version test;
31 
32  assert_eq(test.name(), "");
33  assert_eq(test.version(), "");
34  assert_eq(test.isValid(), false);
35 
36  string p = test.name();
37 
38  assert_eq(p, string());
39  }
40 
41  // Basic test for version
42  Test basic()
43  {
44  Version test("test", "1.0");
45 
46  assert_eq(test.name(), "test");
47  assert_eq(test.version(), "1.0");
48  assert_eq(test.isValid(), true);
49 
50  string p = test.name();
51 
52  assert_eq(p, "test");
53 
54  Version v(p, "1.1");
55  assert_eq(v.name(), "test");
56  assert_eq(v.version(), "1.1");
57  assert_eq(v.isValid(), true);
58  }
59 
60  // Comparison semanthics
61  Test comparison()
62  {
63  Version test("test", "1.0");
64  Version test1("test", "1.0");
65 
66  assert(test == test1);
67  assert(! (test != test1));
68  assert(! (test < test1));
69  assert(! (test > test1));
70  assert(test <= test1);
71  assert(test >= test1);
72 
73 
74  Version test2("test2", "1.0");
75 
76  assert(test != test2);
77  assert(test != test2);
78  assert(test < test2);
79  assert(! (test > test2));
80  assert(test <= test2);
81  assert(! (test >= test2));
82 
83 
84  Version test3("test", "2.0");
85 
86  assert(test != test3);
87  assert(test != test3);
88  assert(test < test3);
89  assert(! (test > test3));
90  assert(test <= test3);
91  assert(! (test >= test3));
92  }
93 
94  // Value-copy semanthics
95  Test valueCopy()
96  {
97  Version test("test", "1.0");
98  Version test1 = test;
99 
100  assert(test == test1);
101 
102  Version test2;
103  test2 = test;
104  assert(test == test2);
105  assert(test1 == test2);
106 
107  Version test3("test", "1.0");
108  assert(test == test3);
109  assert(test1 == test3);
110  assert(test2 == test3);
111  }
112 
113  // Extraction of upstream version
114  Test upstreamVersion()
115  {
116  assert_eq(Version("a", "10.0").upstreamVersion(), "10.0");
117  assert_eq(Version("a", "10.0-1").upstreamVersion(), "10.0");
118  assert_eq(Version("a", "10.0~foo.1-1.0").upstreamVersion(), "10.0~foo.1");
119  assert_eq(Version("a", "1.0:10.0~foo.1-1.0").upstreamVersion(), "10.0~foo.1");
120  }
121 
122  // Debian policy comparison semanthics
123  Test policyComparison()
124  {
125  assert(Version("a", "10.0") > Version("a", "2.1"));
126  assert(Version("a", "1:10.0") < Version("a", "2:2.1"));
127  assert(Version("a", "10.0-1") < Version("a", "10.0-2"));
128  assert(Version("a", "10.0-2") > Version("a", "10.0-1"));
129  assert(Version("a", "1:10.0-1") <= Version("a", "1:10.0-1"));
130  assert(Version("a", "1:10.0-1") >= Version("a", "1:10.0-1"));
131  // TODO: add more
132  }
133 
134 };
135 
136 // vim:set ts=4 sw=4: