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