libept
version.test.h
Go to the documentation of this file.
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: