Added several negative tests (#2215)

JerryScript-DCO-1.0-Signed-off-by: Balint Sipos siposb@inf.u-szeged.hu
This commit is contained in:
siposb94
2018-02-28 05:47:56 +01:00
committed by Zoltan Herczeg
parent e10f6d6adf
commit ccc283289c
5 changed files with 218 additions and 0 deletions
+35
View File
@@ -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}");
+43
View File
@@ -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-");
+44
View File
@@ -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)
+43
View File
@@ -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)
+53
View File
@@ -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)