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

Unified Diff: LayoutTests/fast/css/variables/cssom-foreach.html

Issue 21006006: Add forEach() to CSSVariablesMap (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 5 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
Index: LayoutTests/fast/css/variables/cssom-foreach.html
diff --git a/LayoutTests/fast/css/variables/cssom-foreach.html b/LayoutTests/fast/css/variables/cssom-foreach.html
new file mode 100644
index 0000000000000000000000000000000000000000..92ab8b0af1142d8fb7414c0edd31404b7b8e2553
--- /dev/null
+++ b/LayoutTests/fast/css/variables/cssom-foreach.html
@@ -0,0 +1,213 @@
+<script>
+if (window.testRunner)
+ testRunner.dumpAsText();
+</script>
+
+<div id="test"></div>
+<pre id="output"></pre>
+
+<script>
+var div = document.querySelector("#test");
+var output = document.querySelector("#output");
+var forEachValues = [];
+
+function checkForEachValues(expectedValues) {
+ if (forEachValues.length !== expectedValues.length)
+ return false;
+ for (var i = 0; i < forEachValues.length; i++) {
+ if (forEachValues[i][0] !== expectedValues[i][0] || forEachValues[i][1] !== expectedValues[i][1])
+ return false;
+ }
+ return true;
+}
+
+function checkForEachValuesAndOutput(expectedValues) {
+ if (checkForEachValues(expectedValues)) {
+ output.innerText += "pass\n";
+ } else {
+ output.innerText += "fail\n";
+ function outputItem(item) { output.innerText += " " + item[0] + ": " + item[1] + "\n"; }
arv (Not doing code reviews) 2013/07/31 16:45:24 new line after {
alancutter (OOO until 2018) 2013/08/05 09:33:49 Done.
+ output.innerText += " expected:\n";
+ expectedValues.forEach(outputItem);
+ output.innerText += " actual:\n";
+ forEachValues.forEach(outputItem);
+ }
+}
+
+output.innerText += "Test calling forEach with no parameters: ";
+try {
+ div.style.var.forEach();
+ output.innerText += "fail";
+}
+catch (error) {
+ output.innerText += error;
+}
+output.innerText += "\n";
+
+output.innerText += "Test calling forEach with non-function as first argument: ";
+try {
+ div.style.var.forEach({});
+ output.innerText += "fail";
+}
+catch (error) {
+ output.innerText += error;
+}
+output.innerText += "\n";
+
+output.innerText += "Test calling forEach with thisArg specified: ";
+div.style.var.clear();
+div.style.var.set("existing", "pass");
+window.x = "fail";
+div.style.var.forEach(function() {
+ output.innerText += this.x;
+}, {x: "pass"});
+output.innerText += "\n";
+
+output.innerText += "Test adding variable in forEach: ";
+forEachValues = [];
+div.style.var.forEach(function(value, name, varMap) {
+ forEachValues.push([name, value]);
+ if (name === "existing") {
+ varMap.set("added", "pass");
+ }
+});
+checkForEachValuesAndOutput([
+ ["existing", "pass"],
+ ["added", "pass"],
+]);
+
+output.innerText += "Test deleting in forEach: ";
+div.style.var.clear();
+div.style.var.set("existing", "pass");
+div.style.var.set("toDelete", "fail");
+forEachValues = [];
+div.style.var.forEach(function(value, name, varMap) {
+ forEachValues.push([name, value]);
+ if (name === "existing") {
+ varMap.delete("toDelete");
+ }
+});
+checkForEachValuesAndOutput([
+ ["existing", "pass"],
+]);
+
+output.innerText += "Test clearing in forEach: ";
+div.style.var.clear();
+div.style.var.set("existing", "pass");
+div.style.var.set("toClear", "fail");
+forEachValues = [];
+div.style.var.forEach(function(value, name, varMap) {
+ forEachValues.push([name, value]);
+ if (name === "existing") {
+ varMap.clear();
+ }
+});
+checkForEachValuesAndOutput([
+ ["existing", "pass"],
+]);
+
+output.innerText += "Test adding then deleting in forEach: ";
+div.style.var.clear();
+div.style.var.set("existing", "pass");
+forEachValues = [];
+div.style.var.forEach(function(value, name, varMap) {
+ forEachValues.push([name, value]);
+ if (name === "existing") {
+ varMap.set("toDelete", "fail");
+ varMap.delete("toDelete");
+ }
+});
+checkForEachValuesAndOutput([
+ ["existing", "pass"],
+]);
+
+output.innerText += "Test adding then clearing in forEach: ";
+div.style.var.clear();
+div.style.var.set("existing", "pass");
+forEachValues = [];
+div.style.var.forEach(function(value, name, varMap) {
+ forEachValues.push([name, value]);
+ if (name === "existing") {
+ varMap.set("toClear", "fail");
+ varMap.clear("toClear");
+ }
+});
+checkForEachValuesAndOutput([
+ ["existing", "pass"],
+]);
+
+output.innerText += "Test deleting then adding in forEach: ";
+div.style.var.clear();
+div.style.var.set("existing", "pass");
+div.style.var.set("toDelete", "fail");
+forEachValues = [];
+div.style.var.forEach(function(value, name, varMap) {
+ forEachValues.push([name, value]);
+ if (name === "existing") {
+ varMap.delete("toDelete");
+ varMap.set("added", "pass");
+ }
+});
+checkForEachValuesAndOutput([
+ ["existing", "pass"],
+ ["added", "pass"],
+]);
+
+output.innerText += "Test clearing then adding in forEach: ";
+div.style.var.clear();
+div.style.var.set("existing", "pass");
+forEachValues = [];
+div.style.var.forEach(function(value, name, varMap) {
+ forEachValues.push([name, value]);
+ if (name === "existing") {
+ varMap.clear();
+ varMap.set("added", "pass");
+ }
+});
+checkForEachValuesAndOutput([
+ ["existing", "pass"],
+ ["added", "pass"],
+]);
+
+output.innerText += "Test updating visited variable in forEach: ";
+div.style.var.clear();
+div.style.var.set("existingA", "pass");
+div.style.var.set("existingB", "pass");
+forEachValues = [];
+div.style.var.forEach(function(value, name, varMap) {
+ forEachValues.push([name, value]);
+ if (name === "existingB") {
+ varMap.set("existingA", "fail");
+ }
+});
+checkForEachValuesAndOutput([
+ ["existingA", "pass"],
+ ["existingB", "pass"],
+]);
+
+output.innerText += "Test nested forEach calls with addition and deletion: ";
+div.style.var.clear();
+div.style.var.set("existingA", "pass");
+div.style.var.set("existingB", "pass");
+forEachValues = [];
+div.style.var.forEach(function(value, name, varMap) {
+ forEachValues.push([name, value]);
+ varMap.forEach(function(innerValue, innerName) {
+ forEachValues.push([" " + innerName, innerValue]);
+ if (name === "existingA" && innerName === "existingB") {
+ varMap.delete("existingB");
+ varMap.set("innerAdded", "pass");
+ }
+ });
+});
+checkForEachValuesAndOutput([
+ ["existingA", "pass"],
+ [" existingA", "pass"],
+ [" existingB", "pass"],
+ [" innerAdded", "pass"],
+ ["innerAdded", "pass"],
+ [" existingA", "pass"],
+ [" innerAdded", "pass"],
+]);
+
+</script>

Powered by Google App Engine
This is Rietveld 408576698