diff --git a/tests/jerry/arguments-parse.js b/tests/jerry/arguments-parse.js new file mode 100644 index 0000000000..f67d45f146 --- /dev/null +++ b/tests/jerry/arguments-parse.js @@ -0,0 +1,35 @@ +// Copyright JS Foundation and other contributors, http://js.foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +function check_parse_error (txt) { + try { + eval (txt) + assert (false) + } catch (e) { + assert (e instanceof SyntaxError) + } +} + +function f_args (a,b,c) { + return arguments; +} + +check_parse_error ("f_args (1 2 3)"); +check_parse_error ("f_args (1; 2; 3)"); +check_parse_error ("f_args (())"); +check_parse_error ("f_args (1, 2, 3"); +check_parse_error ("f_args 1, 2, 3)"); +check_parse_error ("f_args 1, 2, 3"); +check_parse_error ("f_args 1; 2; 3"); +check_parse_error ("f_args{1, 2, 3}"); diff --git a/tests/jerry/arithmetic-parse.js b/tests/jerry/arithmetic-parse.js new file mode 100644 index 0000000000..81e6c5fa17 --- /dev/null +++ b/tests/jerry/arithmetic-parse.js @@ -0,0 +1,43 @@ +// Copyright JS Foundation and other contributors, http://js.foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +function parse (txt) { + try { + eval (txt) + assert (false) + } catch (e) { + assert (e instanceof SyntaxError) + } +} + +var a = 21; +var b = 10; +var c; + +parse ("c = a++b"); +parse ("c = a--b"); + +parse ("c = a +* b"); +parse ("c = a -* b"); +parse ("c = a +/ b"); +parse ("c = a -/ b"); +parse ("c = a +% b"); +parse ("c = a -% b"); + +parse ("a =* b"); +parse ("a =/ b"); +parse ("a =% b"); + +parse ("c = a+"); +parse ("c = a-"); diff --git a/tests/jerry/for-in-parse.js b/tests/jerry/for-in-parse.js new file mode 100644 index 0000000000..7dcee6dd1e --- /dev/null +++ b/tests/jerry/for-in-parse.js @@ -0,0 +1,44 @@ +// Copyright JS Foundation and other contributors, http://js.foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +function parse (txt) { + try { + eval (txt) + assert (false) + } catch (e) { + assert (e instanceof SyntaxError) + } +} + +var obj = {a: 1, b: 2, c:3, d:4}; + +var forIn = + "for var prop in obj" + + " obj [prop] += 4" +parse (forIn) + +var forIn = + "for [var prop in obj]" + + " obj[prop] += 4;" +parse (forIn) + +var forIn = + "for (var prop obj)" + + " obj[prop] += 4;" +parse (forIn) + +var forIn = + "foreach (var prop in obj)" + + " obj[prop] += 4;" +parse (forIn) diff --git a/tests/jerry/for-parse.js b/tests/jerry/for-parse.js new file mode 100644 index 0000000000..9ca5963e57 --- /dev/null +++ b/tests/jerry/for-parse.js @@ -0,0 +1,43 @@ +// Copyright JS Foundation and other contributors, http://js.foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +function parse(txt) { + try { + eval(txt) + assert(false) + } catch (e) { + assert(e instanceof SyntaxError) + } +} + +parse("for (;;;) print('hello')") +parse("for (,,) print('hello')") +parse("for (i = 0; i < 10; i++; ) print('i: ' + i)") +parse("for (i = 0; i < 10; i++)") +parse("for i = 0; i < 10; i++ {}") +parse("for (i = 0;; i < 10; i++) {}") +parse("for (i = 0; j = 1; i < 10; i++) print('i: '+ i + ' j: ' + j)") +parse("for (i = 0 j = 5;i<10 || j<10; i++, j++) {}") +parse("for (i = 0, j = 5; i < 10 || j < 10; i++ j++) {}") +parse("for (i = 0, j = 5; i < 10 j < 10; i++, j++) {}") + +var doubleFor = +"for (i = 0; i < 5; i++) { "+ +" for (j = 0; j < 5; j++) { print('i: ' + i + ' j: ' + j) }"; +parse(doubleFor) + +var doubleFor2 = +"for (i = 0; i < 5; i++) { "+ +" for (j = 0; j < 5; j++) { print('i: ' + i + ' j: ' + j)"; +parse(doubleFor2) diff --git a/tests/jerry/if_parser.js b/tests/jerry/if_parser.js new file mode 100644 index 0000000000..50cdf95547 --- /dev/null +++ b/tests/jerry/if_parser.js @@ -0,0 +1,53 @@ +// Copyright JS Foundation and other contributors, http://js.foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +function test_parse_error (txt) { + try { + eval (txt) + assert (false) + } catch (e){ + assert (e instanceof SyntaxError) + } +} + +var if1= +"if (false)() print ('t')" + +"else print ('f')" +test_parse_error (if1) + +test_parse_error ("if (true)() { print ('t') }") +test_parse_error ("if {} (true) print ('t')") +test_parse_error ("if (true false) print ('t')") +test_parse_error ("if (true && || false) print ('t')") +test_parse_error ("if (&& true) print ('t')") +test_parse_error ("if (true ||) print ('t')") +test_parse_error ("if (true && {false || true}) print ('t')") + +var elseif1 = +"if (false) print ('if statement') " + +"elseif (false) print ('else if statement') " + +"else print ('else statement') " +test_parse_error (elseif1); + +var elseif2 = +"if (false) print ('if statement') " + +"elif (false) print ('else if statement') " + +"else print ('else statement') " +test_parse_error (elseif2) + +var elseif3 = +"if (false) print ('if statement') " + +"else (false) print ('else if statement') " + +"else print ('else statement') " +test_parse_error (elseif3)