00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include <ept/test.h>
00020 #include <ept/apt/packagerecord.h>
00021
00022 namespace std {
00023 ostream& operator<<(ostream& out, const set<string>& s)
00024 {
00025 for (set<string>::const_iterator i = s.begin();
00026 i != s.end(); ++i)
00027 if (i == s.begin())
00028 out << *i;
00029 else
00030 out << ", " << *i;
00031 return out;
00032 }
00033 }
00034
00035 using namespace std;
00036 using namespace ept;
00037 using namespace ept::apt;
00038
00039 struct TestAptPackagerecord {
00040
00041
00042 Test supportedFields()
00043 {
00044 string record =
00045 "Package: apt\n"
00046 "Priority: important\n"
00047 "Section: admin\n"
00048 "Installed-Size: 4368\n"
00049 "Maintainer: APT Development Team <deity@lists.debian.org>\n"
00050 "Architecture: amd64\n"
00051 "Source: apt\n"
00052 "Version: 0.6.46.4-0.1\n"
00053 "Replaces: libapt-pkg-doc (<< 0.3.7), libapt-pkg-dev (<< 0.3.7)\n"
00054 "Provides: libapt-pkg-libc6.3-6-3.11\n"
00055 "Depends: libc6 (>= 2.3.5-1), libgcc1 (>= 1:4.1.1-12), libstdc++6 (>= 4.1.1-12), debian-archive-keyring\n"
00056 "Pre-Depends: debtags (maybe)\n"
00057 "Suggests: aptitude | synaptic | gnome-apt | wajig, dpkg-dev, apt-doc, bzip2\n"
00058 "Recommends: debtags (maybe)\n"
00059 "Enhances: debian\n"
00060 "Conflicts: marameo\n"
00061 "Filename: pool/main/a/apt/apt_0.6.46.4-0.1_amd64.deb\n"
00062 "Size: 1436478\n"
00063 "MD5sum: 1776421f80d6300c77a608e77a9f4a15\n"
00064 "SHA1: 1bd7337d2df56d267632cf72ac930c0a4895898f\n"
00065 "SHA256: b92442ab60046b4d0728245f39cc932f26e17db9f7933a5ec9aaa63172f51fda\n"
00066 "Description: Advanced front-end for dpkg\n"
00067 " This is Debian's next generation front-end for the dpkg package manager.\n"
00068 " It provides the apt-get utility and APT dselect method that provides a\n"
00069 " simpler, safer way to install and upgrade packages.\n"
00070 " .\n"
00071 " APT features complete installation ordering, multiple source capability\n"
00072 " and several other unique features, see the Users Guide in apt-doc.\n"
00073 "Build-Essential: yes\n"
00074 "Tag: admin::package-management, filetransfer::ftp, filetransfer::http, hardware::storage:cd, interface::commandline, network::client, protocol::{ftp,http,ipv6}, role::program, suite::debian, use::downloading, use::searching, works-with::software:package\n";
00075
00076 PackageRecord p(record);
00077
00078 assert_eq(p.size(), 24u);
00079
00080 assert_eq(p.package(), "apt");
00081 assert_eq(p.priority(), "important");
00082 assert_eq(p.section(), "admin");
00083 assert_eq(p.installedSize(), 4368u);
00084 assert_eq(p.maintainer(), "APT Development Team <deity@lists.debian.org>");
00085 assert_eq(p.architecture(), "amd64");
00086 assert_eq(p.source(), "apt");
00087 assert_eq(p.version(), "0.6.46.4-0.1");
00088 assert_eq(p.replaces(), "libapt-pkg-doc (<< 0.3.7), libapt-pkg-dev (<< 0.3.7)");
00089 assert_eq(p.provides(), "libapt-pkg-libc6.3-6-3.11");
00090 assert_eq(p.depends(), "libc6 (>= 2.3.5-1), libgcc1 (>= 1:4.1.1-12), libstdc++6 (>= 4.1.1-12), debian-archive-keyring");
00091 assert_eq(p.preDepends(), "debtags (maybe)");
00092 assert_eq(p.recommends(), "debtags (maybe)");
00093 assert_eq(p.suggests(), "aptitude | synaptic | gnome-apt | wajig, dpkg-dev, apt-doc, bzip2");
00094 assert_eq(p.enhances(), "debian");
00095 assert_eq(p.conflicts(), "marameo");
00096 assert_eq(p.filename(), "pool/main/a/apt/apt_0.6.46.4-0.1_amd64.deb");
00097 assert_eq(p.packageSize(), 1436478u);
00098 assert_eq(p.md5sum(), "1776421f80d6300c77a608e77a9f4a15");
00099 assert_eq(p.sha1(), "1bd7337d2df56d267632cf72ac930c0a4895898f");
00100 assert_eq(p.sha256(), "b92442ab60046b4d0728245f39cc932f26e17db9f7933a5ec9aaa63172f51fda");
00101 assert_eq(p.description(), "Advanced front-end for dpkg\n"
00102 " This is Debian's next generation front-end for the dpkg package manager.\n"
00103 " It provides the apt-get utility and APT dselect method that provides a\n"
00104 " simpler, safer way to install and upgrade packages.\n"
00105 " .\n"
00106 " APT features complete installation ordering, multiple source capability\n"
00107 " and several other unique features, see the Users Guide in apt-doc.");
00108 assert_eq(p.shortDescription(), "Advanced front-end for dpkg");
00109 assert_eq(p.longDescription(),
00110 "This is Debian's next generation front-end for the dpkg package manager.\n"
00111 " It provides the apt-get utility and APT dselect method that provides a\n"
00112 " simpler, safer way to install and upgrade packages.\n"
00113 " .\n"
00114 " APT features complete installation ordering, multiple source capability\n"
00115 " and several other unique features, see the Users Guide in apt-doc.");
00116 assert_eq(p.buildEssential(), true);
00117
00118 std::set<std::string> tags;
00119 tags.insert("admin::package-management");
00120 tags.insert("filetransfer::ftp");
00121 tags.insert("filetransfer::http");
00122 tags.insert("hardware::storage:cd");
00123 tags.insert("interface::commandline");
00124 tags.insert("network::client");
00125 tags.insert("protocol::ftp");
00126 tags.insert("protocol::http");
00127 tags.insert("protocol::ipv6");
00128 tags.insert("role::program");
00129 tags.insert("suite::debian");
00130 tags.insert("use::downloading");
00131 tags.insert("use::searching");
00132 tags.insert("works-with::software:package");
00133 assert_eq(p.tag(), tags);
00134 }
00135
00136 };
00137
00138