shill: allow property accessors to return an error message if a
property's value cannot be changed.
also, reduce some code duplication in property_store.cc
BUG=chromium-os:21384
TEST=unittests
Change-Id: Iaac8d40bbb9e9a1341d6c6d01642885d88ac0e27
Reviewed-on: http://gerrit.chromium.org/gerrit/8925
Reviewed-by: mukesh agrawal <quiche@chromium.org>
Tested-by: mukesh agrawal <quiche@chromium.org>
diff --git a/property_accessor_unittest.cc b/property_accessor_unittest.cc
index 7e9a150..4303d13 100644
--- a/property_accessor_unittest.cc
+++ b/property_accessor_unittest.cc
@@ -13,6 +13,8 @@
#include <gtest/gtest.h>
#include <gmock/gmock.h>
+#include "shill/error.h"
+
using std::map;
using std::string;
using std::vector;
@@ -24,22 +26,27 @@
TEST(PropertyAccessorTest, SignedIntCorrectness) {
int32 int_store = 0;
{
+ Error error;
Int32Accessor accessor(new PropertyAccessor<int32>(&int_store));
EXPECT_EQ(int_store, accessor->Get());
int32 expected_int32 = 127;
- ASSERT_TRUE(accessor->Set(expected_int32));
+ accessor->Set(expected_int32, &error);
+ ASSERT_TRUE(error.IsSuccess());
EXPECT_EQ(expected_int32, accessor->Get());
int_store = std::numeric_limits<int32>::max();
EXPECT_EQ(std::numeric_limits<int32>::max(), accessor->Get());
}
{
+ Error error;
Int32Accessor accessor(new ConstPropertyAccessor<int32>(&int_store));
EXPECT_EQ(int_store, accessor->Get());
int32 expected_int32 = 127;
- ASSERT_FALSE(accessor->Set(expected_int32));
+ accessor->Set(expected_int32, &error);
+ ASSERT_FALSE(error.IsSuccess());
+ EXPECT_EQ(Error::kInvalidArguments, error.type());
EXPECT_EQ(int_store, accessor->Get());
int_store = std::numeric_limits<int32>::max();
@@ -50,22 +57,27 @@
TEST(PropertyAccessorTest, UnsignedIntCorrectness) {
uint32 int_store = 0;
{
+ Error error;
Uint32Accessor accessor(new PropertyAccessor<uint32>(&int_store));
EXPECT_EQ(int_store, accessor->Get());
uint32 expected_uint32 = 127;
- ASSERT_TRUE(accessor->Set(expected_uint32));
+ accessor->Set(expected_uint32, &error);
+ ASSERT_TRUE(error.IsSuccess());
EXPECT_EQ(expected_uint32, accessor->Get());
int_store = std::numeric_limits<uint32>::max();
EXPECT_EQ(std::numeric_limits<uint32>::max(), accessor->Get());
}
{
+ Error error;
Uint32Accessor accessor(new ConstPropertyAccessor<uint32>(&int_store));
EXPECT_EQ(int_store, accessor->Get());
uint32 expected_uint32 = 127;
- ASSERT_FALSE(accessor->Set(expected_uint32));
+ accessor->Set(expected_uint32, &error);
+ ASSERT_FALSE(error.IsSuccess());
+ EXPECT_EQ(Error::kInvalidArguments, error.type());
EXPECT_EQ(int_store, accessor->Get());
int_store = std::numeric_limits<uint32>::max();
@@ -76,22 +88,27 @@
TEST(PropertyAccessorTest, StringCorrectness) {
string storage;
{
+ Error error;
StringAccessor accessor(new PropertyAccessor<string>(&storage));
EXPECT_EQ(storage, accessor->Get());
string expected_string("what");
- ASSERT_TRUE(accessor->Set(expected_string));
+ accessor->Set(expected_string, &error);
+ ASSERT_TRUE(error.IsSuccess());
EXPECT_EQ(expected_string, accessor->Get());
storage = "nooooo";
EXPECT_EQ(storage, accessor->Get());
}
{
+ Error error;
StringAccessor accessor(new ConstPropertyAccessor<string>(&storage));
EXPECT_EQ(storage, accessor->Get());
string expected_string("what");
- ASSERT_FALSE(accessor->Set(expected_string));
+ accessor->Set(expected_string, &error);
+ ASSERT_FALSE(error.IsSuccess());
+ EXPECT_EQ(Error::kInvalidArguments, error.type());
EXPECT_EQ(storage, accessor->Get());
storage = "nooooo";