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

Side by Side Diff: third_party/WebKit/LayoutTests/imported/web-platform-tests/html/dom/reflection.js

Issue 1453993002: update-w3c-deps import using blink cc6d84edb87e89c363ab48dac8a983213b9dc02c: (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Skip imported/web-platform-tests/html/webappapis/scripting/events/onerroreventhandler.html Created 5 years, 1 month 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
OLDNEW
1 ReflectionTests = {}; 1 ReflectionTests = {};
2 2
3 ReflectionTests.start = new Date().getTime(); 3 ReflectionTests.start = new Date().getTime();
4 4
5 /** 5 /**
6 * Resolve the given URL to an absolute URL, relative to the current document's 6 * Resolve the given URL to an absolute URL, relative to the current document's
7 * address. There's no API that I know of that exposes this directly, so we 7 * address. There's no API that I know of that exposes this directly, so we
8 * actually just create an <a> element, set its href, and stitch together the 8 * actually just create an <a> element, set its href, and stitch together the
9 * various properties. Seems to work. We don't try to reimplement the 9 * various properties. Seems to work. We don't try to reimplement the
10 * algorithm here, because we're not concerned with its correctness -- we're 10 * algorithm here, because we're not concerned with its correctness -- we're
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 * "domExpected": What values to expect with IDL get after setAttribute(). 132 * "domExpected": What values to expect with IDL get after setAttribute().
133 * Defaults to the same as domTests. 133 * Defaults to the same as domTests.
134 * "idlTests": What values to test with IDL set. Defaults to domTests. 134 * "idlTests": What values to test with IDL set. Defaults to domTests.
135 * "idlDomExpected": What to expect from getAttribute() after IDL set. 135 * "idlDomExpected": What to expect from getAttribute() after IDL set.
136 * Defaults to idlTests. 136 * Defaults to idlTests.
137 * "idlIdlExpected": What to expect from IDL get after IDL set. Defaults to 137 * "idlIdlExpected": What to expect from IDL get after IDL set. Defaults to
138 * idlDomExpected. 138 * idlDomExpected.
139 * 139 *
140 * Note that all tests/expected values are only baselines, and can be expanded 140 * Note that all tests/expected values are only baselines, and can be expanded
141 * with additional tests hardcoded into the function for particular types if 141 * with additional tests hardcoded into the function for particular types if
142 * necessary (e.g., enum). null means "default" as a DOM expected value, and 142 * necessary. For example, a special codepath is used for enums, and for
143 * "throw an INDEX_SIZE_ERR exception" as an IDL expected value. (This is a 143 * IDL setters which throw an exception. null means "defaultVal" is the
144 * kind of stupid and fragile convention, but it's simple and works for now.) 144 * expected value. Expected DOM values are cast to strings by adding "".
145 * Expected DOM values are cast to strings by adding "".
146 * 145 *
147 * TODO: Test strings that aren't valid UTF-16. Desired behavior is not clear 146 * TODO: Test strings that aren't valid UTF-16. Desired behavior is not clear
148 * here at the time of writing, see 147 * here at the time of writing, see
149 * http://www.w3.org/Bugs/Public/show_bug.cgi?id=12100 148 * http://www.w3.org/Bugs/Public/show_bug.cgi?id=12100
150 * 149 *
151 * TODO: Test deleting an IDL attribute, and maybe doing other fun stuff to it. 150 * TODO: Test deleting an IDL attribute, and maybe doing other fun stuff to it.
152 * 151 *
153 * TODO: Test IDL sets of integer types to out-of-range or other weird values. 152 * TODO: Test IDL sets of integer types to out-of-range or other weird values.
154 * WebIDL says to wrap, but I'm not sure offhand if that's what we want. 153 * WebIDL says to wrap, but I'm not sure offhand if that's what we want.
155 * 154 *
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 -Infinity, "\0", 371 -Infinity, "\0",
373 {toString:function() {return 2;}, valueOf: null}, 372 {toString:function() {return 2;}, valueOf: null},
374 {valueOf:function() {return 3;}}], 373 {valueOf:function() {return 3;}}],
375 "domExpected": function(val) { 374 "domExpected": function(val) {
376 var parsed = ReflectionTests.parseNonneg(String(val)); 375 var parsed = ReflectionTests.parseNonneg(String(val));
377 if (parsed === false || parsed > maxInt || parsed < minInt) { 376 if (parsed === false || parsed > maxInt || parsed < minInt) {
378 return null; 377 return null;
379 } 378 }
380 return parsed; 379 return parsed;
381 }, 380 },
382 "idlTests": [minInt, -36, -1, 0, 1, maxInt], 381 "idlTests": [minInt, -36, -1, 0, 1, maxInt],
383 "idlDomExpected": [null, null, null, 0, 1, maxInt] 382 "idlDomExpected": [null/*exception*/, null/*exception*/, null/*exception */, 0, 1, maxInt]
384 }, 383 },
385 /** 384 /**
386 * "If a reflecting IDL attribute is an unsigned integer type (unsigned 385 * "If a reflecting IDL attribute is an unsigned integer type (unsigned
387 * long) then, on getting, the content attribute must be parsed according 386 * long) then, on getting, the content attribute must be parsed according
388 * to the rules for parsing non-negative integers, and if that is 387 * to the rules for parsing non-negative integers, and if that is
389 * successful, and the value is in the range 0 to 2147483647 inclusive, the 388 * successful, and the value is in the range 0 to 2147483647 inclusive, the
390 * resulting value must be returned. If, on the other hand, it fails or 389 * resulting value must be returned. If, on the other hand, it fails or
391 * returns an out of range value, or if the attribute is absent, the 390 * returns an out of range value, or if the attribute is absent, the
392 * default value must be returned instead, or 0 if there is no default 391 * default value must be returned instead, or 0 if there is no default
393 * value. On setting, the given value must be converted to the shortest 392 * value. On setting, the given value must be converted to the shortest
(...skipping 15 matching lines...) Expand all
409 {toString:function() {return 2;}, valueOf: null}, 408 {toString:function() {return 2;}, valueOf: null},
410 {valueOf:function() {return 3;}}], 409 {valueOf:function() {return 3;}}],
411 "domExpected": function(val) { 410 "domExpected": function(val) {
412 var parsed = ReflectionTests.parseNonneg(String(val)); 411 var parsed = ReflectionTests.parseNonneg(String(val));
413 // Note maxInt, not maxUnsigned. 412 // Note maxInt, not maxUnsigned.
414 if (parsed === false || parsed < 0 || parsed > maxInt) { 413 if (parsed === false || parsed < 0 || parsed > maxInt) {
415 return null; 414 return null;
416 } 415 }
417 return parsed; 416 return parsed;
418 }, 417 },
419 "idlTests": [0, 1, 257, 2147483647, "-0"], 418 "idlTests": [0, 1, 257, maxInt, "-0", maxInt + 1, maxUnsigned],
420 "idlIdlExpected": [0, 1, 257, 2147483647, 0] 419 "idlIdlExpected": [0, 1, 257, maxInt, 0, null, null],
420 "idlDomExpected": [0, 1, 257, maxInt, 0, null, null],
421 }, 421 },
422 /** 422 /**
423 * "If a reflecting IDL attribute is an unsigned integer type (unsigned 423 * "If a reflecting IDL attribute is an unsigned integer type (unsigned
424 * long) that is limited to only non-negative numbers greater than zero, 424 * long) that is limited to only non-negative numbers greater than zero,
425 * then the behavior is similar to the previous case, but zero is not 425 * then the behavior is similar to the previous case, but zero is not
426 * allowed. On getting, the content attribute must first be parsed 426 * allowed. On getting, the content attribute must first be parsed
427 * according to the rules for parsing non-negative integers, and if that is 427 * according to the rules for parsing non-negative integers, and if that is
428 * successful, and the value is in the range 1 to 2147483647 inclusive, the 428 * successful, and the value is in the range 1 to 2147483647 inclusive, the
429 * resulting value must be returned. If, on the other hand, it fails or 429 * resulting value must be returned. If, on the other hand, it fails or
430 * returns an out of range value, or if the attribute is absent, the 430 * returns an out of range value, or if the attribute is absent, the
(...skipping 19 matching lines...) Expand all
450 {toString:function() {return 2;}, valueOf: null}, 450 {toString:function() {return 2;}, valueOf: null},
451 {valueOf:function() {return 3;}}], 451 {valueOf:function() {return 3;}}],
452 "domExpected": function(val) { 452 "domExpected": function(val) {
453 var parsed = ReflectionTests.parseNonneg(String(val)); 453 var parsed = ReflectionTests.parseNonneg(String(val));
454 // Note maxInt, not maxUnsigned. 454 // Note maxInt, not maxUnsigned.
455 if (parsed === false || parsed < 1 || parsed > maxInt) { 455 if (parsed === false || parsed < 1 || parsed > maxInt) {
456 return null; 456 return null;
457 } 457 }
458 return parsed; 458 return parsed;
459 }, 459 },
460 "idlTests": [0, 1, 2147483647], 460 "idlTests": [0, 1, maxInt, maxInt + 1, maxUnsigned],
461 "idlDomExpected": [null, 1, 2147483647] 461 "idlDomExpected": [null/*exception*/, 1, maxInt, null, null]
462 }, 462 },
463 /** 463 /**
464 * "If a reflecting IDL attribute is a floating point number type (double), 464 * "If a reflecting IDL attribute is a floating point number type (double),
465 * then, on getting, the content attribute must be parsed according to the 465 * then, on getting, the content attribute must be parsed according to the
466 * rules for parsing floating point number values, and if that is 466 * rules for parsing floating point number values, and if that is
467 * successful, the resulting value must be returned. If, on the other hand, 467 * successful, the resulting value must be returned. If, on the other hand,
468 * it fails, or if the attribute is absent, the default value must be 468 * it fails, or if the attribute is absent, the default value must be
469 * returned instead, or 0.0 if there is no default value. On setting, the 469 * returned instead, or 0.0 if there is no default value. On setting, the
470 * given value must be converted to the best representation of the number 470 * given value must be converted to the best representation of the number
471 * as a floating point number and then that string must be used as the new 471 * as a floating point number and then that string must be used as the new
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 if (defaultVal === undefined) { 603 if (defaultVal === undefined) {
604 defaultVal = typeInfo.defaultVal; 604 defaultVal = typeInfo.defaultVal;
605 } 605 }
606 if (defaultVal !== null) { 606 if (defaultVal !== null) {
607 ReflectionHarness.test(idlObj[idlName], defaultVal, "IDL get with DOM at tribute unset"); 607 ReflectionHarness.test(idlObj[idlName], defaultVal, "IDL get with DOM at tribute unset");
608 } 608 }
609 609
610 var domTests = typeInfo.domTests.slice(0); 610 var domTests = typeInfo.domTests.slice(0);
611 var domExpected = typeInfo.domExpected.map(function(val) { return val === nu ll ? defaultVal : val; }); 611 var domExpected = typeInfo.domExpected.map(function(val) { return val === nu ll ? defaultVal : val; });
612 var idlTests = typeInfo.idlTests.slice(0); 612 var idlTests = typeInfo.idlTests.slice(0);
613 var idlDomExpected = typeInfo.idlDomExpected.slice(0); 613 var idlDomExpected = typeInfo.idlDomExpected.map(function(val) { return val === null ? defaultVal : val; });
614 var idlIdlExpected = typeInfo.idlIdlExpected.slice(0); 614 var idlIdlExpected = typeInfo.idlIdlExpected.map(function(val) { return val === null ? defaultVal : val; });
615 switch (data.type) { 615 switch (data.type) {
616 // Extra tests and other special-casing 616 // Extra tests and other special-casing
617 case "boolean": 617 case "boolean":
618 domTests.push(domName); 618 domTests.push(domName);
619 domExpected.push(true); 619 domExpected.push(true);
620 break; 620 break;
621 621
622 case "enum": 622 case "enum":
623 // Whee, enum is complicated. 623 // Whee, enum is complicated.
624 if (typeof data.invalidVal == "undefined") { 624 if (typeof data.invalidVal == "undefined") {
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 if (ReflectionHarness.catchUnexpectedExceptions) { 705 if (ReflectionHarness.catchUnexpectedExceptions) {
706 ReflectionHarness.failure("Exception thrown during tests wit h setAttribute() to " + ReflectionHarness.stringRep(domTests[i])); 706 ReflectionHarness.failure("Exception thrown during tests wit h setAttribute() to " + ReflectionHarness.stringRep(domTests[i]));
707 } else { 707 } else {
708 throw err; 708 throw err;
709 } 709 }
710 } 710 }
711 } 711 }
712 } 712 }
713 713
714 for (var i = 0; i < idlTests.length; i++) { 714 for (var i = 0; i < idlTests.length; i++) {
715 if (idlDomExpected[i] === null && data.type != "enum") { 715 if ((data.type == "limited long" && idlTests[i] < 0) ||
716 (data.type == "limited unsigned long" && idlTests[i] == 0)) {
716 ReflectionHarness.testException("INDEX_SIZE_ERR", function() { 717 ReflectionHarness.testException("INDEX_SIZE_ERR", function() {
717 idlObj[idlName] = idlTests[i]; 718 idlObj[idlName] = idlTests[i];
718 }, "IDL set to " + ReflectionHarness.stringRep(idlTests[i]) + " must throw INDEX_SIZE_ERR"); 719 }, "IDL set to " + ReflectionHarness.stringRep(idlTests[i]) + " must throw INDEX_SIZE_ERR");
719 } else { 720 } else {
720 ReflectionHarness.run(function() { 721 ReflectionHarness.run(function() {
721 idlObj[idlName] = idlTests[i]; 722 idlObj[idlName] = idlTests[i];
722 if (data.type == "boolean") { 723 if (data.type == "boolean") {
723 // Special case yay 724 // Special case yay
724 ReflectionHarness.test(domObj.hasAttribute(domName), Boolean (idlTests[i]), "IDL set to " + ReflectionHarness.stringRep(idlTests[i]) + " foll owed by hasAttribute()"); 725 ReflectionHarness.test(domObj.hasAttribute(domName), Boolean (idlTests[i]), "IDL set to " + ReflectionHarness.stringRep(idlTests[i]) + " foll owed by hasAttribute()");
725 } else if (idlDomExpected[i] !== null) { 726 } else if (idlDomExpected[i] !== null) {
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
800 var time = document.getElementById("time"); 801 var time = document.getElementById("time");
801 if (time) { 802 if (time) {
802 time.innerHTML = (new Date().getTime() - ReflectionTests.start)/1000; 803 time.innerHTML = (new Date().getTime() - ReflectionTests.start)/1000;
803 } 804 }
804 805
805 if (unimplemented.length) { 806 if (unimplemented.length) {
806 var p = document.createElement("p"); 807 var p = document.createElement("p");
807 p.textContent = "(Note: missing tests for types " + unimplemented.join(", ") + ".)"; 808 p.textContent = "(Note: missing tests for types " + unimplemented.join(", ") + ".)";
808 document.body.appendChild(p); 809 document.body.appendChild(p);
809 } 810 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698