Update web-platform-tests to revision 0d318188757a9c996e20b82db201fd04de5aa255

This commit is contained in:
James Graham 2015-03-27 09:15:38 +00:00
parent b2a5225831
commit 1a81b18b9f
12321 changed files with 544385 additions and 6 deletions

View file

@ -0,0 +1,24 @@
<!doctype html>
<title>Array.[[DefineOwnProperty]]</title>
<link rel=author href=mailto:Ms2ger@gmail.com title=Ms2ger>
<link rel=help href=http://es5.github.com/#x15.4.5.1>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id=log></div>
<script>
test(function() {
var arr = new Array;
assert_equals(arr.length, 0);
var called = 0;
Object.defineProperty(arr, 0, { get: function() { ++called; return 7 } });
assert_equals(arr.length, 1);
assert_equals(called, 0);
assert_equals(arr[0], 7);
assert_equals(called, 1);
assert_equals(String(arr), "7");
assert_equals(called, 2);
});
</script>

View file

@ -0,0 +1,86 @@
<!doctype html>
<title>Array.prototype.join</title>
<link rel=author href=mailto:Ms2ger@gmail.com title=Ms2ger>
<link rel=help href=http://es5.github.com/#x15.4.4.5>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id=log></div>
<script>
var test_error = { name: "test" };
// Step 1.
test(function() {
assert_throws(new TypeError(), function() {
[].join.call(null, {
toString: function() { assert_unreached(); }
});
});
assert_throws(new TypeError(), function() {
[].join.call(undefined, {
toString: function() { assert_unreached(); }
});
});
}, "Array.prototype.join must call ToObject before looking at the separator argument.")
var generateTest = function(throwing_getter, getter_name) {
var throwing_object = {};
var interfaces = [Boolean, Number];
var objects = interfaces.map(function(p) { return p.prototype; });
objects.push(throwing_object);
objects.forEach(function(object) {
Object.defineProperty(object, "length", {
get: throwing_getter,
configurable: true
});
});
[throwing_object, true, false, 0, 1, Math.PI].forEach(function(that) {
test(function() {
assert_throws(test_error, function() {
[].join.call(that, ",");
});
}, "Array.prototype.join must forward the exception from the this " +
"object's length property with this=" + format_value(that) + " and " +
"getter " + getter_name + ".")
test(function() {
assert_throws(test_error, function() {
[].join.call(that, {
toString: function() { assert_unreached(); }
});
});
}, "Array.prototype.join must get the this object's length property " +
"before looking at the separator argument with this=" +
format_value(that) + " and getter " + getter_name + ".")
});
interfaces.forEach(function(iface) {
delete iface.length;
});
}
// Step 2.
test(function() {
generateTest(function() { throw test_error; }, "function");
}, "Step 2.");
// Step 3.
test(function() {
generateTest(function() {
return {
valueOf: function() { throw test_error; }
};
}, "valueOf");
generateTest(function() {
return {
toString: function() { throw test_error; }
};
}, "toString");
generateTest(function() {
return {
valueOf: function() { throw test_error; },
toString: function() { assert_unreached("toString should not be invoked if valueOf exists"); }
};
}, "valueOf and toString");
}, "Step 3.");
</script>

View file

@ -0,0 +1,13 @@
<!doctype html>
<title>Math.max</title>
<link rel=author href=mailto:Ms2ger@gmail.com title=Ms2ger>
<link rel=help href=http://es5.github.com/#x15.8.2>
<link rel=help href=http://es5.github.com/#x15.8.2.11>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id=log></div>
<script src=Math.maxmin.js></script>
<script>
testMathMaxMin("max");
</script>

View file

