/src/test/java/io/proleap/cobol/asg/call/SpecialRegisterCallTest.java

https://github.com/uwol/proleap-cobol-parser · Java · 367 lines · 276 code · 91 blank · 0 comment · 0 complexity · 77f7b9f08cc36c78ee4d48e93095ded0 MD5 · raw file

  1. package io.proleap.cobol.asg.call;
  2. import static org.junit.Assert.assertEquals;
  3. import java.io.File;
  4. import org.junit.Test;
  5. import io.proleap.cobol.CobolTestBase;
  6. import io.proleap.cobol.asg.metamodel.CompilationUnit;
  7. import io.proleap.cobol.asg.metamodel.Program;
  8. import io.proleap.cobol.asg.metamodel.ProgramUnit;
  9. import io.proleap.cobol.asg.metamodel.call.Call;
  10. import io.proleap.cobol.asg.metamodel.call.SpecialRegisterCall;
  11. import io.proleap.cobol.asg.metamodel.procedure.ProcedureDivision;
  12. import io.proleap.cobol.asg.metamodel.procedure.StatementTypeEnum;
  13. import io.proleap.cobol.asg.metamodel.procedure.accept.AcceptStatement;
  14. import io.proleap.cobol.asg.runner.impl.CobolParserRunnerImpl;
  15. import io.proleap.cobol.preprocessor.CobolPreprocessor.CobolSourceFormatEnum;
  16. public class SpecialRegisterCallTest extends CobolTestBase {
  17. @Test
  18. public void test() throws Exception {
  19. final File inputFile = new File("src/test/resources/io/proleap/cobol/asg/call/SpecialRegisterCall.cbl");
  20. final Program program = new CobolParserRunnerImpl().analyzeFile(inputFile, CobolSourceFormatEnum.TANDEM);
  21. final CompilationUnit compilationUnit = program.getCompilationUnit("SpecialRegisterCall");
  22. final ProgramUnit programUnit = compilationUnit.getProgramUnit();
  23. final ProcedureDivision procedureDivision = programUnit.getProcedureDivision();
  24. {
  25. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(0);
  26. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  27. final Call call = acceptStatement.getAcceptCall();
  28. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  29. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  30. assertEquals(SpecialRegisterCall.SpecialRegisterType.ADDRESS_OF,
  31. specialRegisterCall.getSpecialRegisterType());
  32. assertEquals(Call.CallType.UNDEFINED_CALL, specialRegisterCall.getIdentifierCall().getCallType());
  33. }
  34. {
  35. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(1);
  36. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  37. final Call call = acceptStatement.getAcceptCall();
  38. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  39. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  40. assertEquals(SpecialRegisterCall.SpecialRegisterType.DATE, specialRegisterCall.getSpecialRegisterType());
  41. }
  42. {
  43. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(2);
  44. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  45. final Call call = acceptStatement.getAcceptCall();
  46. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  47. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  48. assertEquals(SpecialRegisterCall.SpecialRegisterType.DAY, specialRegisterCall.getSpecialRegisterType());
  49. }
  50. {
  51. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(3);
  52. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  53. final Call call = acceptStatement.getAcceptCall();
  54. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  55. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  56. assertEquals(SpecialRegisterCall.SpecialRegisterType.DAY_OF_WEEK,
  57. specialRegisterCall.getSpecialRegisterType());
  58. }
  59. {
  60. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(4);
  61. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  62. final Call call = acceptStatement.getAcceptCall();
  63. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  64. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  65. assertEquals(SpecialRegisterCall.SpecialRegisterType.DEBUG_CONTENTS,
  66. specialRegisterCall.getSpecialRegisterType());
  67. }
  68. {
  69. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(5);
  70. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  71. final Call call = acceptStatement.getAcceptCall();
  72. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  73. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  74. assertEquals(SpecialRegisterCall.SpecialRegisterType.DEBUG_ITEM,
  75. specialRegisterCall.getSpecialRegisterType());
  76. }
  77. {
  78. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(6);
  79. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  80. final Call call = acceptStatement.getAcceptCall();
  81. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  82. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  83. assertEquals(SpecialRegisterCall.SpecialRegisterType.DEBUG_LINE,
  84. specialRegisterCall.getSpecialRegisterType());
  85. }
  86. {
  87. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(7);
  88. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  89. final Call call = acceptStatement.getAcceptCall();
  90. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  91. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  92. assertEquals(SpecialRegisterCall.SpecialRegisterType.DEBUG_NAME,
  93. specialRegisterCall.getSpecialRegisterType());
  94. }
  95. {
  96. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(8);
  97. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  98. final Call call = acceptStatement.getAcceptCall();
  99. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  100. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  101. assertEquals(SpecialRegisterCall.SpecialRegisterType.DEBUG_SUB_1,
  102. specialRegisterCall.getSpecialRegisterType());
  103. }
  104. {
  105. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(9);
  106. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  107. final Call call = acceptStatement.getAcceptCall();
  108. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  109. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  110. assertEquals(SpecialRegisterCall.SpecialRegisterType.DEBUG_SUB_2,
  111. specialRegisterCall.getSpecialRegisterType());
  112. }
  113. {
  114. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(10);
  115. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  116. final Call call = acceptStatement.getAcceptCall();
  117. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  118. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  119. assertEquals(SpecialRegisterCall.SpecialRegisterType.DEBUG_SUB_3,
  120. specialRegisterCall.getSpecialRegisterType());
  121. }
  122. {
  123. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(11);
  124. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  125. final Call call = acceptStatement.getAcceptCall();
  126. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  127. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  128. assertEquals(SpecialRegisterCall.SpecialRegisterType.LENGTH_OF,
  129. specialRegisterCall.getSpecialRegisterType());
  130. assertEquals(Call.CallType.UNDEFINED_CALL, specialRegisterCall.getIdentifierCall().getCallType());
  131. }
  132. {
  133. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(12);
  134. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  135. final Call call = acceptStatement.getAcceptCall();
  136. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  137. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  138. assertEquals(SpecialRegisterCall.SpecialRegisterType.LINAGE_COUNTER,
  139. specialRegisterCall.getSpecialRegisterType());
  140. }
  141. {
  142. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(13);
  143. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  144. final Call call = acceptStatement.getAcceptCall();
  145. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  146. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  147. assertEquals(SpecialRegisterCall.SpecialRegisterType.LINE_COUNTER,
  148. specialRegisterCall.getSpecialRegisterType());
  149. }
  150. {
  151. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(14);
  152. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  153. final Call call = acceptStatement.getAcceptCall();
  154. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  155. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  156. assertEquals(SpecialRegisterCall.SpecialRegisterType.PAGE_COUNTER,
  157. specialRegisterCall.getSpecialRegisterType());
  158. }
  159. {
  160. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(15);
  161. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  162. final Call call = acceptStatement.getAcceptCall();
  163. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  164. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  165. assertEquals(SpecialRegisterCall.SpecialRegisterType.RETURN_CODE,
  166. specialRegisterCall.getSpecialRegisterType());
  167. }
  168. {
  169. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(16);
  170. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  171. final Call call = acceptStatement.getAcceptCall();
  172. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  173. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  174. assertEquals(SpecialRegisterCall.SpecialRegisterType.SHIFT_IN,
  175. specialRegisterCall.getSpecialRegisterType());
  176. }
  177. {
  178. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(17);
  179. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  180. final Call call = acceptStatement.getAcceptCall();
  181. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  182. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  183. assertEquals(SpecialRegisterCall.SpecialRegisterType.SHIFT_OUT,
  184. specialRegisterCall.getSpecialRegisterType());
  185. }
  186. {
  187. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(18);
  188. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  189. final Call call = acceptStatement.getAcceptCall();
  190. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  191. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  192. assertEquals(SpecialRegisterCall.SpecialRegisterType.SORT_CONTROL,
  193. specialRegisterCall.getSpecialRegisterType());
  194. }
  195. {
  196. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(19);
  197. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  198. final Call call = acceptStatement.getAcceptCall();
  199. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  200. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  201. assertEquals(SpecialRegisterCall.SpecialRegisterType.SORT_CORE_SIZE,
  202. specialRegisterCall.getSpecialRegisterType());
  203. }
  204. {
  205. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(20);
  206. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  207. final Call call = acceptStatement.getAcceptCall();
  208. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  209. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  210. assertEquals(SpecialRegisterCall.SpecialRegisterType.SORT_FILE_SIZE,
  211. specialRegisterCall.getSpecialRegisterType());
  212. }
  213. {
  214. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(21);
  215. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  216. final Call call = acceptStatement.getAcceptCall();
  217. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  218. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  219. assertEquals(SpecialRegisterCall.SpecialRegisterType.SORT_MESSAGE,
  220. specialRegisterCall.getSpecialRegisterType());
  221. }
  222. {
  223. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(22);
  224. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  225. final Call call = acceptStatement.getAcceptCall();
  226. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  227. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  228. assertEquals(SpecialRegisterCall.SpecialRegisterType.SORT_MODE_SIZE,
  229. specialRegisterCall.getSpecialRegisterType());
  230. }
  231. {
  232. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(23);
  233. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  234. final Call call = acceptStatement.getAcceptCall();
  235. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  236. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  237. assertEquals(SpecialRegisterCall.SpecialRegisterType.SORT_RETURN,
  238. specialRegisterCall.getSpecialRegisterType());
  239. }
  240. {
  241. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(24);
  242. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  243. final Call call = acceptStatement.getAcceptCall();
  244. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  245. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  246. assertEquals(SpecialRegisterCall.SpecialRegisterType.TALLY, specialRegisterCall.getSpecialRegisterType());
  247. }
  248. {
  249. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(25);
  250. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  251. final Call call = acceptStatement.getAcceptCall();
  252. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  253. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  254. assertEquals(SpecialRegisterCall.SpecialRegisterType.TIME, specialRegisterCall.getSpecialRegisterType());
  255. }
  256. {
  257. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(26);
  258. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  259. final Call call = acceptStatement.getAcceptCall();
  260. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  261. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  262. assertEquals(SpecialRegisterCall.SpecialRegisterType.WHEN_COMPILED,
  263. specialRegisterCall.getSpecialRegisterType());
  264. }
  265. {
  266. final AcceptStatement acceptStatement = (AcceptStatement) procedureDivision.getStatements().get(27);
  267. assertEquals(StatementTypeEnum.ACCEPT, acceptStatement.getStatementType());
  268. final Call call = acceptStatement.getAcceptCall();
  269. assertEquals(Call.CallType.SPECIAL_REGISTER_CALL, call.getCallType());
  270. final SpecialRegisterCall specialRegisterCall = (SpecialRegisterCall) call.unwrap();
  271. assertEquals(SpecialRegisterCall.SpecialRegisterType.LENGTH_OF,
  272. specialRegisterCall.getSpecialRegisterType());
  273. assertEquals(Call.CallType.UNDEFINED_CALL, specialRegisterCall.getIdentifierCall().getCallType());
  274. }
  275. }
  276. }