1*aed3e508SAndroid Build Coastguard Worker // Copyright 2011 The ChromiumOS Authors
2*aed3e508SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*aed3e508SAndroid Build Coastguard Worker // found in the LICENSE file.
4*aed3e508SAndroid Build Coastguard Worker
5*aed3e508SAndroid Build Coastguard Worker #include <string>
6*aed3e508SAndroid Build Coastguard Worker
7*aed3e508SAndroid Build Coastguard Worker #include <gtest/gtest.h>
8*aed3e508SAndroid Build Coastguard Worker
9*aed3e508SAndroid Build Coastguard Worker #include "include/activity_log.h"
10*aed3e508SAndroid Build Coastguard Worker #include "include/prop_registry.h"
11*aed3e508SAndroid Build Coastguard Worker
12*aed3e508SAndroid Build Coastguard Worker using std::string;
13*aed3e508SAndroid Build Coastguard Worker
14*aed3e508SAndroid Build Coastguard Worker // Mock struct GesturesProp implementation (outside of namespace gestures)
15*aed3e508SAndroid Build Coastguard Worker struct GesturesProp { };
16*aed3e508SAndroid Build Coastguard Worker
17*aed3e508SAndroid Build Coastguard Worker namespace gestures {
18*aed3e508SAndroid Build Coastguard Worker
19*aed3e508SAndroid Build Coastguard Worker class PropRegistryTest : public ::testing::Test {};
20*aed3e508SAndroid Build Coastguard Worker
21*aed3e508SAndroid Build Coastguard Worker class PropRegistryTestDelegate : public PropertyDelegate {
22*aed3e508SAndroid Build Coastguard Worker public:
PropRegistryTestDelegate()23*aed3e508SAndroid Build Coastguard Worker PropRegistryTestDelegate() : call_cnt_(0) {}
BoolWasWritten(BoolProperty * prop)24*aed3e508SAndroid Build Coastguard Worker virtual void BoolWasWritten(BoolProperty* prop) { call_cnt_++; };
BoolArrayWasWritten(BoolArrayProperty * prop)25*aed3e508SAndroid Build Coastguard Worker virtual void BoolArrayWasWritten(BoolArrayProperty* prop) { call_cnt_++; };
DoubleWasWritten(DoubleProperty * prop)26*aed3e508SAndroid Build Coastguard Worker virtual void DoubleWasWritten(DoubleProperty* prop) { call_cnt_++; };
DoubleArrayWasWritten(DoubleArrayProperty * prop)27*aed3e508SAndroid Build Coastguard Worker virtual void DoubleArrayWasWritten(DoubleArrayProperty* prop) {
28*aed3e508SAndroid Build Coastguard Worker call_cnt_++;
29*aed3e508SAndroid Build Coastguard Worker };
IntWasWritten(IntProperty * prop)30*aed3e508SAndroid Build Coastguard Worker virtual void IntWasWritten(IntProperty* prop) { call_cnt_++; };
IntArrayWasWritten(IntArrayProperty * prop)31*aed3e508SAndroid Build Coastguard Worker virtual void IntArrayWasWritten(IntArrayProperty* prop) { call_cnt_++; };
StringWasWritten(StringProperty * prop)32*aed3e508SAndroid Build Coastguard Worker virtual void StringWasWritten(StringProperty* prop) { call_cnt_++; };
33*aed3e508SAndroid Build Coastguard Worker
34*aed3e508SAndroid Build Coastguard Worker int call_cnt_;
35*aed3e508SAndroid Build Coastguard Worker };
36*aed3e508SAndroid Build Coastguard Worker
37*aed3e508SAndroid Build Coastguard Worker namespace {
ValueForProperty(const Property & prop)38*aed3e508SAndroid Build Coastguard Worker string ValueForProperty(const Property& prop) {
39*aed3e508SAndroid Build Coastguard Worker Json::Value temp(Json::objectValue);
40*aed3e508SAndroid Build Coastguard Worker temp["tempkey"] = prop.NewValue();
41*aed3e508SAndroid Build Coastguard Worker return temp.toStyledString();
42*aed3e508SAndroid Build Coastguard Worker }
43*aed3e508SAndroid Build Coastguard Worker
44*aed3e508SAndroid Build Coastguard Worker } // namespace {}
45*aed3e508SAndroid Build Coastguard Worker
TEST(PropRegistryTest,SimpleTest)46*aed3e508SAndroid Build Coastguard Worker TEST(PropRegistryTest, SimpleTest) {
47*aed3e508SAndroid Build Coastguard Worker PropRegistry reg;
48*aed3e508SAndroid Build Coastguard Worker PropRegistryTestDelegate delegate;
49*aed3e508SAndroid Build Coastguard Worker
50*aed3e508SAndroid Build Coastguard Worker int expected_call_cnt = 0;
51*aed3e508SAndroid Build Coastguard Worker BoolProperty bp1(®, "hi", false);
52*aed3e508SAndroid Build Coastguard Worker bp1.SetDelegate(&delegate);
53*aed3e508SAndroid Build Coastguard Worker EXPECT_TRUE(strstr(ValueForProperty(bp1).c_str(), "false"));
54*aed3e508SAndroid Build Coastguard Worker bp1.HandleGesturesPropWritten();
55*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(++expected_call_cnt, delegate.call_cnt_);
56*aed3e508SAndroid Build Coastguard Worker
57*aed3e508SAndroid Build Coastguard Worker BoolProperty bp2(®, "hi", true);
58*aed3e508SAndroid Build Coastguard Worker EXPECT_TRUE(strstr(ValueForProperty(bp2).c_str(), "true"));
59*aed3e508SAndroid Build Coastguard Worker bp2.HandleGesturesPropWritten();
60*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(expected_call_cnt, delegate.call_cnt_);
61*aed3e508SAndroid Build Coastguard Worker
62*aed3e508SAndroid Build Coastguard Worker DoubleProperty dp1(®, "hi", 2721.0);
63*aed3e508SAndroid Build Coastguard Worker dp1.SetDelegate(&delegate);
64*aed3e508SAndroid Build Coastguard Worker EXPECT_TRUE(strstr(ValueForProperty(dp1).c_str(), "2721"));
65*aed3e508SAndroid Build Coastguard Worker dp1.HandleGesturesPropWritten();
66*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(++expected_call_cnt, delegate.call_cnt_);
67*aed3e508SAndroid Build Coastguard Worker
68*aed3e508SAndroid Build Coastguard Worker DoubleProperty dp2(®, "hi", 3.1);
69*aed3e508SAndroid Build Coastguard Worker EXPECT_TRUE(strstr(ValueForProperty(dp2).c_str(), "3.1"));
70*aed3e508SAndroid Build Coastguard Worker dp2.HandleGesturesPropWritten();
71*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(expected_call_cnt, delegate.call_cnt_);
72*aed3e508SAndroid Build Coastguard Worker
73*aed3e508SAndroid Build Coastguard Worker IntProperty ip1(®, "hi", 567);
74*aed3e508SAndroid Build Coastguard Worker ip1.SetDelegate(&delegate);
75*aed3e508SAndroid Build Coastguard Worker EXPECT_TRUE(strstr(ValueForProperty(ip1).c_str(), "567"));
76*aed3e508SAndroid Build Coastguard Worker ip1.HandleGesturesPropWritten();
77*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(++expected_call_cnt, delegate.call_cnt_);
78*aed3e508SAndroid Build Coastguard Worker
79*aed3e508SAndroid Build Coastguard Worker IntProperty ip2(®, "hi", 568);
80*aed3e508SAndroid Build Coastguard Worker EXPECT_TRUE(strstr(ValueForProperty(ip2).c_str(), "568"));
81*aed3e508SAndroid Build Coastguard Worker ip2.HandleGesturesPropWritten();
82*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(expected_call_cnt, delegate.call_cnt_);
83*aed3e508SAndroid Build Coastguard Worker
84*aed3e508SAndroid Build Coastguard Worker StringProperty stp1(®, "hi", "foo");
85*aed3e508SAndroid Build Coastguard Worker stp1.SetDelegate(&delegate);
86*aed3e508SAndroid Build Coastguard Worker EXPECT_TRUE(strstr(ValueForProperty(stp1).c_str(), "foo"));
87*aed3e508SAndroid Build Coastguard Worker stp1.HandleGesturesPropWritten();
88*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(++expected_call_cnt, delegate.call_cnt_);
89*aed3e508SAndroid Build Coastguard Worker
90*aed3e508SAndroid Build Coastguard Worker StringProperty stp2(®, "hi", "bar");
91*aed3e508SAndroid Build Coastguard Worker EXPECT_TRUE(strstr(ValueForProperty(stp2).c_str(), "bar"));
92*aed3e508SAndroid Build Coastguard Worker stp2.HandleGesturesPropWritten();
93*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(expected_call_cnt, delegate.call_cnt_);
94*aed3e508SAndroid Build Coastguard Worker
95*aed3e508SAndroid Build Coastguard Worker
96*aed3e508SAndroid Build Coastguard Worker Json::Value my_bool_val = bp1.NewValue();
97*aed3e508SAndroid Build Coastguard Worker Json::Value my_int_val = ip1.NewValue();
98*aed3e508SAndroid Build Coastguard Worker Json::Value my_double_val = dp1.NewValue();
99*aed3e508SAndroid Build Coastguard Worker Json::Value my_str_val = stp1.NewValue();
100*aed3e508SAndroid Build Coastguard Worker EXPECT_TRUE(bp1.SetValue(my_bool_val));
101*aed3e508SAndroid Build Coastguard Worker EXPECT_FALSE(bp1.SetValue(my_int_val));
102*aed3e508SAndroid Build Coastguard Worker EXPECT_FALSE(bp1.SetValue(my_double_val));
103*aed3e508SAndroid Build Coastguard Worker EXPECT_FALSE(bp1.SetValue(my_str_val));
104*aed3e508SAndroid Build Coastguard Worker
105*aed3e508SAndroid Build Coastguard Worker EXPECT_FALSE(ip1.SetValue(my_bool_val));
106*aed3e508SAndroid Build Coastguard Worker EXPECT_TRUE(ip1.SetValue(my_int_val));
107*aed3e508SAndroid Build Coastguard Worker EXPECT_FALSE(ip1.SetValue(my_double_val));
108*aed3e508SAndroid Build Coastguard Worker EXPECT_FALSE(ip1.SetValue(my_str_val));
109*aed3e508SAndroid Build Coastguard Worker
110*aed3e508SAndroid Build Coastguard Worker EXPECT_FALSE(dp1.SetValue(my_bool_val));
111*aed3e508SAndroid Build Coastguard Worker EXPECT_TRUE(dp1.SetValue(my_int_val));
112*aed3e508SAndroid Build Coastguard Worker EXPECT_TRUE(dp1.SetValue(my_double_val));
113*aed3e508SAndroid Build Coastguard Worker EXPECT_FALSE(dp1.SetValue(my_str_val));
114*aed3e508SAndroid Build Coastguard Worker
115*aed3e508SAndroid Build Coastguard Worker EXPECT_FALSE(stp1.SetValue(my_bool_val));
116*aed3e508SAndroid Build Coastguard Worker EXPECT_FALSE(stp1.SetValue(my_int_val));
117*aed3e508SAndroid Build Coastguard Worker EXPECT_FALSE(stp1.SetValue(my_double_val));
118*aed3e508SAndroid Build Coastguard Worker EXPECT_TRUE(stp1.SetValue(my_str_val));
119*aed3e508SAndroid Build Coastguard Worker
120*aed3e508SAndroid Build Coastguard Worker // This code does not do anything but the code coverage
121*aed3e508SAndroid Build Coastguard Worker // hits for not covered areas due to not running the
122*aed3e508SAndroid Build Coastguard Worker // unused default virtual functions.
123*aed3e508SAndroid Build Coastguard Worker PropertyDelegate pd;
124*aed3e508SAndroid Build Coastguard Worker
125*aed3e508SAndroid Build Coastguard Worker pd.BoolWasWritten(&bp1);
126*aed3e508SAndroid Build Coastguard Worker pd.DoubleWasWritten(&dp1);
127*aed3e508SAndroid Build Coastguard Worker pd.IntWasWritten(&ip1);
128*aed3e508SAndroid Build Coastguard Worker pd.StringWasWritten(&stp1);
129*aed3e508SAndroid Build Coastguard Worker }
130*aed3e508SAndroid Build Coastguard Worker
TEST(PropRegistryTest,PropChangeTest)131*aed3e508SAndroid Build Coastguard Worker TEST(PropRegistryTest, PropChangeTest) {
132*aed3e508SAndroid Build Coastguard Worker PropRegistry reg;
133*aed3e508SAndroid Build Coastguard Worker ActivityLog log(®);
134*aed3e508SAndroid Build Coastguard Worker reg.set_activity_log(&log);
135*aed3e508SAndroid Build Coastguard Worker
136*aed3e508SAndroid Build Coastguard Worker DoubleProperty dp(®, "hi", 1234.0);
137*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(0, log.size());
138*aed3e508SAndroid Build Coastguard Worker dp.HandleGesturesPropWritten();
139*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(1, log.size());
140*aed3e508SAndroid Build Coastguard Worker
141*aed3e508SAndroid Build Coastguard Worker BoolProperty bp(®, "there", true);
142*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(1, log.size());
143*aed3e508SAndroid Build Coastguard Worker bp.HandleGesturesPropWritten();
144*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(2, log.size());
145*aed3e508SAndroid Build Coastguard Worker }
146*aed3e508SAndroid Build Coastguard Worker
147*aed3e508SAndroid Build Coastguard Worker // Mock GesturesPropProvider
MockGesturesPropCreateBool(void * data,const char * name,GesturesPropBool * loc,size_t count,const GesturesPropBool * init)148*aed3e508SAndroid Build Coastguard Worker GesturesProp* MockGesturesPropCreateBool(void* data, const char* name,
149*aed3e508SAndroid Build Coastguard Worker GesturesPropBool* loc,
150*aed3e508SAndroid Build Coastguard Worker size_t count,
151*aed3e508SAndroid Build Coastguard Worker const GesturesPropBool* init) {
152*aed3e508SAndroid Build Coastguard Worker GesturesProp *dummy = new GesturesProp();
153*aed3e508SAndroid Build Coastguard Worker *loc = true;
154*aed3e508SAndroid Build Coastguard Worker return dummy;
155*aed3e508SAndroid Build Coastguard Worker }
156*aed3e508SAndroid Build Coastguard Worker
MockGesturesPropCreateInt(void * data,const char * name,int * loc,size_t count,const int * init)157*aed3e508SAndroid Build Coastguard Worker GesturesProp* MockGesturesPropCreateInt(void* data, const char* name,
158*aed3e508SAndroid Build Coastguard Worker int* loc, size_t count,
159*aed3e508SAndroid Build Coastguard Worker const int* init) {
160*aed3e508SAndroid Build Coastguard Worker GesturesProp *dummy = new GesturesProp();
161*aed3e508SAndroid Build Coastguard Worker *loc = 1;
162*aed3e508SAndroid Build Coastguard Worker return dummy;
163*aed3e508SAndroid Build Coastguard Worker }
164*aed3e508SAndroid Build Coastguard Worker
MockGesturesPropCreateReal(void * data,const char * name,double * loc,size_t count,const double * init)165*aed3e508SAndroid Build Coastguard Worker GesturesProp* MockGesturesPropCreateReal(void* data, const char* name,
166*aed3e508SAndroid Build Coastguard Worker double* loc, size_t count,
167*aed3e508SAndroid Build Coastguard Worker const double* init) {
168*aed3e508SAndroid Build Coastguard Worker GesturesProp *dummy = new GesturesProp();
169*aed3e508SAndroid Build Coastguard Worker *loc = 1.0;
170*aed3e508SAndroid Build Coastguard Worker return dummy;
171*aed3e508SAndroid Build Coastguard Worker }
172*aed3e508SAndroid Build Coastguard Worker
MockGesturesPropCreateString(void * data,const char * name,const char ** loc,const char * const init)173*aed3e508SAndroid Build Coastguard Worker GesturesProp* MockGesturesPropCreateString(void* data, const char* name,
174*aed3e508SAndroid Build Coastguard Worker const char** loc,
175*aed3e508SAndroid Build Coastguard Worker const char* const init) {
176*aed3e508SAndroid Build Coastguard Worker GesturesProp *dummy = new GesturesProp();
177*aed3e508SAndroid Build Coastguard Worker *loc = "1";
178*aed3e508SAndroid Build Coastguard Worker return dummy;
179*aed3e508SAndroid Build Coastguard Worker }
180*aed3e508SAndroid Build Coastguard Worker
MockGesturesPropRegisterHandlers(void * data,GesturesProp * prop,void * handler_data,GesturesPropGetHandler getter,GesturesPropSetHandler setter)181*aed3e508SAndroid Build Coastguard Worker void MockGesturesPropRegisterHandlers(void* data, GesturesProp* prop,
182*aed3e508SAndroid Build Coastguard Worker void* handler_data,
183*aed3e508SAndroid Build Coastguard Worker GesturesPropGetHandler getter,
184*aed3e508SAndroid Build Coastguard Worker GesturesPropSetHandler setter) {}
185*aed3e508SAndroid Build Coastguard Worker
MockGesturesPropFree(void * data,GesturesProp * prop)186*aed3e508SAndroid Build Coastguard Worker void MockGesturesPropFree(void* data, GesturesProp* prop) {
187*aed3e508SAndroid Build Coastguard Worker delete prop;
188*aed3e508SAndroid Build Coastguard Worker }
189*aed3e508SAndroid Build Coastguard Worker
190*aed3e508SAndroid Build Coastguard Worker // This tests that if we create a prop, then set the prop provider, and the
191*aed3e508SAndroid Build Coastguard Worker // prop provider changes the value at that time, that we notify the prop
192*aed3e508SAndroid Build Coastguard Worker // delegate that the value was changed.
TEST(PropRegistryTest,SetAtCreateShouldNotifyTest)193*aed3e508SAndroid Build Coastguard Worker TEST(PropRegistryTest, SetAtCreateShouldNotifyTest) {
194*aed3e508SAndroid Build Coastguard Worker GesturesPropProvider mock_gestures_props_provider = {
195*aed3e508SAndroid Build Coastguard Worker MockGesturesPropCreateInt,
196*aed3e508SAndroid Build Coastguard Worker nullptr,
197*aed3e508SAndroid Build Coastguard Worker MockGesturesPropCreateBool,
198*aed3e508SAndroid Build Coastguard Worker MockGesturesPropCreateString,
199*aed3e508SAndroid Build Coastguard Worker MockGesturesPropCreateReal,
200*aed3e508SAndroid Build Coastguard Worker MockGesturesPropRegisterHandlers,
201*aed3e508SAndroid Build Coastguard Worker MockGesturesPropFree
202*aed3e508SAndroid Build Coastguard Worker };
203*aed3e508SAndroid Build Coastguard Worker
204*aed3e508SAndroid Build Coastguard Worker PropRegistry reg;
205*aed3e508SAndroid Build Coastguard Worker PropRegistryTestDelegate delegate;
206*aed3e508SAndroid Build Coastguard Worker BoolProperty my_bool(®, "MyBool", 0);
207*aed3e508SAndroid Build Coastguard Worker my_bool.SetDelegate(&delegate);
208*aed3e508SAndroid Build Coastguard Worker DoubleProperty my_double(®, "MyDouble", 0.0);
209*aed3e508SAndroid Build Coastguard Worker my_double.SetDelegate(&delegate);
210*aed3e508SAndroid Build Coastguard Worker IntProperty my_int(®, "MyInt", 0);
211*aed3e508SAndroid Build Coastguard Worker my_int.SetDelegate(&delegate);
212*aed3e508SAndroid Build Coastguard Worker IntProperty my_int_no_change(®, "MyIntNoChange", 1);
213*aed3e508SAndroid Build Coastguard Worker my_int_no_change.SetDelegate(&delegate);
214*aed3e508SAndroid Build Coastguard Worker StringProperty my_string(®, "MyString", "mine");
215*aed3e508SAndroid Build Coastguard Worker my_string.SetDelegate(&delegate);
216*aed3e508SAndroid Build Coastguard Worker
217*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(0, delegate.call_cnt_);
218*aed3e508SAndroid Build Coastguard Worker reg.SetPropProvider(&mock_gestures_props_provider, nullptr);
219*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(4, delegate.call_cnt_);
220*aed3e508SAndroid Build Coastguard Worker }
221*aed3e508SAndroid Build Coastguard Worker
TEST(PropRegistryTest,DoublePromoteIntTest)222*aed3e508SAndroid Build Coastguard Worker TEST(PropRegistryTest, DoublePromoteIntTest) {
223*aed3e508SAndroid Build Coastguard Worker PropRegistry reg;
224*aed3e508SAndroid Build Coastguard Worker PropRegistryTestDelegate delegate;
225*aed3e508SAndroid Build Coastguard Worker
226*aed3e508SAndroid Build Coastguard Worker DoubleProperty my_double(®, "MyDouble", 1234.5);
227*aed3e508SAndroid Build Coastguard Worker my_double.SetDelegate(&delegate);
228*aed3e508SAndroid Build Coastguard Worker EXPECT_TRUE(strstr(ValueForProperty(my_double).c_str(), "1234.5"));
229*aed3e508SAndroid Build Coastguard Worker IntProperty my_int(®, "MyInt", 321);
230*aed3e508SAndroid Build Coastguard Worker my_int.SetDelegate(&delegate);
231*aed3e508SAndroid Build Coastguard Worker Json::Value my_int_val = my_int.NewValue();
232*aed3e508SAndroid Build Coastguard Worker EXPECT_TRUE(my_double.SetValue(my_int_val));
233*aed3e508SAndroid Build Coastguard Worker EXPECT_TRUE(strstr(ValueForProperty(my_double).c_str(), "321"));
234*aed3e508SAndroid Build Coastguard Worker }
235*aed3e508SAndroid Build Coastguard Worker
TEST(PropRegistryTest,BoolArrayTest)236*aed3e508SAndroid Build Coastguard Worker TEST(PropRegistryTest, BoolArrayTest) {
237*aed3e508SAndroid Build Coastguard Worker PropRegistry reg;
238*aed3e508SAndroid Build Coastguard Worker PropRegistry reg_with_delegate;
239*aed3e508SAndroid Build Coastguard Worker PropRegistryTestDelegate delegate;
240*aed3e508SAndroid Build Coastguard Worker
241*aed3e508SAndroid Build Coastguard Worker GesturesPropBool vals[] = { false, true };
242*aed3e508SAndroid Build Coastguard Worker BoolArrayProperty my_bool_array_w_delegate(
243*aed3e508SAndroid Build Coastguard Worker ®, "MyBoolArray", vals, 2);
244*aed3e508SAndroid Build Coastguard Worker my_bool_array_w_delegate.SetDelegate(&delegate);
245*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(0, delegate.call_cnt_);
246*aed3e508SAndroid Build Coastguard Worker my_bool_array_w_delegate.HandleGesturesPropWritten();
247*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(1, delegate.call_cnt_);
248*aed3e508SAndroid Build Coastguard Worker delegate.BoolArrayWasWritten(&my_bool_array_w_delegate);
249*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(2, delegate.call_cnt_);
250*aed3e508SAndroid Build Coastguard Worker
251*aed3e508SAndroid Build Coastguard Worker IntProperty ip1(®, "hi", 567);
252*aed3e508SAndroid Build Coastguard Worker ip1.SetDelegate(&delegate);
253*aed3e508SAndroid Build Coastguard Worker StringProperty stp1(®, "hi", "foo");
254*aed3e508SAndroid Build Coastguard Worker stp1.SetDelegate(&delegate);
255*aed3e508SAndroid Build Coastguard Worker Json::Value my_bool_array_val = my_bool_array_w_delegate.NewValue();
256*aed3e508SAndroid Build Coastguard Worker Json::Value my_int_val = ip1.NewValue();
257*aed3e508SAndroid Build Coastguard Worker Json::Value my_str_val = stp1.NewValue();
258*aed3e508SAndroid Build Coastguard Worker EXPECT_FALSE(my_bool_array_w_delegate.SetValue(my_int_val));
259*aed3e508SAndroid Build Coastguard Worker EXPECT_FALSE(my_bool_array_w_delegate.SetValue(my_str_val));
260*aed3e508SAndroid Build Coastguard Worker EXPECT_TRUE(my_bool_array_w_delegate.SetValue(my_bool_array_val));
261*aed3e508SAndroid Build Coastguard Worker
262*aed3e508SAndroid Build Coastguard Worker // This code does not do anything but the code coverage
263*aed3e508SAndroid Build Coastguard Worker // hits for not covered areas due to not running the
264*aed3e508SAndroid Build Coastguard Worker // unused default virtual functions.
265*aed3e508SAndroid Build Coastguard Worker PropertyDelegate pd;
266*aed3e508SAndroid Build Coastguard Worker
267*aed3e508SAndroid Build Coastguard Worker BoolArrayProperty my_bool_array(®, "MyBoolArray", vals, 2);
268*aed3e508SAndroid Build Coastguard Worker pd.BoolArrayWasWritten(&my_bool_array);
269*aed3e508SAndroid Build Coastguard Worker }
270*aed3e508SAndroid Build Coastguard Worker
TEST(PropRegistryTest,DoubleArrayTest)271*aed3e508SAndroid Build Coastguard Worker TEST(PropRegistryTest, DoubleArrayTest) {
272*aed3e508SAndroid Build Coastguard Worker PropRegistry reg;
273*aed3e508SAndroid Build Coastguard Worker PropRegistry reg_with_delegate;
274*aed3e508SAndroid Build Coastguard Worker PropRegistryTestDelegate delegate;
275*aed3e508SAndroid Build Coastguard Worker
276*aed3e508SAndroid Build Coastguard Worker double vals[] = { 0.0, 1.0 };
277*aed3e508SAndroid Build Coastguard Worker DoubleArrayProperty my_double_array_w_delegate(
278*aed3e508SAndroid Build Coastguard Worker ®, "MyDoubleArray", vals, 2);
279*aed3e508SAndroid Build Coastguard Worker my_double_array_w_delegate.SetDelegate(&delegate);
280*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(0, delegate.call_cnt_);
281*aed3e508SAndroid Build Coastguard Worker my_double_array_w_delegate.HandleGesturesPropWritten();
282*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(1, delegate.call_cnt_);
283*aed3e508SAndroid Build Coastguard Worker delegate.DoubleArrayWasWritten(&my_double_array_w_delegate);
284*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(2, delegate.call_cnt_);
285*aed3e508SAndroid Build Coastguard Worker
286*aed3e508SAndroid Build Coastguard Worker IntProperty ip1(®, "hi", 567);
287*aed3e508SAndroid Build Coastguard Worker ip1.SetDelegate(&delegate);
288*aed3e508SAndroid Build Coastguard Worker StringProperty stp1(®, "hi", "foo");
289*aed3e508SAndroid Build Coastguard Worker stp1.SetDelegate(&delegate);
290*aed3e508SAndroid Build Coastguard Worker Json::Value my_double_array_val = my_double_array_w_delegate.NewValue();
291*aed3e508SAndroid Build Coastguard Worker Json::Value my_int_val = ip1.NewValue();
292*aed3e508SAndroid Build Coastguard Worker Json::Value my_str_val = stp1.NewValue();
293*aed3e508SAndroid Build Coastguard Worker EXPECT_FALSE(my_double_array_w_delegate.SetValue(my_int_val));
294*aed3e508SAndroid Build Coastguard Worker EXPECT_FALSE(my_double_array_w_delegate.SetValue(my_str_val));
295*aed3e508SAndroid Build Coastguard Worker EXPECT_TRUE(my_double_array_w_delegate.SetValue(my_double_array_val));
296*aed3e508SAndroid Build Coastguard Worker
297*aed3e508SAndroid Build Coastguard Worker // This code does not do anything but the code coverage
298*aed3e508SAndroid Build Coastguard Worker // hits for not covered areas due to not running the
299*aed3e508SAndroid Build Coastguard Worker // unused default virtual functions.
300*aed3e508SAndroid Build Coastguard Worker PropertyDelegate pd;
301*aed3e508SAndroid Build Coastguard Worker
302*aed3e508SAndroid Build Coastguard Worker DoubleArrayProperty my_double_array(®, "MyDoubleArray", vals, 2);
303*aed3e508SAndroid Build Coastguard Worker pd.DoubleArrayWasWritten(&my_double_array);
304*aed3e508SAndroid Build Coastguard Worker }
305*aed3e508SAndroid Build Coastguard Worker
TEST(PropRegistryTest,IntArrayTest)306*aed3e508SAndroid Build Coastguard Worker TEST(PropRegistryTest, IntArrayTest) {
307*aed3e508SAndroid Build Coastguard Worker PropRegistry reg;
308*aed3e508SAndroid Build Coastguard Worker PropRegistry reg_with_delegate;
309*aed3e508SAndroid Build Coastguard Worker PropRegistryTestDelegate delegate;
310*aed3e508SAndroid Build Coastguard Worker
311*aed3e508SAndroid Build Coastguard Worker int vals[] = { 0, 1 };
312*aed3e508SAndroid Build Coastguard Worker IntArrayProperty my_int_array_w_delegate(
313*aed3e508SAndroid Build Coastguard Worker ®, "MyIntArray", vals, 2);
314*aed3e508SAndroid Build Coastguard Worker my_int_array_w_delegate.SetDelegate(&delegate);
315*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(0, delegate.call_cnt_);
316*aed3e508SAndroid Build Coastguard Worker my_int_array_w_delegate.HandleGesturesPropWritten();
317*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(1, delegate.call_cnt_);
318*aed3e508SAndroid Build Coastguard Worker delegate.IntArrayWasWritten(&my_int_array_w_delegate);
319*aed3e508SAndroid Build Coastguard Worker EXPECT_EQ(2, delegate.call_cnt_);
320*aed3e508SAndroid Build Coastguard Worker
321*aed3e508SAndroid Build Coastguard Worker IntProperty ip1(®, "hi", 567);
322*aed3e508SAndroid Build Coastguard Worker ip1.SetDelegate(&delegate);
323*aed3e508SAndroid Build Coastguard Worker StringProperty stp1(®, "hi", "foo");
324*aed3e508SAndroid Build Coastguard Worker stp1.SetDelegate(&delegate);
325*aed3e508SAndroid Build Coastguard Worker Json::Value my_int_array_val = my_int_array_w_delegate.NewValue();
326*aed3e508SAndroid Build Coastguard Worker Json::Value my_int_val = ip1.NewValue();
327*aed3e508SAndroid Build Coastguard Worker Json::Value my_str_val = stp1.NewValue();
328*aed3e508SAndroid Build Coastguard Worker EXPECT_FALSE(my_int_array_w_delegate.SetValue(my_int_val));
329*aed3e508SAndroid Build Coastguard Worker EXPECT_FALSE(my_int_array_w_delegate.SetValue(my_str_val));
330*aed3e508SAndroid Build Coastguard Worker EXPECT_TRUE(my_int_array_w_delegate.SetValue(my_int_array_val));
331*aed3e508SAndroid Build Coastguard Worker
332*aed3e508SAndroid Build Coastguard Worker // This code does not do anything but the code coverage
333*aed3e508SAndroid Build Coastguard Worker // hits for not covered areas due to not running the
334*aed3e508SAndroid Build Coastguard Worker // unused default virtual functions.
335*aed3e508SAndroid Build Coastguard Worker PropertyDelegate pd;
336*aed3e508SAndroid Build Coastguard Worker
337*aed3e508SAndroid Build Coastguard Worker IntArrayProperty my_int_array(®, "MyIntArray", vals, 2);
338*aed3e508SAndroid Build Coastguard Worker pd.IntArrayWasWritten(&my_int_array);
339*aed3e508SAndroid Build Coastguard Worker }
340*aed3e508SAndroid Build Coastguard Worker
341*aed3e508SAndroid Build Coastguard Worker } // namespace gestures
342