@ -0,0 +1,57 @@
function testMathMaxMin(aFun) {
var test_error = { name: "test" };
test(function() {
assert_throws(test_error, function() {
Math[aFun](NaN, {
valueOf: function() {
throw test_error;
}
});
});
}, "ToNumber should be called on all arguments: NaN.");
test(function() {
assert_throws(test_error, function() {
Math[aFun](-Infinity, {
valueOf: function() {
throw test_error;
}
});
});
}, "ToNumber should be called on all arguments: -Infinity.");
test(function() {
assert_throws(test_error, function() {
Math[aFun](Infinity, {
valueOf: function() {
throw test_error;
}
});
});
}, "ToNumber should be called on all arguments: Infinity.");
test(function() {
assert_throws(test_error, function() {
Math[aFun]({
valueOf: function() {
throw test_error;
}
},
{
valueOf: function() {
throw 7;
}
});
});
}, "ToNumber should be called left to right.");
test(function() {
assert_equals(Math[aFun]("1"), 1);
}, "Should return a number.");
test(function() {
var expected = {
"max": 0,
"min": -0
}
assert_equals(Math[aFun](0, -0), expected[aFun]);
assert_equals(Math[aFun](-0, 0), expected[aFun]);
assert_equals(Math[aFun](0, 0), 0);
assert_equals(Math[aFun](-0, -0), -0);
}, "Should handle negative zero correctly.");
}

View file

@ -0,0 +1,13 @@
<!doctype html>
<title>Math.min</title>
<link rel=author href=mailto:Ms2ger@gmail.com title=Ms2ger>
<link rel=help href=http://es5.github.com/#x15.8.2>
<link rel=help href=http://es5.github.com/#x15.8.2.12>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id=log></div>
<script src=Math.maxmin.js></script>
<script>
testMathMaxMin("min");
</script>

View file

@ -0,0 +1,52 @@
<!doctype html>
<!--
Distributed under both the W3C Test Suite License [1] and the W3C
3-clause BSD License [2]. To contribute to a W3C Test Suite, see the
policies and contribution forms [3].
[1] http://www.w3.org/Consortium/Legal/2008/04-testsuite-license
[2] http://www.w3.org/Consortium/Legal/2008/03-bsd-license
[3] http://www.w3.org/2004/10/27-testcases
-->
<html>
<head>
<meta charset="utf-8">
<title>Object.freeze</title>
<link rel="author" title="Masaya Iseki" href="mailto:iseki.m.aa@gmail.com">
<link rel="help" href="https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.freeze">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
test(function() {
[{}, []].forEach(function(that) {
assert_false(Object.isFrozen(that));
that.prop = 'exist';
Object.freeze(that);
assert_false(Object.isExtensible(that));
assert_true(Object.isSealed(that));
assert_true(Object.isFrozen(that));
that.extension = 'This property should not be added';
assert_equals(undefined, that.extension, 'Confirm to prevent adding property.');
that.prop = 'changed';
assert_equals('exist', that.prop,
'Confirm to prevent changing a property value.');
delete that.prop;
assert_equals('exist', that.prop, 'Confirm to prevent deleting a property.');
});
});
test(function() {
['foo', 42, null, undefined].forEach(function(that) {
assert_throws(new TypeError(),
function() { Object.freeze(that) });
});
});
</script>
</body>
</html>

View file

@ -0,0 +1,21 @@
<!doctype html>
<title>Object.prototype.hasOwnProperty</title>
<link rel=author href=mailto:Ms2ger@gmail.com title=Ms2ger>
<link rel=help href=http://es5.github.com/#x15.4.4.5>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id=log></div>
<script>
var test_error = { name: "test" };
test(function() {
[null, undefined, {}].forEach(function(that) {
test(function() {
assert_throws(test_error, function() {
({}).hasOwnProperty.call(that, { toString: function() { throw test_error; } });
});
});
});
});
</script>

View file

@ -0,0 +1,44 @@
<!doctype html>
<!--
Distributed under both the W3C Test Suite License [1] and the W3C
3-clause BSD License [2]. To contribute to a W3C Test Suite, see the
policies and contribution forms [3].
[1] http://www.w3.org/Consortium/Legal/2008/04-testsuite-license
[2] http://www.w3.org/Consortium/Legal/2008/03-bsd-license
[3] http://www.w3.org/2004/10/27-testcases
-->
<html>
<head>
<meta charset="utf-8">
<title>Object.prototype.hasOwnProperty: Check prototype chain</title>
<link rel="author" title="Masaya Iseki" href="mailto:iseki.m.aa@gmail.com">
<link rel="help" href="https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.hasownproperty">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
test(function() {
[{}, []].forEach(function(that) {
that.prop = 'exists';
assert_true(that.hasOwnProperty('prop'));
assert_true('hasOwnProperty' in that);
assert_false(that.hasOwnProperty('hasOwnProperty'));
});
});
test(function() {
['foo', 42].forEach(function(that) {
assert_false(that.hasOwnProperty('hasOwnProperty'));
});
});
test(function() {
[null, undefined].forEach(function(that) {
assert_throws(new TypeError(),
function() { that.hasOwnProperty('hasOwnProperty'); });
});
});
</script>
</body>
</html>

