16
16
17
17
import com .google .common .collect .ImmutableList ;
18
18
import com .google .common .collect .ImmutableMap ;
19
+ import org .eclipse .lsp .cobol .common .error .ErrorSource ;
19
20
import org .eclipse .lsp .cobol .test .engine .UseCaseEngine ;
21
+ import org .eclipse .lsp .cobol .usecases .common .CICSTestUtils ;
22
+ import org .eclipse .lsp4j .Diagnostic ;
23
+ import org .eclipse .lsp4j .DiagnosticSeverity ;
24
+ import org .eclipse .lsp4j .Range ;
20
25
import org .junit .jupiter .api .Test ;
21
26
27
+ import java .util .HashMap ;
28
+ import java .util .Map ;
29
+
22
30
/**
23
31
* Tests CICS STARTBROWSE CONTAINER (EXCI) statement. Ref:
24
- * https://www.ibm.com/docs/en/cics-ts/6.1 ?topic=interface-exec-cics-link-command-exci
32
+ * https://www.ibm.com/docs/en/cics-ts/6.x ?topic=summary-startbrowse-activity
25
33
*/
26
34
public class TestCicsExciStartBrowseStatement {
27
- public static final String TEXT =
28
- " IDENTIFICATION DIVISION.\n "
35
+
36
+ // Test Strings
37
+ private static final String EXCI_TEXT =
38
+ " IDENTIFICATION DIVISION.\n "
29
39
+ " PROGRAM-ID. EXCISTMTTEST.\n "
30
40
+ " DATA DIVISION.\n "
31
41
+ " WORKING-STORAGE SECTION.\n "
@@ -42,8 +52,134 @@ public class TestCicsExciStartBrowseStatement {
42
52
+ " RETCODE({$RETURN-CODE})\n "
43
53
+ " END-EXEC." ;
44
54
55
+ private static final String STARTBROWSE_ACTIVITY_VALID = "STARTBROWSE ACTIVITY ACTIVITYID({$varOne}) BROWSETOKEN({$varOne})" ;
56
+ private static final String STARTBROWSE_CONTAINER_VALID = "STARTBROWSE CONTAINER PROCESS({$varOne}) PROCESSTYPE({$varOne}) BROWSETOKEN({$varOne})" ;
57
+ private static final String STARTBROWSE_EVENT_VALID = "STARTBROWSE EVENT ACTIVITYID({$varOne}) BROWSETOKEN({$varOne})" ;
58
+ private static final String STARTBROWSE_PROCESS_VALID = "STARTBROWSE PROCESS PROCESSTYPE({$varOne}) BROWSETOKEN({$varOne})" ;
59
+ private static final String STARTBROWSE_TIMER_VALID = "STARTBROWSE TIMER({$varOne}) BROWSETOKEN({$varOne})" ;
60
+
61
+ private static final String STARTBROWSE_INVALID_CONTAINER = "STARTBROWSE CONTAINER PROCESS({$varOne}) {PROCESSTYPE|errorOne}({$varOne}) {CHANNEL|errorTwo}({$varOne}) BROWSETOKEN({$varOne})" ;
62
+ private static final String STARTBROWSE_INVALID_CONTAINER_2 = "STARTBROWSE {_CONTAINER|errorTwo_} {_{_PROCESS|errorOne_}|errorTwo_} PROCESSTYPE({$varOne}) BROWSETOKEN({$varOne})" ;
63
+ private static final String STARTBROWSE_INVALID_ACTIVITY = "STARTBROWSE {_ACTIVITY ACTIVITYID({$varOne} )|errorOne_}" ;
64
+ private static final String STARTBROWSE_INVALID_EVENT = "STARTBROWSE {_EVENT ACTIVITYID({$varOne} )|errorOne_}" ;
65
+ private static final String STARTBROWSE_INVALID_PROCESS = "STARTBROWSE {_PROCESS BROWSETOKEN({$varOne} )|errorOne_}" ;
66
+ private static final String STARTBROWSE_INVALID_PROCESS_2 = "STARTBROWSE PROCESS {_PROCESS({$varOne})|errorOne_} PROCESSTYPE({$varOne}) BROWSETOKEN({$varOne})" ;
67
+
68
+ // Test Functions
69
+ @ Test
70
+ void testEXCIvariant () {
71
+ UseCaseEngine .runTest (EXCI_TEXT , ImmutableList .of (), ImmutableMap .of ());
72
+ }
73
+
74
+ @ Test
75
+ void testStartBrowseActivity () {
76
+ CICSTestUtils .noErrorTest (STARTBROWSE_ACTIVITY_VALID );
77
+ }
78
+
79
+ @ Test
80
+ void testStartBrowseContainer () {
81
+ CICSTestUtils .noErrorTest (STARTBROWSE_CONTAINER_VALID );
82
+ }
83
+
84
+ @ Test
85
+ void testStartBrowseEvent () {
86
+ CICSTestUtils .noErrorTest (STARTBROWSE_EVENT_VALID );
87
+ }
88
+
89
+ @ Test
90
+ void testStartBrowseProcess () {
91
+ CICSTestUtils .noErrorTest (STARTBROWSE_PROCESS_VALID );
92
+ }
93
+
94
+ @ Test
95
+ void testStartBrowseTimer () {
96
+ CICSTestUtils .noErrorTest (STARTBROWSE_TIMER_VALID );
97
+ }
98
+
99
+ // Invalid Tests
100
+ @ Test
101
+ void testStartBrowseContainerInvalid () {
102
+ Map <String , Diagnostic > tempDiagnostic = new HashMap <>();
103
+ tempDiagnostic .put ("errorOne" ,
104
+ new Diagnostic (
105
+ new Range (),
106
+ "Invalid option provided: PROCESSTYPE" ,
107
+ DiagnosticSeverity .Error ,
108
+ ErrorSource .PARSING .getText ()));
109
+ tempDiagnostic .put ("errorTwo" ,
110
+ new Diagnostic (
111
+ new Range (),
112
+ "Options \" ACTIVITYID, PROCESS or CHANNEL\" are mutually exclusive." ,
113
+ DiagnosticSeverity .Error ,
114
+ ErrorSource .PARSING .getText ()));
115
+
116
+ CICSTestUtils .errorTest (STARTBROWSE_INVALID_CONTAINER , tempDiagnostic );
117
+ }
118
+
119
+ @ Test
120
+ void testStartBrowseContainerInvalid_2 () {
121
+ Map <String , Diagnostic > tempDiagnostic = new HashMap <>();
122
+ tempDiagnostic .put ("errorOne" ,
123
+ new Diagnostic (
124
+ new Range (),
125
+ "Invalid option provided: PROCESS, in this context, requires a value" ,
126
+ DiagnosticSeverity .Error ,
127
+ ErrorSource .PARSING .getText ()));
128
+ tempDiagnostic .put ("errorTwo" ,
129
+ new Diagnostic (
130
+ new Range (),
131
+ "Exactly one option required, options are mutually exclusive: ACTIVITY, CONTAINER, PROCESS, EVENT or TIMER" ,
132
+ DiagnosticSeverity .Error ,
133
+ ErrorSource .PARSING .getText ()));
134
+
135
+ CICSTestUtils .errorTest (STARTBROWSE_INVALID_CONTAINER_2 , tempDiagnostic );
136
+ }
137
+
138
+ @ Test
139
+ void testStartBrowseActivityInvalid () {
140
+ Map <String , Diagnostic > tempDiagnostic = new HashMap <>();
141
+ tempDiagnostic .put ("errorOne" ,
142
+ new Diagnostic (
143
+ new Range (),
144
+ "Missing required option: BROWSETOKEN" ,
145
+ DiagnosticSeverity .Error ,
146
+ ErrorSource .PARSING .getText ()));
147
+ CICSTestUtils .errorTest (STARTBROWSE_INVALID_ACTIVITY , tempDiagnostic );
148
+ }
149
+
150
+ @ Test
151
+ void testStartBrowseEventInvalid () {
152
+ Map <String , Diagnostic > tempDiagnostic = new HashMap <>();
153
+ tempDiagnostic .put ("errorOne" ,
154
+ new Diagnostic (
155
+ new Range (),
156
+ "Missing required option: BROWSETOKEN" ,
157
+ DiagnosticSeverity .Error ,
158
+ ErrorSource .PARSING .getText ()));
159
+ CICSTestUtils .errorTest (STARTBROWSE_INVALID_EVENT , tempDiagnostic );
160
+ }
161
+
162
+ @ Test
163
+ void testStartBrowseProcessInvalid () {
164
+ Map <String , Diagnostic > tempDiagnostic = new HashMap <>();
165
+ tempDiagnostic .put ("errorOne" ,
166
+ new Diagnostic (
167
+ new Range (),
168
+ "Missing required option: PROCESSTYPE" ,
169
+ DiagnosticSeverity .Error ,
170
+ ErrorSource .PARSING .getText ()));
171
+ CICSTestUtils .errorTest (STARTBROWSE_INVALID_PROCESS , tempDiagnostic );
172
+ }
173
+
45
174
@ Test
46
- void test () {
47
- UseCaseEngine .runTest (TEXT , ImmutableList .of (), ImmutableMap .of ());
175
+ void testStartBrowseProcessInvalid_2 () {
176
+ Map <String , Diagnostic > tempDiagnostic = new HashMap <>();
177
+ tempDiagnostic .put ("errorOne" ,
178
+ new Diagnostic (
179
+ new Range (),
180
+ "Invalid option provided: PROCESS, in this context, cannot have a value" ,
181
+ DiagnosticSeverity .Error ,
182
+ ErrorSource .PARSING .getText ()));
183
+ CICSTestUtils .errorTest (STARTBROWSE_INVALID_PROCESS_2 , tempDiagnostic );
48
184
}
49
185
}
0 commit comments