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

Unified Diff: test/mjsunit/messages.js

Issue 1099573002: Migrate error messages, part 4 (v8natives.js). (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: fix wrong assertion Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/v8natives.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/messages.js
diff --git a/test/mjsunit/messages.js b/test/mjsunit/messages.js
index 41622554abbd3ac248b77c6368e46d63f917bf53..d148063b76f59e9107b0a3df7e374d39cd73914c 100644
--- a/test/mjsunit/messages.js
+++ b/test/mjsunit/messages.js
@@ -12,7 +12,7 @@ function test(f, expected, type) {
assertEquals(expected, e.message);
return;
}
- assertUnreachable();
+ assertUnreachable("Exception expected");
}
// === Error ===
@@ -32,11 +32,29 @@ test(function() {
}, "Function.prototype.apply was called on 1, which is a number " +
"and not a function", TypeError);
+// kCalledNonCallable
+test(function() {
+ [].forEach(1);
+}, "1 is not a function", TypeError);
+
+// kCalledOnNonObject
+test(function() {
+ Object.freeze(1)
+}, "Object.freeze called on non-object", TypeError);
+
// kCannotConvertToPrimitive
test(function() {
[].join(Object(Symbol(1)));
}, "Cannot convert object to primitive value", TypeError);
+// kDefineDisallowed
+test(function() {
+ "use strict";
+ var o = {};
+ Object.preventExtensions(o);
+ Object.defineProperty(o, "x", { value: 1 });
+}, "Cannot define property:x, object is not extensible.", TypeError);
+
// kGeneratorRunning
test(function() {
var iter;
@@ -45,10 +63,10 @@ test(function() {
iter.next();
}, "Generator is already running", TypeError);
-// kCalledNonCallable
+// kFunctionBind
test(function() {
- [].forEach(1);
-}, "1 is not a function", TypeError);
+ Function.prototype.bind.call(1);
+}, "Bind must be called on a function", TypeError);
// kIncompatibleMethodReceiver
test(function() {
@@ -79,12 +97,80 @@ test(function() {
new Symbol();
}, "Symbol is not a constructor", TypeError);
+// kNotGeneric
+test(function() {
+ String.prototype.toString.call(1);
+}, "String.prototype.toString is not generic", TypeError);
+
+test(function() {
+ String.prototype.valueOf.call(1);
+}, "String.prototype.valueOf is not generic", TypeError);
+
+test(function() {
+ Boolean.prototype.toString.call(1);
+}, "Boolean.prototype.toString is not generic", TypeError);
+
+test(function() {
+ Boolean.prototype.valueOf.call(1);
+}, "Boolean.prototype.valueOf is not generic", TypeError);
+
+test(function() {
+ Number.prototype.toString.call({});
+}, "Number.prototype.toString is not generic", TypeError);
+
+test(function() {
+ Number.prototype.valueOf.call({});
+}, "Number.prototype.valueOf is not generic", TypeError);
+
+test(function() {
+ Function.prototype.toString.call(1);
+}, "Function.prototype.toString is not generic", TypeError);
+
+
+// kObjectGetterExpectingFunction
+test(function() {
+ ({}).__defineGetter__("x", 0);
+}, "Object.prototype.__defineGetter__: Expecting function", TypeError);
+
+// kObjectGetterCallable
+test(function() {
+ Object.defineProperty({}, "x", { get: 1 });
+}, "Getter must be a function: 1", TypeError);
+
+// kObjectSetterExpectingFunction
+test(function() {
+ ({}).__defineSetter__("x", 0);
+}, "Object.prototype.__defineSetter__: Expecting function", TypeError);
+
+// kObjectSetterCallable
+test(function() {
+ Object.defineProperty({}, "x", { set: 1 });
+}, "Setter must be a function: 1", TypeError);
+
+// kPropertyDescObject
+test(function() {
+ Object.defineProperty({}, "x", 1);
+}, "Property description must be an object: 1", TypeError);
+
// kPropertyNotFunction
test(function() {
Set.prototype.add = 0;
new Set(1);
}, "Property 'add' of object #<Set> is not a function", TypeError);
+// kProtoObjectOrNull
+test(function() {
+ Object.setPrototypeOf({}, 1);
+}, "Object prototype may only be an Object or null: 1", TypeError);
+
+// kRedefineDisallowed
+test(function() {
+ "use strict";
+ var o = {};
+ Object.defineProperty(o, "x", { value: 1, configurable: false });
+ Object.defineProperty(o, "x", { value: 2 });
+}, "Cannot redefine property: x", TypeError);
+
// kSymbolToPrimitive
test(function() {
1 + Object(Symbol());
@@ -105,6 +191,12 @@ test(function() {
Array.prototype.toString.call(null);
}, "Cannot convert undefined or null to object", TypeError);
+// kValueAndAccessor
+test(function() {
+ Object.defineProperty({}, "x", { get: function(){}, value: 1});
+}, "Invalid property. A property cannot both have accessors and be " +
+ "writable or have a value, #<Object>", TypeError);
+
// kWithExpression
test(function() {
with (null) {}
@@ -124,10 +216,37 @@ test(function() {
}, "Reflect.construct: Arguments list has wrong type", TypeError);
+//=== SyntaxError ===
+
+test(function() {
+ new Function(")", "");
+}, "Function arg string contains parenthesis", SyntaxError);
+
+
// === RangeError ===
+// kArrayLengthOutOfRange
+test(function() {
+ "use strict";
+ Object.defineProperty([], "length", { value: 1E100 });
+}, "defineProperty() array length out of range", RangeError);
+
+//kNumberFormatRange
+test(function() {
+Number(1).toFixed(100);
+}, "toFixed() digits argument must be between 0 and 20", RangeError);
+
+test(function() {
+Number(1).toExponential(100);
+}, "toExponential() argument must be between 0 and 20", RangeError);
+
// kStackOverflow
test(function() {
function f() { f(Array(1000)); }
f();
}, "Maximum call stack size exceeded", RangeError);
+
+// kToPrecisionFormatRange
+test(function() {
+ Number(1).toPrecision(100);
+}, "toPrecision() argument must be between 1 and 21", RangeError);
« no previous file with comments | « src/v8natives.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698