View file

@ -0,0 +1,51 @@
<!doctype html>
<!--
Distributed under both the W3C Test Suite License [1] and the W3C
3-clause BSD License [2]. To contribute to a W3C Test Suite, see the
policies and contribution forms [3].
[1] http://www.w3.org/Consortium/Legal/2008/04-testsuite-license
[2] http://www.w3.org/Consortium/Legal/2008/03-bsd-license
[3] http://www.w3.org/2004/10/27-testcases
-->
<html>
<head>
<meta charset="utf-8">
<title>Object.preventExtensions</title>
<link rel="author" title="Masaya Iseki" href="mailto:iseki.m.aa@gmail.com">
<link rel="help" href="https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.preventextensions">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
test(function() {
[{}, []].forEach(function(that){
assert_true(Object.isExtensible(that));
that.prop = 'exist';
Object.preventExtensions(that);
assert_false(Object.isExtensible(that));
assert_false(Object.isFrozen(that));
assert_false(Object.isSealed(that));
that.extension = 'This property should not be added';
assert_equals(undefined, that.extension, 'Confirm to prevent adding property.');
that.prop = 'changed';
assert_equals('changed', that.prop,
'Confirm to be able to change a property value.');
delete that.prop;
assert_equals(undefined, that.prop, 'Confirm to be able to delete a property.');
});
});
test(function() {
['foo', 42, null, undefined].forEach(function(that) {
assert_throws(new TypeError(),
function() { Object.preventExtensions(that) });
});
});
</script>
</body>
</html>

View file

@ -0,0 +1,51 @@
<!doctype html>
<!--
Distributed under both the W3C Test Suite License [1] and the W3C
3-clause BSD License [2]. To contribute to a W3C Test Suite, see the
policies and contribution forms [3].
[1] http://www.w3.org/Consortium/Legal/2008/04-testsuite-license
[2] http://www.w3.org/Consortium/Legal/2008/03-bsd-license
[3] http://www.w3.org/2004/10/27-testcases
-->
<html>
<head>
<meta charset="utf-8">
<title>Object.seal</title>
<link rel="author" title="Masaya Iseki" href="mailto:iseki.m.aa@gmail.com">
<link rel="help" href="https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.seal">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
test(function() {
[{}, []].forEach(function(that) {
assert_false(Object.isSealed(that));
that.prop = 'exist';
Object.seal(that);
assert_false(Object.isExtensible(that));
assert_true(Object.isSealed(that));
assert_false(Object.isFrozen(that));
that.extension = 'This property should not be added';
assert_equals(undefined, that.extension, 'Confirm to prevent adding property.');
that.prop = 'changed';
assert_equals('changed', that.prop,
'Confirm to be able to change a property value.');
delete that.prop;
assert_equals('changed', that.prop, 'Confirm to prevent deleting a property.');
});
});
test(function() {
['foo', 42, null, undefined].forEach(function(that) {
assert_throws(new TypeError(),
function() { Object.seal(that) });
});
});
</script>
</body>
</html>

View file

