config_parser: Add common boolean parser

This more accurately parses systemd values instead of just comparing to
"false" or "true".

Change-Id: I0d70ef418075d555bf6f090fefa0b34332491ed0
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/test/test_config_parser.cpp b/test/test_config_parser.cpp
index e8337af..cd2fa4f 100644
--- a/test/test_config_parser.cpp
+++ b/test/test_config_parser.cpp
@@ -25,6 +25,30 @@
 
 using testing::ElementsAre;
 
+TEST(TestConvert, iCaseEq)
+{
+    EXPECT_TRUE(icaseeq("VaL", "val"));
+    EXPECT_TRUE(icaseeq("[ab1", "[ab1"));
+}
+
+TEST(TestConvert, ParseBool)
+{
+    EXPECT_TRUE(parseBool("tRue").value());
+    EXPECT_FALSE(parseBool("tru").has_value());
+    EXPECT_TRUE(parseBool("t").value());
+    EXPECT_TRUE(parseBool("Yes").value());
+    EXPECT_FALSE(parseBool("ye").has_value());
+    EXPECT_TRUE(parseBool("y").value());
+    EXPECT_TRUE(parseBool("oN").value());
+
+    EXPECT_FALSE(parseBool("fAlse").value());
+    EXPECT_FALSE(parseBool("fal").has_value());
+    EXPECT_FALSE(parseBool("f").value());
+    EXPECT_FALSE(parseBool("No").value());
+    EXPECT_FALSE(parseBool("n").value());
+    EXPECT_FALSE(parseBool("oFf").value());
+}
+
 class TestConfigParser : public stdplus::gtest::TestWithTmp
 {
   public: