Skip to content

Commit 86efe16

Browse files
committed
tests: Add further tests
1 parent 350c39b commit 86efe16

File tree

3 files changed

+229
-0
lines changed

3 files changed

+229
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
// RUN: (%COMPILE %s && %RUN) | %CHECK %s
2+
3+
TYPE PositionWithExtraMetadata:
4+
STRUCT
5+
x: REAL;
6+
y: REAL;
7+
data: ARRAY[1..100] OF STRING;
8+
END_STRUCT
9+
END_TYPE
10+
11+
FUNCTION_BLOCK FbA
12+
METHOD foo
13+
VAR_OUTPUT
14+
outString: STRING;
15+
outStruct: PositionWithExtraMetadata;
16+
outStructArray: ARRAY[1..5] OF PositionWithExtraMetadata;
17+
END_VAR
18+
19+
outString := 'FbA::foo result';
20+
outStruct.x := 1.0;
21+
outStruct.y := 2.0;
22+
outStruct.data[1] := 'Data 1';
23+
outStruct.data[2] := 'Data 2';
24+
outStruct.data[3] := 'Data 3';
25+
outStructArray[1].x := 3.0;
26+
outStructArray[1].y := 4.0;
27+
outStructArray[1].data[1] := 'Data 4';
28+
outStructArray[1].data[2] := 'Data 5';
29+
outStructArray[1].data[3] := 'Data 6';
30+
END_METHOD
31+
END_FUNCTION_BLOCK
32+
33+
FUNCTION main
34+
VAR
35+
fooPtr: POINTER TO FbA.foo := ADR(FbA.foo);
36+
instanceA: FbA;
37+
localOutString: STRING;
38+
localOutStruct: PositionWithExtraMetadata;
39+
localOutStructArray: ARRAY[1..5] OF PositionWithExtraMetadata;
40+
END_VAR
41+
42+
// CHECK: localOutString = FbA::foo result
43+
// CHECK: localOutStruct.x = 1.000000
44+
// CHECK: localOutStruct.y = 2.000000
45+
// CHECK: localOutStruct.data[1] = Data 1
46+
// CHECK: localOutStruct.data[2] = Data 2
47+
// CHECK: localOutStruct.data[3] = Data 3
48+
// CHECK: localOutStructArray[1].x = 3.000000
49+
// CHECK: localOutStructArray[1].y = 4.000000
50+
// CHECK: localOutStructArray[1].data[1] = Data 4
51+
// CHECK: localOutStructArray[1].data[2] = Data 5
52+
// CHECK: localOutStructArray[1].data[3] = Data 6
53+
fooPtr^(instanceA, outStructArray => localOutStructArray, outString => localOutString, outStruct => localOutStruct );
54+
printf('localOutString = %s$N', ADR(localOutString));
55+
printf('localOutStruct.x = %f$N', localOutStruct.x);
56+
printf('localOutStruct.y = %f$N', localOutStruct.y);
57+
printf('localOutStruct.data[1] = %s$N', ADR(localOutStruct.data[1]));
58+
printf('localOutStruct.data[2] = %s$N', ADR(localOutStruct.data[2]));
59+
printf('localOutStruct.data[3] = %s$N', ADR(localOutStruct.data[3]));
60+
printf('localOutStructArray[1].x = %f$N', localOutStructArray[1].x);
61+
printf('localOutStructArray[1].y = %f$N', localOutStructArray[1].y);
62+
printf('localOutStructArray[1].data[1] = %s$N', ADR(localOutStructArray[1].data[1]));
63+
printf('localOutStructArray[1].data[2] = %s$N', ADR(localOutStructArray[1].data[2]));
64+
printf('localOutStructArray[1].data[3] = %s$N', ADR(localOutStructArray[1].data[3]));
65+
END_FUNCTION
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
// RUN: (%COMPILE %s && %RUN) | %CHECK %s
2+
3+
TYPE PositionWithExtraMetadata:
4+
STRUCT
5+
x: REAL;
6+
y: REAL;
7+
data: ARRAY[1..100] OF STRING;
8+
END_STRUCT
9+
END_TYPE
10+
11+
FUNCTION_BLOCK FbA
12+
METHOD foo
13+
VAR_OUTPUT
14+
outString: STRING;
15+
outStruct: PositionWithExtraMetadata;
16+
outStringArray: ARRAY[1..5] OF STRING;
17+
outStructArray: ARRAY[1..5] OF PositionWithExtraMetadata;
18+
END_VAR
19+
20+
outString := 'FbA::foo result';
21+
outStruct.x := 1.0;
22+
outStruct.y := 2.0;
23+
outStruct.data[1] := 'Data 1';
24+
outStruct.data[2] := 'Data 2';
25+
outStruct.data[3] := 'Data 3';
26+
outStringArray[1] := 'Data 4';
27+
outStringArray[2] := 'Data 5';
28+
outStringArray[3] := 'Data 6';
29+
outStructArray[1].x := 3.0;
30+
outStructArray[1].y := 4.0;
31+
outStructArray[1].data[1] := 'Data 7';
32+
outStructArray[1].data[2] := 'Data 8';
33+
outStructArray[1].data[3] := 'Data 9';
34+
END_METHOD
35+
END_FUNCTION_BLOCK
36+
37+
FUNCTION main
38+
VAR
39+
fooPtr: POINTER TO FbA.foo := ADR(FbA.foo);
40+
instanceA: FbA;
41+
localOutString: STRING;
42+
localOutStruct: PositionWithExtraMetadata;
43+
localOutStringArray: ARRAY[1..5] OF STRING;
44+
localOutStructArray: ARRAY[1..5] OF PositionWithExtraMetadata;
45+
END_VAR
46+
47+
// CHECK: localOutString = FbA::foo result
48+
// CHECK: localOutStruct.x = 1.000000
49+
// CHECK: localOutStruct.y = 2.000000
50+
// CHECK: localOutStruct.data[1] = Data 1
51+
// CHECK: localOutStruct.data[2] = Data 2
52+
// CHECK: localOutStruct.data[3] = Data 3
53+
// CHECK: localOutStringArray[1] = Data 4
54+
// CHECK: localOutStringArray[2] = Data 5
55+
// CHECK: localOutStringArray[3] = Data 6
56+
// CHECK: localOutStructArray[1].x = 3.000000
57+
// CHECK: localOutStructArray[1].y = 4.000000
58+
// CHECK: localOutStructArray[1].data[1] = Data 7
59+
// CHECK: localOutStructArray[1].data[2] = Data 8
60+
// CHECK: localOutStructArray[1].data[3] = Data 9
61+
fooPtr^(instanceA, outStructArray => localOutStructArray, outString => localOutString, outStruct => localOutStruct, outStringArray => localOutStringArray);
62+
printf('localOutString = %s$N', ADR(localOutString));
63+
printf('localOutStruct.x = %f$N', localOutStruct.x);
64+
printf('localOutStruct.y = %f$N', localOutStruct.y);
65+
printf('localOutStruct.data[1] = %s$N', ADR(localOutStruct.data[1]));
66+
printf('localOutStruct.data[2] = %s$N', ADR(localOutStruct.data[2]));
67+
printf('localOutStruct.data[3] = %s$N', ADR(localOutStruct.data[3]));
68+
printf('localOutStringArray[1] = %s$N', ADR(localOutStringArray[1]));
69+
printf('localOutStringArray[2] = %s$N', ADR(localOutStringArray[2]));
70+
printf('localOutStringArray[3] = %s$N', ADR(localOutStringArray[3]));
71+
printf('localOutStructArray[1].x = %f$N', localOutStructArray[1].x);
72+
printf('localOutStructArray[1].y = %f$N', localOutStructArray[1].y);
73+
printf('localOutStructArray[1].data[1] = %s$N', ADR(localOutStructArray[1].data[1]));
74+
printf('localOutStructArray[1].data[2] = %s$N', ADR(localOutStructArray[1].data[2]));
75+
printf('localOutStructArray[1].data[3] = %s$N', ADR(localOutStructArray[1].data[3]));
76+
END_FUNCTION
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
// RUN: (%COMPILE %s && %RUN) | %CHECK %s
2+
3+
TYPE PositionWithExtraMetadata:
4+
STRUCT
5+
x: REAL;
6+
y: REAL;
7+
data: ARRAY[1..100] OF STRING;
8+
END_STRUCT
9+
END_TYPE
10+
11+
FUNCTION_BLOCK FbA
12+
VAR
13+
localStruct: PositionWithExtraMetadata := (x := 1.0, y := 2.0, data := ['Data 1', 'Data 2', 'Data 3']);
14+
localStringArray: ARRAY[1..3] OF STRING := ['Value 1', 'Value 2', 'Value 3'];
15+
localStructArray: ARRAY[1..3] OF PositionWithExtraMetadata := [
16+
(x := 3.0, y := 4.0, data := ['Data 4', 'Data 5', 'Data 6']),
17+
(x := 5.0, y := 6.0, data := ['Data 7', 'Data 8', 'Data 9']),
18+
(x := 7.0, y := 8.0, data := ['Data 10', 'Data 11', 'Data 12'])
19+
];
20+
END_VAR
21+
22+
METHOD returnString: STRING
23+
returnString := 'FbA::returnString';
24+
END_METHOD
25+
26+
METHOD returnStruct: PositionWithExtraMetadata
27+
returnStruct := localStruct;
28+
END_METHOD
29+
30+
METHOD returnStringArray: ARRAY[1..3] OF STRING
31+
returnStringArray := localStringArray;
32+
END_METHOD
33+
34+
METHOD returnStructArray: ARRAY[1..3] OF PositionWithExtraMetadata
35+
returnStructArray := localStructArray;
36+
END_METHOD
37+
END_FUNCTION_BLOCK
38+
39+
FUNCTION main
40+
VAR
41+
instanceA: FbA;
42+
returnStringPtr: POINTER TO FbA.returnString := ADR(instanceA.returnString);
43+
returnStructPtr: POINTER TO FbA.returnStruct := ADR(instanceA.returnStruct);
44+
returnStringArrayPtr: POINTER TO FbA.returnStringArray := ADR(instanceA.returnStringArray);
45+
returnStructArrayPtr: POINTER TO FbA.returnStructArray := ADR(instanceA.returnStructArray);
46+
47+
localReturnString: STRING;
48+
localReturnStruct: PositionWithExtraMetadata;
49+
localReturnStringArray: ARRAY[1..3] OF STRING;
50+
localReturnStructArray: ARRAY[1..3] OF PositionWithExtraMetadata;
51+
END_VAR
52+
53+
// localReturnString := instanceA.returnString();
54+
localReturnString := returnStringPtr^(instanceA);
55+
printf('localReturnString = %s$N', ADR(localReturnString));
56+
57+
// localReturnStruct := instanceA.returnStruct();
58+
localReturnStruct := returnStructPtr^(instanceA);
59+
printf('localReturnStruct.x = %f$N', localReturnStruct.x);
60+
printf('localReturnStruct.y = %f$N', localReturnStruct.y);
61+
printf('localReturnStruct.data[1] = %s$N', ADR(localReturnStruct.data[1]));
62+
printf('localReturnStruct.data[2] = %s$N', ADR(localReturnStruct.data[2]));
63+
printf('localReturnStruct.data[3] = %s$N', ADR(localReturnStruct.data[3]));
64+
65+
// localReturnStringArray := instanceA.returnStringArray();
66+
localReturnStringArray := returnStringArrayPtr^(instanceA);
67+
printf('localReturnStringArray[1] = %s$N', ADR(localReturnStringArray[1]));
68+
printf('localReturnStringArray[2] = %s$N', ADR(localReturnStringArray[2]));
69+
printf('localReturnStringArray[3] = %s$N', ADR(localReturnStringArray[3]));
70+
71+
// localReturnStructArray := instanceA.returnStructArray();
72+
localReturnStructArray := returnStructArrayPtr^(instanceA);
73+
printf('localReturnStructArray[1].x = %f$N', localReturnStructArray[1].x);
74+
printf('localReturnStructArray[1].y = %f$N', localReturnStructArray[1].y);
75+
printf('localReturnStructArray[1].data[1] = %s$N', ADR(localReturnStructArray[1].data[1]));
76+
printf('localReturnStructArray[1].data[2] = %s$N', ADR(localReturnStructArray[1].data[2]));
77+
printf('localReturnStructArray[1].data[3] = %s$N', ADR(localReturnStructArray[1].data[3]));
78+
printf('localReturnStructArray[2].x = %f$N', localReturnStructArray[2].x);
79+
printf('localReturnStructArray[2].y = %f$N', localReturnStructArray[2].y);
80+
printf('localReturnStructArray[2].data[1] = %s$N', ADR(localReturnStructArray[2].data[1]));
81+
printf('localReturnStructArray[2].data[2] = %s$N', ADR(localReturnStructArray[2].data[2]));
82+
printf('localReturnStructArray[2].data[3] = %s$N', ADR(localReturnStructArray[2].data[3]));
83+
printf('localReturnStructArray[3].x = %f$N', localReturnStructArray[3].x);
84+
printf('localReturnStructArray[3].y = %f$N', localReturnStructArray[3].y);
85+
printf('localReturnStructArray[3].data[1] = %s$N', ADR(localReturnStructArray[3].data[1]));
86+
printf('localReturnStructArray[3].data[2] = %s$N', ADR(localReturnStructArray[3].data[2]));
87+
printf('localReturnStructArray[3].data[3] = %s$N', ADR(localReturnStructArray[3].data[3]));
88+
END_FUNCTION

0 commit comments

Comments
 (0)