@ -0,0 +1,122 @@
<!doctype html>
<title>WeakMap.prototype</title>
<link rel=author href=mailto:Ms2ger@gmail.com title=Ms2ger>
<link rel=help href=https://people.mozilla.org/~jorendorff/es6-draft.html#sec-properties-of-the-weakmap-prototype-object>
<link rel=help href=https://people.mozilla.org/~jorendorff/es6-draft.html#sec-functioninitialize>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id=log></div>
<script>
function assert_propdesc(obj, prop, Writable, Enumerable, Configurable) {
var propdesc = Object.getOwnPropertyDescriptor(obj, prop);
assert_equals(typeof propdesc, "object");
assert_equals(propdesc.writable, Writable, "[[Writable]]");
assert_equals(propdesc.enumerable, Enumerable, "[[Enumerable]]");
assert_equals(propdesc.configurable, Configurable, "[[Configurable]]");
}
function test_length(fun, expected) {
test(function() {
assert_propdesc(WeakMap.prototype[fun], "length", false, false, true);
assert_equals(WeakMap.prototype[fun].length, expected);
}, "WeakMap.prototype." + fun + ".length")
}
function test_thisval(fun, args) {
// Step 1-2
test(function() {
assert_throws(new TypeError(), function() {
WeakMap.prototype[fun].apply(null, args);
});
assert_throws(new TypeError(), function() {
WeakMap.prototype[fun].apply(undefined, args);
});
}, "WeakMap.prototype." + fun + ": ToObject on this")
// Step 3
test(function() {
assert_throws(new TypeError(), function() {
WeakMap.prototype[fun].apply({}, args);
});
}, "WeakMap.prototype." + fun + ": this has no [[WeakMapData]] internal property")
}
// In every case, the length property of a built-in Function object described
// in this clause has the attributes { [[Writable]]: false, [[Enumerable]]:
// false, [[Configurable]]: false }. Every other property described in this
// clause has the attributes { [[Writable]]: true, [[Enumerable]]: false,
// [[Configurable]]: true } unless otherwise specified.
test(function() {
assert_equals(Object.getPrototypeOf(WeakMap.prototype), Object.prototype);
}, "The value of the [[Prototype]] internal property of the WeakMap prototype object is the standard built-in Object prototype object (15.2.4).")
// 15.15.5.1 WeakMap.prototype.constructor
test(function() {
assert_equals(WeakMap.prototype.constructor, WeakMap);
assert_propdesc(WeakMap.prototype, "constructor", true, false, true);
}, "The initial value of WeakMap.prototype.constructor is the built-in WeakMap constructor.")
// 15.15.5.2 WeakMap.prototype.clear ()
test(function() {
assert_propdesc(WeakMap.prototype, "clear", true, false, true);
test_length("clear", 0);
// Step 1-3
test_thisval("clear", null);
// Step 4-5
test(function() {
var wm = new WeakMap();
var key = {};
wm.set(key, "fail");
assert_true(wm.has(key));
var res = wm.clear();
assert_equals(res, undefined);
assert_false(wm.has(key));
}, "WeakMap.prototype.clear: basic functionality");
}, "WeakMap.prototype.clear")
// 15.15.5.3 WeakMap.prototype.delete ( key )
test(function() {
assert_propdesc(WeakMap.prototype, "delete", true, false, true);
test_length("delete", 1);
// Step 1-3
test_thisval("delete", [{}]);
}, "WeakMap.prototype.delete")
// 15.15.5.4 WeakMap.prototype.get ( key )
test(function() {
assert_propdesc(WeakMap.prototype, "get", true, false, true);
test_length("get", 1);
// Step 1-3
test_thisval("get", [{}]);
// Step 8
test(function() {
var wm = new WeakMap();
var key = {};
var res = wm.get({}, {});
assert_equals(res, undefined);
}, "WeakMap.prototype.get: return undefined");
}, "WeakMap.prototype.get")
// 15.14.5.5 Map.prototype.has ( key )
test(function() {
assert_propdesc(WeakMap.prototype, "has", true, false, true);
test_length("has", 1);
// Step 1-3
test_thisval("has", [{}]);
}, "WeakMap.prototype.has")
// 15.14.5.6 Map.prototype.set ( key , value )
test(function() {
assert_propdesc(WeakMap.prototype, "set", true, false, true);
test_length("set", 2);
// Step 1-3
test_thisval("set", [{}, {}]);
}, "WeakMap.prototype.set")
// 15.15.5.7 Map.prototype.@@toStringTag
test(function() {
assert_class_string(new WeakMap(), "WeakMap");
assert_class_string(WeakMap.prototype, "WeakMap");
}, "WeakMap.prototype.@@toStringTag")
</script>