libept
|
00001 /* 00002 * Copyright (C) 2007 Enrico Zini <enrico@enricozini.org> 00003 * 00004 * This library is free software; you can redistribute it and/or 00005 * modify it under the terms of the GNU Lesser General Public 00006 * License as published by the Free Software Foundation; either 00007 * version 2.1 of the License, or (at your option) any later version. 00008 * 00009 * This library is distributed in the hope that it will be useful, 00010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 * Lesser General Public License for more details. 00013 * 00014 * You should have received a copy of the GNU Lesser General Public 00015 * License along with this library; if not, write to the Free Software 00016 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00017 */ 00018 00019 #include <ept/test.h> 00020 #include <ept/apt/version.h> 00021 00022 using namespace std; 00023 using namespace ept::apt; 00024 00025 struct TestAptVersion { 00026 00027 // Basic test for invalid version 00028 Test invalid() 00029 { 00030 Version test; 00031 00032 assert_eq(test.name(), ""); 00033 assert_eq(test.version(), ""); 00034 assert_eq(test.isValid(), false); 00035 00036 string p = test.name(); 00037 00038 assert_eq(p, string()); 00039 } 00040 00041 // Basic test for version 00042 Test basic() 00043 { 00044 Version test("test", "1.0"); 00045 00046 assert_eq(test.name(), "test"); 00047 assert_eq(test.version(), "1.0"); 00048 assert_eq(test.isValid(), true); 00049 00050 string p = test.name(); 00051 00052 assert_eq(p, "test"); 00053 00054 Version v(p, "1.1"); 00055 assert_eq(v.name(), "test"); 00056 assert_eq(v.version(), "1.1"); 00057 assert_eq(v.isValid(), true); 00058 } 00059 00060 // Comparison semanthics 00061 Test comparison() 00062 { 00063 Version test("test", "1.0"); 00064 Version test1("test", "1.0"); 00065 00066 assert(test == test1); 00067 assert(! (test != test1)); 00068 assert(! (test < test1)); 00069 assert(! (test > test1)); 00070 assert(test <= test1); 00071 assert(test >= test1); 00072 00073 00074 Version test2("test2", "1.0"); 00075 00076 assert(test != test2); 00077 assert(test != test2); 00078 assert(test < test2); 00079 assert(! (test > test2)); 00080 assert(test <= test2); 00081 assert(! (test >= test2)); 00082 00083 00084 Version test3("test", "2.0"); 00085 00086 assert(test != test3); 00087 assert(test != test3); 00088 assert(test < test3); 00089 assert(! (test > test3)); 00090 assert(test <= test3); 00091 assert(! (test >= test3)); 00092 } 00093 00094 // Value-copy semanthics 00095 Test valueCopy() 00096 { 00097 Version test("test", "1.0"); 00098 Version test1 = test; 00099 00100 assert(test == test1); 00101 00102 Version test2; 00103 test2 = test; 00104 assert(test == test2); 00105 assert(test1 == test2); 00106 00107 Version test3("test", "1.0"); 00108 assert(test == test3); 00109 assert(test1 == test3); 00110 assert(test2 == test3); 00111 } 00112 00113 // Extraction of upstream version 00114 Test upstreamVersion() 00115 { 00116 assert_eq(Version("a", "10.0").upstreamVersion(), "10.0"); 00117 assert_eq(Version("a", "10.0-1").upstreamVersion(), "10.0"); 00118 assert_eq(Version("a", "10.0~foo.1-1.0").upstreamVersion(), "10.0~foo.1"); 00119 assert_eq(Version("a", "1.0:10.0~foo.1-1.0").upstreamVersion(), "10.0~foo.1"); 00120 } 00121 00122 // Debian policy comparison semanthics 00123 Test policyComparison() 00124 { 00125 assert(Version("a", "10.0") > Version("a", "2.1")); 00126 assert(Version("a", "1:10.0") < Version("a", "2:2.1")); 00127 assert(Version("a", "10.0-1") < Version("a", "10.0-2")); 00128 assert(Version("a", "10.0-2") > Version("a", "10.0-1")); 00129 assert(Version("a", "1:10.0-1") <= Version("a", "1:10.0-1")); 00130 assert(Version("a", "1:10.0-1") >= Version("a", "1:10.0-1")); 00131 // TODO: add more 00132 } 00133 00134 }; 00135 00136 // vim:set ts=4 sw=4: