Add more integration tests to the GDScript test suite

This also fixes a typo in the `bitwise_float_right_operand.gd` test.
This commit is contained in:
Hugo Locurcio 2021-09-15 19:09:34 +02:00
parent 520462e98c
commit c6ca09dc6f
No known key found for this signature in database
GPG key ID: 39E8F8BE30B0A49C
30 changed files with 245 additions and 2 deletions

View file

@ -1,3 +1,3 @@
func test():
# Error here.
print(2 << 4.4)
print(2 >> 4.4)

View file

@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
Invalid operands to operator <<, int and float.
Invalid operands to operator >>, int and float.

View file

@ -0,0 +1,2 @@
func test():
print(Color.html_is_valid("00ffff"))

View file

@ -0,0 +1,2 @@
GDTEST_OK
true

View file

@ -0,0 +1,3 @@
func test() {
print("Hello world!");
}

View file

@ -0,0 +1,2 @@
GDTEST_PARSER_ERROR
Expected ":" after function declaration.

View file

@ -0,0 +1,2 @@
func test():
var escape = "invalid escape \h <- here"

View file

@ -0,0 +1,2 @@
GDTEST_PARSER_ERROR
Invalid escape in string.

View file

@ -0,0 +1,5 @@
func test():
var amount = 50
# C-style ternary operator is invalid in GDScript.
# The valid syntax is `"yes" if amount < 60 else "no"`, like in Python.
var ternary = amount < 60 ? "yes" : "no"

View file

@ -0,0 +1,2 @@
GDTEST_PARSER_ERROR
Unexpected "?" in source. If you want a ternary operator, use "truthy_value if true_condition else falsy_value".

View file

@ -0,0 +1,13 @@
# The VCS conflict marker has only 6 `=` signs instead of 7 to prevent editors like
# Visual Studio Code from recognizing it as an actual VCS conflict marker.
# Nonetheless, the GDScript parser is still expected to find and report the VCS
# conflict marker error correctly.
<<<<<<< HEAD
Hello world
======
Goodbye
>>>>>>> 77976da35a11db4580b80ae27e8d65caf5208086
func test():
pass

View file

@ -0,0 +1,2 @@
GDTEST_PARSER_ERROR
Unexpected "VCS conflict marker" in class body.

View file

@ -3,9 +3,16 @@
@export_range(0, 100, 1) var example_range_step = 101
@export_range(0, 100, 1, "or_greater") var example_range_step_or_greater = 102
@export var color: Color
@export_color_no_alpha var color_no_alpha: Color
@export_node_path(Sprite2D, Sprite3D, Control, Node) var nodepath := ^"hello"
func test():
print(example)
print(example_range)
print(example_range_step)
print(example_range_step_or_greater)
print(color)
print(color_no_alpha)
print(nodepath)

View file

@ -3,3 +3,6 @@ GDTEST_OK
100
101
102
(0, 0, 0, 1)
(0, 0, 0, 1)
hello

View file

@ -0,0 +1,5 @@
func example(_number: int, _number2: int = 5, number3 := 10):
return number3
func test():
print(example(3))

View file

@ -0,0 +1,5 @@
func example(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, arg22, arg23, arg24, arg25, arg26, arg27, arg28, arg29, arg30, arg31, arg32, arg33, arg34, arg35, arg36, arg37, arg38, arg39, arg40, arg41, arg42, arg43, arg44, arg45, arg46, arg47, arg48 = false, arg49 = true, arg50 = null):
print(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, arg22, arg23, arg24, arg25, arg26, arg27, arg28, arg29, arg30, arg31, arg32, arg33, arg34, arg35, arg36, arg37, arg38, arg39, arg40, arg41, arg42, arg43, arg44, arg45, arg46, arg47, arg48, arg49, arg50)
func test():
example(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47)

View file

@ -0,0 +1,2 @@
GDTEST_OK
123456789101112131415161718192212223242526272829303132333435363738394041424344454647falsetruenull

View file

@ -0,0 +1,4 @@
func test():
var my_lambda = func(x):
print(x)
my_lambda.call("hello")

View file

@ -0,0 +1,2 @@
GDTEST_OK
hello

View file

@ -0,0 +1,4 @@
func test():
var x = 42
var my_lambda = func(): print(x)
my_lambda.call() # Prints "42".

View file

@ -0,0 +1,2 @@
GDTEST_OK
42

View file

@ -0,0 +1,10 @@
func i_take_lambda(lambda: Callable, param: String):
lambda.call(param)
func test():
var my_lambda := func this_is_lambda(x):
print("Hello")
print("This is %s" % x)
i_take_lambda(my_lambda, "a lambda")

View file

@ -0,0 +1,3 @@
GDTEST_OK
Hello
This is a lambda

View file

@ -0,0 +1,5 @@
func foo(x):
return x + 1
func test():
print(foo(foo(foo(foo(foo(foo(foo(foo(foo(foo(foo(foo(foo(foo(foo(foo(foo(foo(foo(foo(foo(foo(foo(foo(0)))))))))))))))))))))))))

View file

@ -0,0 +1,2 @@
GDTEST_OK
24

View file

@ -0,0 +1,5 @@
func test():
var my_array: Array[int] = [1, 2, 3]
var inferred_array := [1, 2, 3] # This is Array[int].
print(my_array)
print(inferred_array)

View file

@ -0,0 +1,3 @@
GDTEST_OK
[1, 2, 3]
[1, 2, 3]

View file

@ -0,0 +1,19 @@
func is_prime(number: int, divisor: int = 2) -> bool:
print(divisor)
if number <= 2:
return (number == 2)
elif number % divisor == 0:
return false
elif divisor * divisor > number:
return true
return is_prime(number, divisor + 1)
func test():
# Not a prime number.
print(is_prime(989))
print()
# Largest prime number below 10000.
print(is_prime(9973))

View file

@ -0,0 +1,125 @@
GDTEST_OK
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
false
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
true