diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2018-03-20 21:03:51 +0000 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2018-03-20 21:03:51 +0000 |
commit | a27bf76eec4ec37e9c41690ea4787d0388055b05 (patch) | |
tree | fa663707617a61967b8c25ef8f2790adce7ebd32 | |
parent | Extract mask lexer for testability (diff) | |
download | gentoobrowse-api-a27bf76eec4ec37e9c41690ea4787d0388055b05.tar.bz2 gentoobrowse-api-a27bf76eec4ec37e9c41690ea4787d0388055b05.tar.xz gentoobrowse-api-a27bf76eec4ec37e9c41690ea4787d0388055b05.zip |
Add a simple unit test over the existing mask lexer
-rw-r--r-- | gentoobrowse-api/unittests/Jamfile.jam | 7 | ||||
-rw-r--r-- | gentoobrowse-api/unittests/testMasks.cpp | 52 |
2 files changed, 59 insertions, 0 deletions
diff --git a/gentoobrowse-api/unittests/Jamfile.jam b/gentoobrowse-api/unittests/Jamfile.jam index a53781e..ead573a 100644 --- a/gentoobrowse-api/unittests/Jamfile.jam +++ b/gentoobrowse-api/unittests/Jamfile.jam @@ -64,6 +64,13 @@ run <library>testCommon : testDepend ; +run + testMasks.cpp ../service/mask.cpp + : : : + <define>BOOST_TEST_DYN_LINK + <library>testCommon + : testMasks ; + explicit testDependAll ; run testDependAll.cpp ../service/utils/ebuildCacheParser.cpp ../service/depend.cpp diff --git a/gentoobrowse-api/unittests/testMasks.cpp b/gentoobrowse-api/unittests/testMasks.cpp new file mode 100644 index 0000000..8aba4ea --- /dev/null +++ b/gentoobrowse-api/unittests/testMasks.cpp @@ -0,0 +1,52 @@ +#define BOOST_TEST_MODULE Masks +#include <boost/test/unit_test.hpp> + +#include <mask.h> +#include <fileUtils.h> +#include <definedDirs.h> +#include <portage-models.h> +#include <compileTimeFormatter.h> +#include <boost/algorithm/string/join.hpp> + +class MaskTester : public Portage::Utils::Masks { + protected: + void consume() const override + { + if (email && person) { + masks.push_back(new Gentoo::Mask(n, *person, *email, date, + boost::algorithm::join(message, " "), + Gentoo::StringList(atoms.begin(), atoms.end()))); + } + } + + public: + mutable Gentoo::Masks masks; +}; + +#define BOOST_CHECK_EQUAL_COLLECTION(a, ...) { \ + auto __list__ = { __VA_ARGS__ }; \ + BOOST_CHECK_EQUAL_COLLECTIONS(a.begin(), a.end(), __list__.begin(), __list__.end()); \ +} + +BOOST_FIXTURE_TEST_SUITE(mt, MaskTester) + +BOOST_AUTO_TEST_CASE(f1) +{ + AdHoc::FileUtils::MemMap f(rootDir / "fixtures" / "4156eb45cf3b0ce1d7125b84efd8688c2d6e831d" / "profiles" / "package.mask"); + extract((const gchar *)f.data, f.getStat().st_size); + BOOST_CHECK_EQUAL(masks.size(), 151); + auto m = masks.front(); + BOOST_CHECK(m->person); + BOOST_CHECK_EQUAL("James Le Cuirot", *m->person); + BOOST_CHECK(m->email); + BOOST_CHECK_EQUAL("chewi@gentoo.org", *m->email); + BOOST_CHECK_EQUAL("25 Apr 1016", m->dateadded); + BOOST_CHECK_EQUAL("Long dead upstream and no longer needed. Removal in 30 days.", m->message); + BOOST_CHECK_EQUAL_COLLECTION(m->atomspec, + "dev-java/charva", + "dev-java/jakarta-slide-webdavclient", + "dev-java/xml-im-exporter"); +} + +BOOST_AUTO_TEST_SUITE_END() + |