Added several negative tests (#2215)
JerryScript-DCO-1.0-Signed-off-by: Balint Sipos siposb@inf.u-szeged.hu
This commit is contained in:
@@ -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}");
|
||||||
@@ -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-");
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
Reference in New Issue
Block a user