Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(437)

Side by Side Diff: ppapi/tests/test_var.cc

Issue 6673098: Remove PPB_Var interface's scripting functionality. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removing convert. Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ppapi/tests/test_var.h ('k') | webkit/glue/webkit_glue.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. 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.
4
5 #include "ppapi/tests/test_var.h"
6
7 #include <limits>
8
9 #include "ppapi/c/pp_var.h"
10 #include "ppapi/c/ppb_var.h"
11 #include "ppapi/cpp/module.h"
12 #include "ppapi/cpp/var.h"
13 #include "ppapi/tests/test_utils.h"
14 #include "ppapi/tests/testing_instance.h"
15
16 REGISTER_TEST_CASE(Var);
17
18 namespace {
19 pp::Var adoptVar(PP_Var var) {
20 return pp::Var(pp::Var::PassRef(), var);
21 }
22 } // namespace
23
24 bool TestVar::Init() {
25 var_interface_ = reinterpret_cast<PPB_Var const*>(
26 pp::Module::Get()->GetBrowserInterface(PPB_VAR_INTERFACE));
27 return var_interface_ && InitTestingInterface();
28 }
29
30 void TestVar::RunTest() {
31 RUN_TEST(ConvertType);
32 RUN_TEST(DefineProperty);
33 }
34
35 std::string TestVar::TestConvertType() {
36 pp::Var result;
37 PP_Var exception = PP_MakeUndefined();
38 double NaN = std::numeric_limits<double>::quiet_NaN();
39
40 // Int to string
41 result = adoptVar(var_interface_->ConvertType(instance_->pp_instance(),
42 pp::Var(100).pp_var(),
43 PP_VARTYPE_STRING,
44 &exception));
45 ASSERT_EQ(pp::Var("100"), result);
46 ASSERT_TRUE(adoptVar(exception).is_undefined());
47
48 // Int to double
49 result = adoptVar(var_interface_->ConvertType(instance_->pp_instance(),
50 pp::Var(100).pp_var(),
51 PP_VARTYPE_DOUBLE,
52 &exception));
53 ASSERT_EQ(pp::Var(100.0), result);
54 ASSERT_TRUE(adoptVar(exception).is_undefined());
55
56 // Double to int
57 result = adoptVar(var_interface_->ConvertType(instance_->pp_instance(),
58 pp::Var(100.0).pp_var(),
59 PP_VARTYPE_INT32,
60 &exception));
61 ASSERT_EQ(pp::Var(100), result);
62 ASSERT_TRUE(adoptVar(exception).is_undefined());
63
64 // Double(NaN) to int
65 result = adoptVar(var_interface_->ConvertType(instance_->pp_instance(),
66 pp::Var(NaN).pp_var(),
67 PP_VARTYPE_INT32,
68 &exception));
69 ASSERT_EQ(pp::Var(0), result);
70 ASSERT_TRUE(adoptVar(exception).is_undefined());
71
72 // Double to string
73 result = adoptVar(var_interface_->ConvertType(instance_->pp_instance(),
74 pp::Var(100.0).pp_var(),
75 PP_VARTYPE_STRING,
76 &exception));
77 ASSERT_EQ(pp::Var("100"), result);
78 ASSERT_TRUE(adoptVar(exception).is_undefined());
79
80 // Double(NaN) to string
81 result = adoptVar(var_interface_->ConvertType(instance_->pp_instance(),
82 pp::Var(NaN).pp_var(),
83 PP_VARTYPE_STRING,
84 &exception));
85 ASSERT_EQ(pp::Var("NaN"), result);
86 ASSERT_TRUE(adoptVar(exception).is_undefined());
87
88 // String to int, valid string
89 result = adoptVar(var_interface_->ConvertType(instance_->pp_instance(),
90 pp::Var("100").pp_var(),
91 PP_VARTYPE_INT32,
92 &exception));
93 ASSERT_EQ(pp::Var(100), result);
94 ASSERT_TRUE(adoptVar(exception).is_undefined());
95
96 // String to int, invalid string
97 result = adoptVar(var_interface_->ConvertType(instance_->pp_instance(),
98 pp::Var("jockey").pp_var(),
99 PP_VARTYPE_INT32,
100 &exception));
101 ASSERT_EQ(pp::Var(0), result);
102 ASSERT_TRUE(adoptVar(exception).is_undefined());
103
104 PASS();
105 }
106
107 std::string TestVar::TestDefineProperty() {
108 pp::Var exception;
109 pp::Var property;
110 pp::Var value;
111 PP_Var unmanaged_exception = PP_MakeUndefined();
112
113 // Create an empty object.
114 pp::Var test_obj = instance_->ExecuteScript("({})", &exception);
115 ASSERT_TRUE(exception.is_undefined());
116 ASSERT_TRUE(test_obj.is_object());
117
118 // Define a simple property.
119 property = "x";
120 value = 1001;
121 var_interface_->DefineProperty(test_obj.pp_var(),
122 PP_MakeSimpleProperty(property.pp_var(),
123 value.pp_var()),
124 &unmanaged_exception);
125 ASSERT_TRUE(adoptVar(unmanaged_exception).is_undefined());
126
127 ASSERT_EQ(value, test_obj.GetProperty(property, &exception));
128 ASSERT_TRUE(exception.is_undefined());
129
130 // Define a property with a getter that always returns 123 and setter that
131 // sets another property to the given value.
132 property = "y";
133 pp::Var getter = instance_->ExecuteScript(
134 "(function(){return 'okey';})", &exception);
135 ASSERT_TRUE(getter.is_object());
136 ASSERT_TRUE(exception.is_undefined());
137 pp::Var setter = instance_->ExecuteScript(
138 "(function(x){this['another']=x;})", &exception);
139 ASSERT_TRUE(setter.is_object());
140 ASSERT_TRUE(exception.is_undefined());
141
142 struct PP_ObjectProperty property_attributes = {
143 property.pp_var(),
144 PP_MakeUndefined(),
145 getter.pp_var(),
146 setter.pp_var(),
147 PP_OBJECTPROPERTY_MODIFIER_NONE
148 };
149 var_interface_->DefineProperty(test_obj.pp_var(), property_attributes,
150 &unmanaged_exception);
151 ASSERT_TRUE(adoptVar(unmanaged_exception).is_undefined());
152
153 value = test_obj.GetProperty(property, &exception);
154 ASSERT_EQ(pp::Var("okey"), value);
155 ASSERT_TRUE(exception.is_undefined());
156
157 value = test_obj.GetProperty("another", &exception);
158 ASSERT_TRUE(value.is_undefined());
159 ASSERT_TRUE(exception.is_undefined());
160
161 test_obj.SetProperty("another", "dokey", &exception);
162 ASSERT_TRUE(exception.is_undefined());
163
164 ASSERT_EQ(pp::Var("dokey"), test_obj.GetProperty("another", &exception));
165 ASSERT_TRUE(exception.is_undefined());
166
167 PASS();
168 }
OLDNEW
« no previous file with comments | « ppapi/tests/test_var.h ('k') | webkit/glue/webkit_glue.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698