1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
#include "3rd-party/catch.hpp"
#include "configdata.h"
using namespace newsboat;
TEST_CASE("set_value() doesn't return errors if new value is aligned "
"with the setting's type",
"[ConfigData]")
{
SECTION("boolean") {
ConfigData setting("yes", ConfigDataType::BOOL);
REQUIRE(setting.set_value("no"));
REQUIRE(setting.set_value("yes"));
REQUIRE(setting.set_value("true"));
REQUIRE(setting.set_value("false"));
}
SECTION("unsigned integer") {
ConfigData setting("42", ConfigDataType::INT);
REQUIRE(setting.set_value("13"));
REQUIRE(setting.set_value("100500"));
REQUIRE(setting.set_value("65535"));
}
SECTION("enum") {
ConfigData setting("charlie", {"alpha", "bravo", "charlie", "delta"});
REQUIRE(setting.set_value("alpha"));
REQUIRE(setting.set_value("bravo"));
REQUIRE(setting.set_value("charlie"));
REQUIRE(setting.set_value("delta"));
}
SECTION("string") {
ConfigData setting("johndoe", ConfigDataType::STR);
REQUIRE(setting.set_value("minoru"));
REQUIRE(setting.set_value("noname"));
REQUIRE(setting.set_value("username"));
REQUIRE(setting.set_value("nobody"));
}
SECTION("path") {
ConfigData setting("~/urls", ConfigDataType::PATH);
REQUIRE(setting.set_value("/tmp/whatever.txt"));
REQUIRE(setting.set_value("C:\\Users\\Minoru\\urls.txt"));
REQUIRE(setting.set_value("/usr/local/home/minoru/.newsboat/urls"));
}
}
TEST_CASE("set_value() returns error if new value for a boolean setting is not "
"a recognized boolean",
"[ConfigData]")
{
ConfigData setting("yes", ConfigDataType::BOOL);
REQUIRE_FALSE(setting.set_value("enable"));
REQUIRE_FALSE(setting.set_value("disabled"));
REQUIRE_FALSE(setting.set_value("active"));
}
TEST_CASE("set_value() returns error if new value for a \"number\" setting "
"is not a sequence of digits",
"[ConfigData]")
{
ConfigData setting("yes", ConfigDataType::INT);
REQUIRE_FALSE(setting.set_value("0x42"));
REQUIRE_FALSE(setting.set_value("infinity"));
REQUIRE_FALSE(setting.set_value("123 minutes"));
}
TEST_CASE("set_value() returns error if new value for an \"enum\" setting "
"does not belong to the enum",
"[ConfigData]")
{
ConfigData setting("N", {"H", "He", "Li", "Be", "B", "C", "N", "O", "F"});
REQUIRE_FALSE(setting.set_value("Mg"));
REQUIRE_FALSE(setting.set_value("Al"));
REQUIRE_FALSE(setting.set_value("something entirely different"));
}
|