reapack

Package manager for REAPER
Log | Files | Refs | Submodules | README | LICENSE

commit 5af2b4e04c261bdcbb2b3073f601ac1c9c93c421
parent 43b1524218588d7ad4c1501e471e4b3e66d87165
Author: cfillion <cfillion@users.noreply.github.com>
Date:   Tue, 12 Sep 2017 16:01:14 -0400

add tests for Receipt

Diffstat:
Msrc/receipt.cpp | 2+-
Msrc/receipt.hpp | 1-
Atest/receipt.cpp | 76++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 77 insertions(+), 2 deletions(-)

diff --git a/src/receipt.cpp b/src/receipt.cpp @@ -22,7 +22,7 @@ using namespace std; Receipt::Receipt() - : m_enabled(false), m_needRestart(false) + : m_needRestart(false) { } diff --git a/src/receipt.hpp b/src/receipt.hpp @@ -61,7 +61,6 @@ public: bool hasErrors() const { return !m_errors.empty(); } private: - bool m_enabled; bool m_needRestart; std::vector<InstallTicket> m_installs; diff --git a/test/receipt.cpp b/test/receipt.cpp @@ -0,0 +1,76 @@ +#include "helper.hpp" + +#include <receipt.hpp> + +#include <index.hpp> + +using namespace std; + +static constexpr const char *M = "[receipt]"; + +#define MAKE_VERSION \ + IndexPtr ri = make_shared<Index>("Index Name"); \ + Category cat("Category Name", ri.get()); \ + Package pkg(Package::ScriptType, "Package Name", &cat); \ + Version ver("1.0", &pkg); + +TEST_CASE("set isRestartNeeded", M) { + Receipt r; + REQUIRE_FALSE(r.isRestartNeeded()); + r.setRestartNeeded(true); + REQUIRE(r.isRestartNeeded()); +} + +TEST_CASE("non-empty receipt", M) { + MAKE_VERSION; + + Receipt r; + REQUIRE(r.empty()); + + SECTION("install") + r.addInstall({&ver, {}}); + + SECTION("removal") + r.addRemoval(Path("hello/world")); + + SECTION("export") + r.addExport(Path("hello/world")); + + SECTION("error") + r.addError({"message", "context"}); + + REQUIRE_FALSE(r.empty()); +} + +TEST_CASE("install scratch or downgrade", M) { + MAKE_VERSION; + Receipt r; + + REQUIRE(r.installs().empty()); + + SECTION("install from stratch") + r.addInstall({&ver, {}}); + + SECTION("downgrade") { + Registry::Entry entry{1}; + entry.version = VersionName("2.0"); + r.addInstall({&ver, entry}); + } + + REQUIRE(r.installs().size() == 1); + REQUIRE(r.updates().empty()); +} + +TEST_CASE("detect update tickets", M) { + MAKE_VERSION; + + Receipt r; + REQUIRE(r.updates().empty()); + + Registry::Entry entry{1}; + entry.version = VersionName("0.9"); + r.addInstall({&ver, entry}); + + REQUIRE(r.updates().size() == 1); + REQUIRE(r.installs().empty()); +}