commit c6118d58bf553306c723253ff474cbf5e7c39cc7
parent 5fca55c56bc1affb669f7cbd2867ce508341842b
Author: cfillion <cfillion@users.noreply.github.com>
Date: Sun, 6 Dec 2015 00:41:13 -0500
fix package updates not being remembered
Diffstat:
2 files changed, 50 insertions(+), 1 deletion(-)
diff --git a/src/registry.cpp b/src/registry.cpp
@@ -17,7 +17,7 @@ void Registry::push(Package *pkg)
void Registry::push(const std::string &key, const std::string &value)
{
- m_map.insert({key, value});
+ m_map[key] = value;
}
string Registry::versionOf(Package *pkg) const
diff --git a/test/registry.cpp b/test/registry.cpp
@@ -0,0 +1,49 @@
+#include <catch.hpp>
+
+#include <database.hpp>
+#include <package.hpp>
+#include <registry.hpp>
+
+using namespace std;
+
+static const char *M = "[registry]";
+
+#define MAKE_PACKAGE \
+ Database db; \
+ db.setName("Hello"); \
+ Category cat("Hello"); \
+ cat.setDatabase(&db); \
+ Package pkg(Package::ScriptType, "Hello"); \
+ pkg.setCategory(&cat); \
+ Version *ver = new Version("1.0"); \
+ Source *src = new Source(Source::GenericPlatform, "https://..."); \
+ ver->addSource(src); \
+ pkg.addVersion(ver);
+
+TEST_CASE("version of uninstalled", M) {
+ MAKE_PACKAGE
+
+ Registry reg;
+ REQUIRE(reg.versionOf(&pkg) == string());
+}
+
+TEST_CASE("version of installed", M) {
+ MAKE_PACKAGE
+
+ Registry reg;
+ reg.push(&pkg);
+ REQUIRE(reg.versionOf(&pkg) == "1.0");
+}
+
+TEST_CASE("bump version", M) {
+ MAKE_PACKAGE
+
+ Version *ver2 = new Version("2.0");
+ ver2->addSource(new Source(Source::GenericPlatform, "https://..."));
+
+ Registry reg;
+ reg.push(&pkg);
+ pkg.addVersion(ver2);
+ reg.push(&pkg);
+ REQUIRE(reg.versionOf(&pkg) == "2.0");
+}