diff --git a/src/option_types.cc b/src/option_types.cc new file mode 100644 index 00000000..bd30d4f8 --- /dev/null +++ b/src/option_types.cc @@ -0,0 +1,24 @@ +#include "option_types.hh" +#include "unit_tests.hh" + +namespace Kakoune +{ + +UnitTest test_option_parsing{[]{ + auto check = [](auto&& value, StringView str) + { + auto repr = option_to_string(value); + kak_assert(repr == str); + std::decay_t parsed; + option_from_string(str, parsed); + kak_assert(parsed == value); + }; + + check(123, "123"); + check(true, "true"); + check(Vector{"foo", "bar:", "baz"}, "foo:bar\\::baz"); + check(HashMap{{"foo", 10}, {"b=r", 20}, {"b:z", 30}}, "foo=10:b\\=r=20:b\\:z=30"); + check(DebugFlags::Keys | DebugFlags::Hooks, "hooks|keys"); +}}; + +}