From 5f63d5039bcca80241b12655c250a4238b936a74 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 7 Nov 2016 14:01:23 -0800 Subject: [PATCH] Bug fixes, self test of JSONDB disabled by default. --- controller/JSONDB.hpp | 6 ++++++ selftest.cpp | 23 +++++++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/controller/JSONDB.hpp b/controller/JSONDB.hpp index 617356553..a9a5e6acf 100644 --- a/controller/JSONDB.hpp +++ b/controller/JSONDB.hpp @@ -88,6 +88,9 @@ public: } } + inline bool operator==(const JSONDB &db) const { return ((_basePath == db._basePath)&&(_db == db._db)); } + inline bool operator!=(const JSONDB &db) const { return (!(*this == db)); } + private: void _reload(const std::string &p); bool _isValidObjectName(const std::string &n); @@ -98,6 +101,9 @@ private: nlohmann::json obj; uint64_t lastModifiedOnDisk; uint64_t lastCheck; + + inline bool operator==(const _E &e) const { return (obj == e.obj); } + inline bool operator!=(const _E &e) const { return (obj != e.obj); } }; std::string _basePath; diff --git a/selftest.cpp b/selftest.cpp index 5fcc26739..7ca4ac3b1 100644 --- a/selftest.cpp +++ b/selftest.cpp @@ -809,10 +809,11 @@ static int testOther() } std::cout << "PASS (junk value to prevent optimization-out of test: " << foo << ")" << std::endl; + /* std::cout << "[other] Testing controller/JSONDB..."; std::cout.flush(); { - JSONDB db1("jsondb-test"); std::map db1data; + JSONDB db1("jsondb-test"); for(unsigned int i=0;i<256;++i) { std::string n; for(unsigned int j=0,k=rand() % 4;j<=k;++j) { @@ -824,8 +825,26 @@ static int testOther() db1data[n] = {{"i",i}}; db1.put(n,db1data[n]); } + for(std::map::iterator i(db1data.begin());i!=db1data.end();++i) { + i->second["foo"] = "bar"; + db1.put(i->first,i->second); + } + JSONDB db2("jsondb-test"); + if (db1 != db2) { + std::cout << " FAILED (db1!=db2 #1)" << std::endl; + return -1; + } + for(std::map::iterator i(db1data.begin());i!=db1data.end();++i) { + db1.erase(i->first); + } + db2.reload(); + if (db1 != db2) { + std::cout << " FAILED (db1!=db2 #2)" << std::endl; + return -1; + } } - std::cout << "PASS" << std::endl; + std::cout << " PASS" << std::endl; + */ return 0; }