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

Unified Diff: test/webkit/fast/js/kde/exception_propagation.js

Issue 21070002: Migrate more tests from blink repository. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
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: test/webkit/fast/js/kde/exception_propagation.js
diff --git a/test/webkit/fast/js/kde/exception_propagation.js b/test/webkit/fast/js/kde/exception_propagation.js
new file mode 100644
index 0000000000000000000000000000000000000000..71be4f784ecba8a1113137d6cf90eb7dfffd53a9
--- /dev/null
+++ b/test/webkit/fast/js/kde/exception_propagation.js
@@ -0,0 +1,446 @@
+// Copyright 2013 the V8 project authors. All rights reserved.
+// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
+// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+description("KDE JS Test");
+var global = this;
+function myfunc() {
+}
+function throwex() {
+ throw new Error("test exception");
+}
+
+//---------------------------
+var func_ret_with_ex_func = 4;
+try {
+ func_ret_with_ex_func = throwex()();
+}
+catch (e) {
+}
+shouldBe("func_ret_with_ex_func", "4");
+
+// ---------------------------------
+
+var func_ret_from_ex_throw_args = 4;
+try {
+ func_ret_from_ex_throw_args = Math.abs(throwex());
+}
+catch (e) {
+}
+shouldBe("func_ret_from_ex_throw_args", "4");
+
+// ---------------------------------
+
+var set_from_throw_func_args = 4;
+try {
+ throwex()(set_from_throw_func_args = 1);
+}
+catch (e) {
+}
+shouldBe("set_from_throw_func_args","4");
+
+// ---------------------------------
+
+var set_from_func_throw_args = 4;
+try {
+ myfunc(throwex(), set_from_func_throw_args = 1);
+}
+catch (e) {
+}
+shouldBe("set_from_func_throw_args","4");
+
+// ---------------------------------
+
+var set_from_before_func_throw_args = 4;
+try {
+ myfunc(set_from_before_func_throw_args = 1, throwex());
+}
+catch (e) {
+}
+shouldBe("set_from_before_func_throw_args","1");
+
+// ---------------------------------
+
+// ### move to function.js
+var function_param_order = "";
+function aparam() {
+ function_param_order += "a";
+}
+function bparam() {
+ function_param_order += "b";
+}
+function cparam() {
+ function_param_order += "c";
+}
+myfunc(aparam(),bparam(),cparam());
+shouldBe("function_param_order","'abc'");
+
+// ---------------------------------
+// ### move to function.js
+var new_param_order = "";
+function anewparam() {
+ new_param_order += "a";
+}
+function bnewparam() {
+ new_param_order += "b";
+}
+function cnewparam() {
+ new_param_order += "c";
+}
+new myfunc(anewparam(),bnewparam(),cnewparam());
+shouldBe("new_param_order","'abc'");
+
+// ---------------------------------
+// ### move to function.js
+var elision_param_order = "";
+function aelision() {
+ elision_param_order += "a";
+}
+function belision() {
+ elision_param_order += "b";
+}
+function celision() {
+ elision_param_order += "c";
+}
+[aelision(),belision(),celision()];
+shouldBe("elision_param_order","'abc'");
+
+// ---------------------------------
+// ### move to function.js
+var comma_order = "";
+function acomma() {
+ comma_order += "a";
+}
+function bcomma() {
+ comma_order += "b";
+}
+function ccomma() {
+ comma_order += "c";
+}
+acomma(),bcomma(),ccomma();
+shouldBe("comma_order","'abc'");
+
+// ---------------------------------
+
+function checkOperator(op,name) {
+ var code =(
+ "global."+name+"_part1 = 4;\n"+
+ "try {\n"+
+ " ("+name+"_part1 = 1) "+op+" throwex();\n"+
+ "}\n"+
+ "catch (e) {\n"+
+ "}\n"+
+ "shouldBe('"+name+"_part1', '1');\n"+
+ "global."+name+"_part2 = 4;\n"+
+ "try {\n"+
+ " throwex() "+op+" ("+name+"_part2 = 1);\n"+
+ "}\n"+
+ "catch (e) {\n"+
+ "}\n"+
+ "shouldBe('"+name+"_part2', '4');\n");
+// print("\n\n\n");
+// print(code);
+ eval(code);
+}
+
+checkOperator("==","OpEqEq");
+checkOperator("!=","OpNotEq");
+checkOperator("===","OpStrEq");
+checkOperator("!==","OpStrNEq");
+// ### these generate a syntax error in mozilla - kjs should do the same (?)
+//checkOperator("+=","OpPlusEq");
+//checkOperator("-=","OpMinusEq");
+//checkOperator("*=","OpMultEq");
+//checkOperator("/=","OpDivEq");
+// OpPlusPlus,
+//                 OpMinusMinus,
+checkOperator("<","OpLess");
+checkOperator("<=","OpLessEq");
+checkOperator(">","OpGreater");
+checkOperator(">=","OpGreaterEq");
+//checkOperator("&=","OpAndEq");
+//checkOperator("^=","OpXOrEq");
+//checkOperator("|=","OpOrEq");
+//checkOperator("%=","OpModEq");
+checkOperator("&&","OpAnd");
+checkOperator("||","OpOr");
+checkOperator("&","OpBitAnd");
+checkOperator("^","OpBitXOr");
+checkOperator("|","OpBitOr");
+checkOperator("<<","OpLShift");
+checkOperator(">>","OpRShift");
+checkOperator(">>>","OpURShift");
+//                 OpIn,
+checkOperator("instanceof","OpInstanceOf");
+
+// ---------------------------------
+var set_from_if_stmt = 4;
+try {
+ if (throwex()) {
+ set_from_if_stmt = 1;
+ }
+}
+catch (e) {
+}
+shouldBe("set_from_if_stmt","4");
+
+// ---------------------------------
+var set_from_if_else_stmt = 4;
+try {
+ if (throwex()) {
+ set_from_if_else_stmt = 1;
+ }
+ else {
+ undefined;
+ }
+}
+catch (e) {
+}
+shouldBe("set_from_if_else_stmt","4");
+
+// ---------------------------------
+
+var set_from_else_in_if_else_stmt = 4;
+try {
+ if (throwex()) {
+ undefined;
+ }
+ else {
+ set_from_else_in_if_else_stmt = 1;
+ }
+}
+catch (e) {
+}
+shouldBe("set_from_else_in_if_else_stmt","4");
+
+// ---------------------------------
+
+var comma_left = 4;
+try {
+ comma_left = 1, throwex();
+}
+catch (e) {
+}
+shouldBe("comma_left","1");
+
+// ---------------------------------
+
+var comma_left = 4;
+try {
+ throwex(), comma_left = 1;
+}
+catch (e) {
+}
+shouldBe("comma_left","4");
+
+var vardecl_assign_throws = 4;
+try {
+ var vardecl_assign_throws = throwex();
+}
+catch (e) {
+}
+shouldBe("vardecl_assign_throws","4");
+
+// ---------------------------------
+
+var var_assign_before_throw_run = false;
+function var_assign_before_throw() {
+ var_assign_before_throw_run = true;
+ return 1;
+}
+
+var var_assign_after_throw_run = false;
+function var_assign_after_throw() {
+ var_assign_after_throw_run = true;
+ return 1;
+}
+
+try {
+ var var_assign1 = var_assign_before_throw(),
+ var_assign2 = throwex(),
+ var_assign1 = var_assign_before_throw();
+}
+catch (e) {
+}
+shouldBe("var_assign_before_throw_run","true");
+shouldBe("var_assign_after_throw_run","false");
+
+// ---------------------------------
+
+var do_val = 4;
+try {
+ do {
+ do_val++;
+ }
+ while (throwex());
+}
+catch (e) {
+}
+shouldBe("do_val","5");
+
+// ---------------------------------
+var while_val = 4;
+try {
+ while (throwex()) {
+ while_val++;
+ }
+}
+catch (e) {
+}
+shouldBe("while_val","4");
+
+// ---------------------------------
+var for_val_part1_throw2 = 4;
+try {
+ for (for_val_part1_throw2 = 1; throwex(); ) {
+ }
+}
+catch (e) {
+}
+shouldBe("for_val_part1_throw2","1");
+
+// ---------------------------------
+var for_val_part1_throw3 = 4;
+try {
+ for (for_val_part1_throw3 = 1; ; throwex()) {
+ }
+}
+catch (e) {
+}
+shouldBe("for_val_part1_throw3","1");
+
+// ---------------------------------
+var for_val_part2_throw1 = 4;
+try {
+ for (throwex(); for_val_part2_throw1 = 1; ) {
+ }
+}
+catch (e) {
+}
+shouldBe("for_val_part2_throw1","4");
+
+// ---------------------------------
+var for_val_part2_throw3 = 4;
+try {
+ for (; for_val_part2_throw3 = 1; throwex()) {
+ }
+}
+catch (e) {
+}
+shouldBe("for_val_part2_throw3","1");
+
+// ---------------------------------
+var for_val_part3_throw1 = 4;
+try {
+ for (throwex(); ; for_val_part3_throw1 = 1) {
+ }
+}
+catch (e) {
+}
+shouldBe("for_val_part3_throw1","4");
+
+// ---------------------------------
+var for_val_part3_throw2 = 4;
+try {
+ for (; throwex(); for_val_part3_throw2 = 1) {
+ }
+}
+catch (e) {
+}
+shouldBe("for_val_part3_throw2","4");
+
+// ---------------------------------
+var for_val_part1_throwbody = 4;
+try {
+ for (for_val_part1_throwbody = 1; ;) {
+ throwex();
+ }
+}
+catch (e) {
+}
+shouldBe("for_val_part1_throwbody","1");
+
+// ---------------------------------
+var for_val_part2_throwbody = 4;
+try {
+ for (; for_val_part2_throwbody = 1; ) {
+ throwex();
+ }
+}
+catch (e) {
+}
+shouldBe("for_val_part2_throwbody","1");
+
+// ---------------------------------
+var for_val_part3_throwbody = 4;
+try {
+ for (; ; for_val_part3_throwbody = 1) {
+ throwex();
+ }
+}
+catch (e) {
+}
+shouldBe("for_val_part3_throwbody","4");
+
+// ---------------------------------
+var forin_test_obj = new Object();
+forin_test_obj.a = 1;
+forin_test_obj.b = 2;
+forin_test_obj.c = 3;
+var forin_count = 4;
+function forin_lexpr() {
+// if (forincount == 1);
+// throwex();
+ return new Object();
+}
+try {
+ for (throwex() in forin_test_obj) {
+ forin_count++;
+ }
+}
+catch (e) {
+}
+shouldBe("forin_count","4");
+
+// ---------------------------------
+var set_inside_with_throw = 4;
+try {
+ with (throwex()) {
+ set_inside_with_throw = 1;
+ }
+}
+catch (e) {
+}
+shouldBe("set_inside_with_throw","4");
+
+// ---------------------------------
+var set_inside_with_cantconverttoobject = 4;
+try {
+ with (undefined) {
+ print("FAIL. This message should not be displayed");
+ set_inside_with_cantconverttoobject = 1;
+ }
+}
+catch (e) {
+}
+shouldBe("set_inside_with_cantconverttoobject","4");
+// ### test case, sw
« no previous file with comments | « test/webkit/fast/js/kde/evil-n-expected.txt ('k') | test/webkit/fast/js/kde/exception_propagation-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698