shill: key_value_store: Implement "Remove"

BUG=chromium-os:28303
TEST=New unit tests

Change-Id: I62836142eed1fd69ec71039c5556fe8f31d16b59
Reviewed-on: https://gerrit.chromium.org/gerrit/19068
Commit-Ready: Paul Stewart <pstew@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/key_value_store_unittest.cc b/key_value_store_unittest.cc
index 03964da..33123d2 100644
--- a/key_value_store_unittest.cc
+++ b/key_value_store_unittest.cc
@@ -24,4 +24,15 @@
   EXPECT_EQ("zoo", store_.LookupString("foo", "bar"));
 }
 
+TEST_F(KeyValueStoreTest, RemoveString) {
+  const std::string kKey("foo");
+  store_.SetString(kKey, "zoo");
+  EXPECT_EQ("zoo", store_.LookupString(kKey, "bar"));
+  store_.RemoveString(kKey);
+  EXPECT_EQ("bar", store_.LookupString(kKey, "bar"));
+  // Make sure we don't get an exception/infinite loop if we do a
+  // "RemoveString()" when the key does not exist.
+  store_.RemoveString(kKey);
+}
+
 }  // namespace shill