1 // Copyright 2016 Samsung Electronics. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
7 #include "ewk_value_product.h"
8 #include "utc_blink_ewk_base.h"
9 #include "utc_blink_ewk_value_compare.h"
11 class utc_blink_ewk_array_value : public utc_blink_ewk_base {};
14 Tested structure layout:
15 [ bool, int, double, string, array[bool, int, double] ]
17 TEST_F(utc_blink_ewk_array_value, POS_TEST) {
19 Ewk_Value arr = ewk_value_array_new();
20 EXPECT_EQ(ewk_value_type_get(arr), ewk_value_array_type_get());
21 ASSERT_EQ(ewk_value_array_count(arr), 0u);
22 ASSERT_EQ(ewk_value_array_is_mutable(arr), EINA_TRUE);
25 Ewk_Value v = ewk_value_boolean_new(EINA_TRUE);
26 ewk_value_array_append(arr, v);
28 ASSERT_EQ(ewk_value_array_count(arr), 1u);
31 v = ewk_value_double_new(1.23f);
32 ewk_value_array_append(arr, v);
34 ASSERT_EQ(ewk_value_array_count(arr), 2u);
37 v = ewk_value_int_new(123);
38 ewk_value_array_append(arr, v);
40 ASSERT_EQ(ewk_value_array_count(arr), 3u);
43 v = ewk_value_string_new("test_string");
44 ewk_value_array_append(arr, v);
46 ASSERT_EQ(ewk_value_array_count(arr), 4u);
49 Ewk_Value arr2 = ewk_value_array_new();
51 v = ewk_value_boolean_new(EINA_TRUE);
52 ewk_value_array_append(arr2, v);
54 ASSERT_EQ(ewk_value_array_count(arr2), 1u);
56 v = ewk_value_double_new(1.23f);
57 ewk_value_array_append(arr2, v);
59 ASSERT_EQ(ewk_value_array_count(arr2), 2u);
61 v = ewk_value_int_new(123);
62 ewk_value_array_append(arr2, v);
64 ASSERT_EQ(ewk_value_array_count(arr2), 3u);
66 // append te second array to array
67 ewk_value_array_append(arr, arr2);
68 ewk_value_unref(arr2);
69 ASSERT_EQ(ewk_value_array_count(arr), 5u);
73 ASSERT_EQ(ewk_value_array_get(arr, 0, &v), EINA_TRUE);
74 EXPECT_EQ(ewk_value_type_get(v), ewk_value_boolean_type_get());
76 ASSERT_EQ(ewk_value_boolean_value_get(v, &b), EINA_TRUE);
77 EXPECT_EQ(b, EINA_TRUE);
81 ASSERT_EQ(ewk_value_array_get(arr, 1, &v), EINA_TRUE);
82 EXPECT_EQ(ewk_value_type_get(v), ewk_value_double_type_get());
84 ASSERT_EQ(ewk_value_double_value_get(v, &d), EINA_TRUE);
89 ASSERT_EQ(ewk_value_array_get(arr, 2, &v), EINA_TRUE);
90 EXPECT_EQ(ewk_value_type_get(v), ewk_value_int_type_get());
92 ASSERT_EQ(ewk_value_int_value_get(v, &i), EINA_TRUE);
97 ASSERT_EQ(ewk_value_array_get(arr, 3, &v), EINA_TRUE);
98 EXPECT_EQ(ewk_value_type_get(v), ewk_value_string_type_get());
99 Eina_Stringshare* str = ewk_value_string_value_get(v);
100 ASSERT_TRUE(str != NULL);
101 EXPECT_STREQ((const char*)str, "test_string");
102 eina_stringshare_del(str);
106 ASSERT_EQ(ewk_value_array_get(arr, 4, &arr2), EINA_TRUE);
107 EXPECT_EQ(ewk_value_type_get(arr2), ewk_value_array_type_get());
108 // check values inside the array
110 ASSERT_EQ(ewk_value_array_get(arr2, 0, &v), EINA_TRUE);
111 EXPECT_EQ(ewk_value_type_get(v), ewk_value_boolean_type_get());
112 ASSERT_EQ(ewk_value_boolean_value_get(v, &b), EINA_TRUE);
113 EXPECT_EQ(b, EINA_TRUE);
116 ASSERT_EQ(ewk_value_array_get(arr2, 1, &v), EINA_TRUE);
117 EXPECT_EQ(ewk_value_type_get(v), ewk_value_double_type_get());
118 ASSERT_EQ(ewk_value_double_value_get(v, &d), EINA_TRUE);
122 ASSERT_EQ(ewk_value_array_get(arr2, 2, &v), EINA_TRUE);
123 EXPECT_EQ(ewk_value_type_get(v), ewk_value_int_type_get());
124 ASSERT_EQ(ewk_value_int_value_get(v, &i), EINA_TRUE);
127 ewk_value_unref(arr2);
129 // remove some values
130 // try to remove out of scope
131 EXPECT_EQ(ewk_value_array_remove(arr, 10), EINA_FALSE);
132 ASSERT_EQ(ewk_value_array_count(arr), 5u);
135 EXPECT_EQ(ewk_value_array_remove(arr, 0), EINA_TRUE);
136 ASSERT_EQ(ewk_value_array_count(arr), 4u);
139 EXPECT_EQ(ewk_value_array_remove(arr, 1), EINA_TRUE);
140 ASSERT_EQ(ewk_value_array_count(arr), 3u);
142 // check values that are left
144 ASSERT_EQ(ewk_value_array_get(arr, 0, &v), EINA_TRUE);
145 EXPECT_EQ(ewk_value_type_get(v), ewk_value_double_type_get());
146 ASSERT_EQ(ewk_value_double_value_get(v, &d), EINA_TRUE);
151 ASSERT_EQ(ewk_value_array_get(arr, 1, &v), EINA_TRUE);
152 EXPECT_EQ(ewk_value_type_get(v), ewk_value_string_type_get());
153 str = ewk_value_string_value_get(v);
154 ASSERT_TRUE(str != NULL);
155 EXPECT_STREQ((const char*)str, "test_string");
156 eina_stringshare_del(str);
159 // try to get value out of scope
160 EXPECT_EQ(ewk_value_array_get(arr, 3, &v), EINA_FALSE);
162 ewk_value_unref(arr);