Add a few tests

This commit is contained in:
Florent Le Coz
2015-10-31 05:35:46 +01:00
parent 73fd710cfd
commit 66887c225b
5 changed files with 101 additions and 1 deletions
+29
View File
@@ -23,3 +23,32 @@ TEST_CASE("Config basic")
} }
CHECK_FALSE(error); CHECK_FALSE(error);
} }
TEST_CASE("Config callbacks")
{
bool switched = false;
Config::connect([&switched]()
{
switched = !switched;
});
CHECK_FALSE(switched);
Config::set("un", "deux", true);
CHECK(switched);
Config::set("un", "trois", true);
CHECK_FALSE(switched);
Config::set("un", "trois", false);
CHECK_FALSE(switched);
}
TEST_CASE("Config get_int")
{
auto res = Config::get_int("number", 0);
CHECK(res == 0);
Config::set("number", "88");
res = Config::get_int("number", 0);
CHECK(res == 88);
Config::set("number", "pouet");
res = Config::get_int("number", -1);
CHECK(res == 0);
}
+2
View File
@@ -26,5 +26,7 @@ TEST_CASE("Database")
CHECK(b.pass == ""); CHECK(b.pass == "");
CHECK(b.pass.value() == ""); CHECK(b.pass.value() == "");
Database::close();
#endif #endif
} }
+50
View File
@@ -0,0 +1,50 @@
#include "catch.hpp"
#include <logger/logger.hpp>
#include <config/config.hpp>
#include "io_tester.hpp"
#include <iostream>
using namespace std::string_literals;
TEST_CASE("Basic logging")
{
Logger::instance().reset();
GIVEN("A logger with log_level 0")
{
Config::set("log_level", "0");
WHEN("we log some debug text")
{
IoTester<std::ostream> out(std::cout);
log_debug("debug");
THEN("debug logs are written")
CHECK(out.str() == "<7>tests/logger.cpp:" + std::to_string(__LINE__ - 2) + ":\tdebug\n");
}
WHEN("we log some errors")
{
IoTester<std::ostream> out(std::cout);
log_error("error");
THEN("error logs are written")
CHECK(out.str() == "<3>tests/logger.cpp:" + std::to_string(__LINE__ - 2) + ":\terror\n");
}
}
GIVEN("A logger with log_level 3")
{
Config::set("log_level", "3");
WHEN("we log some debug text")
{
IoTester<std::ostream> out(std::cout);
log_debug("debug");
THEN("nothing is written")
CHECK(out.str().empty());
}
WHEN("we log some errors")
{
IoTester<std::ostream> out(std::cout);
log_error("error");
THEN("error logs are still written")
CHECK(out.str() == "<3>tests/logger.cpp:" + std::to_string(__LINE__ - 2) + ":\terror\n");
}
}
}
+18
View File
@@ -5,6 +5,7 @@
#include <utils/string.hpp> #include <utils/string.hpp>
#include <utils/split.hpp> #include <utils/split.hpp>
#include <utils/xdg.hpp> #include <utils/xdg.hpp>
#include <utils/empty_if_fixed_server.hpp>
TEST_CASE("String split") TEST_CASE("String split")
{ {
@@ -70,3 +71,20 @@ TEST_CASE("xdg_*_path")
CHECK(res == "/datadir/biboumi/bonjour.txt"); CHECK(res == "/datadir/biboumi/bonjour.txt");
} }
} }
TEST_CASE("empty if fixed irc server")
{
GIVEN("A config with fixed_irc_server")
{
Config::set("fixed_irc_server", "irc.localhost");
THEN("our string is made empty")
CHECK(utils::empty_if_fixed_server("coucou coucou") == "");
}
GIVEN("A config with NO fixed_irc_server")
{
Config::set("fixed_irc_server", "");
THEN("our string is returned untouched")
CHECK(utils::empty_if_fixed_server("coucou coucou") == "coucou coucou");
}
}
+2 -1
View File
@@ -26,6 +26,8 @@ TEST_CASE("Test basic XML parsing")
// Do the same checks on a copy of that stanza. // Do the same checks on a copy of that stanza.
Stanza copy(stanza); Stanza copy(stanza);
check_stanza(copy); check_stanza(copy);
// And do the same checks on moved-constructed stanza
Stanza moved(std::move(copy));
}); });
xml.feed(doc.data(), doc.size(), true); xml.feed(doc.data(), doc.size(), true);
@@ -44,4 +46,3 @@ TEST_CASE("XML escape/unescape")
CHECK(xml_escape(unescaped) == "&apos;coucou&apos;&lt;cc&gt;/&amp;&quot;gaga&quot;"); CHECK(xml_escape(unescaped) == "&apos;coucou&apos;&lt;cc&gt;/&amp;&quot;gaga&quot;");
CHECK(xml_unescape(xml_escape(unescaped)) == unescaped); CHECK(xml_unescape(xml_escape(unescaped)) == unescaped);
} }