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

Side by Side Diff: vm/dart_api_impl_test.cc

Issue 10115034: Add a missing arity check for top-level methods in Dart_Invoke. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 8 years, 8 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 | « vm/dart_api_impl.cc ('k') | vm/unit_test.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "include/dart_api.h" 5 #include "include/dart_api.h"
6 #include "platform/assert.h" 6 #include "platform/assert.h"
7 #include "platform/utils.h" 7 #include "platform/utils.h"
8 #include "vm/class_finalizer.h" 8 #include "vm/class_finalizer.h"
9 #include "vm/dart_api_impl.h" 9 #include "vm/dart_api_impl.h"
10 #include "vm/dart_api_state.h" 10 #include "vm/dart_api_state.h"
(...skipping 3179 matching lines...) Expand 10 before | Expand all | Expand 10 after
3190 "}\n"; 3190 "}\n";
3191 3191
3192 // Shared setup. 3192 // Shared setup.
3193 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); 3193 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
3194 Dart_Handle cls = Dart_GetClass(lib, Dart_NewString("Methods")); 3194 Dart_Handle cls = Dart_GetClass(lib, Dart_NewString("Methods"));
3195 EXPECT_VALID(cls); 3195 EXPECT_VALID(cls);
3196 Dart_Handle instance = Dart_Invoke(lib, Dart_NewString("test"), 0, NULL); 3196 Dart_Handle instance = Dart_Invoke(lib, Dart_NewString("test"), 0, NULL);
3197 EXPECT_VALID(instance); 3197 EXPECT_VALID(instance);
3198 Dart_Handle args[1]; 3198 Dart_Handle args[1];
3199 args[0] = Dart_NewString("!!!"); 3199 args[0] = Dart_NewString("!!!");
3200 Dart_Handle bad_args[2];
3201 bad_args[0] = Dart_NewString("bad1");
3202 bad_args[1] = Dart_NewString("bad2");
3200 Dart_Handle result; 3203 Dart_Handle result;
3201 Dart_Handle name; 3204 Dart_Handle name;
3202 const char* str; 3205 const char* str;
3203 3206
3204 // Instance method. 3207 // Instance method.
3205 name = Dart_NewString("instanceMethod"); 3208 name = Dart_NewString("instanceMethod");
3206 EXPECT(Dart_IsError(Dart_Invoke(lib, name, 1, args))); 3209 EXPECT(Dart_IsError(Dart_Invoke(lib, name, 1, args)));
3207 EXPECT(Dart_IsError(Dart_Invoke(cls, name, 1, args))); 3210 EXPECT(Dart_IsError(Dart_Invoke(cls, name, 1, args)));
3208 result = Dart_Invoke(instance, name, 1, args); 3211 result = Dart_Invoke(instance, name, 1, args);
3209 EXPECT_VALID(result); 3212 EXPECT_VALID(result);
3210 result = Dart_StringToCString(result, &str); 3213 result = Dart_StringToCString(result, &str);
3211 EXPECT_STREQ("instance !!!", str); 3214 EXPECT_STREQ("instance !!!", str);
3212 3215
3216 // Instance method, wrong arg count.
3217 EXPECT_ERROR(Dart_Invoke(instance, name, 2, bad_args),
3218 "did not find instance method 'Methods.instanceMethod'");
3219
3213 // Hidden instance method. 3220 // Hidden instance method.
3214 name = Dart_NewString("_instanceMethod"); 3221 name = Dart_NewString("_instanceMethod");
3215 EXPECT(Dart_IsError(Dart_Invoke(lib, name, 1, args))); 3222 EXPECT(Dart_IsError(Dart_Invoke(lib, name, 1, args)));
3216 EXPECT(Dart_IsError(Dart_Invoke(cls, name, 1, args))); 3223 EXPECT(Dart_IsError(Dart_Invoke(cls, name, 1, args)));
3217 result = Dart_Invoke(instance, name, 1, args); 3224 result = Dart_Invoke(instance, name, 1, args);
3218 EXPECT_VALID(result); 3225 EXPECT_VALID(result);
3219 result = Dart_StringToCString(result, &str); 3226 result = Dart_StringToCString(result, &str);
3220 EXPECT_STREQ("hidden instance !!!", str); 3227 EXPECT_STREQ("hidden instance !!!", str);
3221 3228
3222 // Inherited method. 3229 // Inherited method.
3223 name = Dart_NewString("inheritedMethod"); 3230 name = Dart_NewString("inheritedMethod");
3224 EXPECT(Dart_IsError(Dart_Invoke(lib, name, 1, args))); 3231 EXPECT(Dart_IsError(Dart_Invoke(lib, name, 1, args)));
3225 EXPECT(Dart_IsError(Dart_Invoke(cls, name, 1, args))); 3232 EXPECT(Dart_IsError(Dart_Invoke(cls, name, 1, args)));
3226 result = Dart_Invoke(instance, name, 1, args); 3233 result = Dart_Invoke(instance, name, 1, args);
3227 EXPECT_VALID(result); 3234 EXPECT_VALID(result);
3228 result = Dart_StringToCString(result, &str); 3235 result = Dart_StringToCString(result, &str);
3229 EXPECT_STREQ("inherited !!!", str); 3236 EXPECT_STREQ("inherited !!!", str);
3230 3237
3231 // Static method. 3238 // Static method.
3232 name = Dart_NewString("staticMethod"); 3239 name = Dart_NewString("staticMethod");
3233 EXPECT(Dart_IsError(Dart_Invoke(lib, name, 1, args))); 3240 EXPECT(Dart_IsError(Dart_Invoke(lib, name, 1, args)));
3234 EXPECT(Dart_IsError(Dart_Invoke(instance, name, 1, args))); 3241 EXPECT(Dart_IsError(Dart_Invoke(instance, name, 1, args)));
3235 result = Dart_Invoke(cls, name, 1, args); 3242 result = Dart_Invoke(cls, name, 1, args);
3236 EXPECT_VALID(result); 3243 EXPECT_VALID(result);
3237 result = Dart_StringToCString(result, &str); 3244 result = Dart_StringToCString(result, &str);
3238 EXPECT_STREQ("static !!!", str); 3245 EXPECT_STREQ("static !!!", str);
3239 3246
3247 // Static method, wrong arg count.
3248 EXPECT_ERROR(Dart_Invoke(cls, name, 2, bad_args),
3249 "did not find static method 'Methods.staticMethod'");
3250
3240 // Hidden static method. 3251 // Hidden static method.
3241 name = Dart_NewString("_staticMethod"); 3252 name = Dart_NewString("_staticMethod");
3242 EXPECT(Dart_IsError(Dart_Invoke(lib, name, 1, args))); 3253 EXPECT(Dart_IsError(Dart_Invoke(lib, name, 1, args)));
3243 EXPECT(Dart_IsError(Dart_Invoke(instance, name, 1, args))); 3254 EXPECT(Dart_IsError(Dart_Invoke(instance, name, 1, args)));
3244 result = Dart_Invoke(cls, name, 1, args); 3255 result = Dart_Invoke(cls, name, 1, args);
3245 EXPECT_VALID(result); 3256 EXPECT_VALID(result);
3246 result = Dart_StringToCString(result, &str); 3257 result = Dart_StringToCString(result, &str);
3247 EXPECT_STREQ("hidden static !!!", str); 3258 EXPECT_STREQ("hidden static !!!", str);
3248 3259
3249 // Static non-inherited method. Not found at any level. 3260 // Static non-inherited method. Not found at any level.
3250 name = Dart_NewString("non_inheritedMethod"); 3261 name = Dart_NewString("non_inheritedMethod");
3251 EXPECT(Dart_IsError(Dart_Invoke(lib, name, 1, args))); 3262 EXPECT(Dart_IsError(Dart_Invoke(lib, name, 1, args)));
3252 EXPECT(Dart_IsError(Dart_Invoke(instance, name, 1, args))); 3263 EXPECT(Dart_IsError(Dart_Invoke(instance, name, 1, args)));
3253 EXPECT(Dart_IsError(Dart_Invoke(cls, name, 1, args))); 3264 EXPECT(Dart_IsError(Dart_Invoke(cls, name, 1, args)));
3254 3265
3255 // Top-Level method. 3266 // Top-Level method.
3256 name = Dart_NewString("topMethod"); 3267 name = Dart_NewString("topMethod");
3257 EXPECT(Dart_IsError(Dart_Invoke(cls, name, 1, args))); 3268 EXPECT(Dart_IsError(Dart_Invoke(cls, name, 1, args)));
3258 EXPECT(Dart_IsError(Dart_Invoke(instance, name, 1, args))); 3269 EXPECT(Dart_IsError(Dart_Invoke(instance, name, 1, args)));
3259 result = Dart_Invoke(lib, name, 1, args); 3270 result = Dart_Invoke(lib, name, 1, args);
3260 EXPECT_VALID(result); 3271 EXPECT_VALID(result);
3261 result = Dart_StringToCString(result, &str); 3272 result = Dart_StringToCString(result, &str);
3262 EXPECT_STREQ("top !!!", str); 3273 EXPECT_STREQ("top !!!", str);
3263 3274
3275 // Top-level method, wrong arg count.
3276 EXPECT_ERROR(Dart_Invoke(lib, name, 2, bad_args),
3277 "did not find top-level function 'topMethod'");
3278
3264 // Hidden top-level method. 3279 // Hidden top-level method.
3265 name = Dart_NewString("_topMethod"); 3280 name = Dart_NewString("_topMethod");
3266 EXPECT(Dart_IsError(Dart_Invoke(cls, name, 1, args))); 3281 EXPECT(Dart_IsError(Dart_Invoke(cls, name, 1, args)));
3267 EXPECT(Dart_IsError(Dart_Invoke(instance, name, 1, args))); 3282 EXPECT(Dart_IsError(Dart_Invoke(instance, name, 1, args)));
3268 result = Dart_Invoke(lib, name, 1, args); 3283 result = Dart_Invoke(lib, name, 1, args);
3269 EXPECT_VALID(result); 3284 EXPECT_VALID(result);
3270 result = Dart_StringToCString(result, &str); 3285 result = Dart_StringToCString(result, &str);
3271 EXPECT_STREQ("hidden top !!!", str); 3286 EXPECT_STREQ("hidden top !!!", str);
3272 } 3287 }
3273 3288
(...skipping 1682 matching lines...) Expand 10 before | Expand all | Expand 10 after
4956 EXPECT_VALID(result); 4971 EXPECT_VALID(result);
4957 EXPECT(Dart_IsDouble(result)); 4972 EXPECT(Dart_IsDouble(result));
4958 double out; 4973 double out;
4959 result = Dart_DoubleValue(result, &out); 4974 result = Dart_DoubleValue(result, &out);
4960 fprintf(stderr, "Benchmark_UseDartApi: %f us per iteration\n", out); 4975 fprintf(stderr, "Benchmark_UseDartApi: %f us per iteration\n", out);
4961 } 4976 }
4962 4977
4963 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). 4978 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64).
4964 4979
4965 } // namespace dart 4980 } // namespace dart
OLDNEW
« no previous file with comments | « vm/dart_api_impl.cc ('k') | vm/unit_test.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698