/src/test/java/io/proleap/cobol/asg/data/workingstorage/DataDescriptionValueFigurativeConstantTest.java

https://github.com/uwol/proleap-cobol-parser · Java · 369 lines · 288 code · 81 blank · 0 comment · 0 complexity · e145d4d48d9f57199c10ffc4064b932c MD5 · raw file

  1. package io.proleap.cobol.asg.data.workingstorage;
  2. import static org.junit.Assert.assertEquals;
  3. import static org.junit.Assert.assertNotNull;
  4. import java.io.File;
  5. import java.math.BigDecimal;
  6. import org.junit.Test;
  7. import io.proleap.cobol.CobolTestBase;
  8. import io.proleap.cobol.asg.metamodel.CompilationUnit;
  9. import io.proleap.cobol.asg.metamodel.FigurativeConstant;
  10. import io.proleap.cobol.asg.metamodel.FigurativeConstant.FigurativeConstantType;
  11. import io.proleap.cobol.asg.metamodel.Literal;
  12. import io.proleap.cobol.asg.metamodel.Program;
  13. import io.proleap.cobol.asg.metamodel.ProgramUnit;
  14. import io.proleap.cobol.asg.metamodel.data.DataDivision;
  15. import io.proleap.cobol.asg.metamodel.data.datadescription.DataDescriptionEntryGroup;
  16. import io.proleap.cobol.asg.metamodel.data.datadescription.ValueInterval;
  17. import io.proleap.cobol.asg.metamodel.data.workingstorage.WorkingStorageSection;
  18. import io.proleap.cobol.asg.metamodel.valuestmt.LiteralValueStmt;
  19. import io.proleap.cobol.asg.metamodel.valuestmt.ValueStmt;
  20. import io.proleap.cobol.asg.runner.impl.CobolParserRunnerImpl;
  21. import io.proleap.cobol.preprocessor.CobolPreprocessor.CobolSourceFormatEnum;
  22. public class DataDescriptionValueFigurativeConstantTest extends CobolTestBase {
  23. @Test
  24. public void test() throws Exception {
  25. final File inputFile = new File(
  26. "src/test/resources/io/proleap/cobol/asg/data/workingstorage/DataDescriptionValueFigurativeConstant.cbl");
  27. final Program program = new CobolParserRunnerImpl().analyzeFile(inputFile, CobolSourceFormatEnum.TANDEM);
  28. final CompilationUnit compilationUnit = program.getCompilationUnit("DataDescriptionValueFigurativeConstant");
  29. final ProgramUnit programUnit = compilationUnit.getProgramUnit();
  30. final DataDivision dataDivision = programUnit.getDataDivision();
  31. final WorkingStorageSection workingStorageSection = dataDivision.getWorkingStorageSection();
  32. {
  33. final DataDescriptionEntryGroup dataDescriptionEntryItem = (DataDescriptionEntryGroup) workingStorageSection
  34. .getDataDescriptionEntry("ITEMALL");
  35. assertNotNull(dataDescriptionEntryItem);
  36. assertNotNull(dataDescriptionEntryItem.getValueClause());
  37. final ValueInterval valueInterval = dataDescriptionEntryItem.getValueClause().getValueIntervals().get(0);
  38. assertNotNull(valueInterval);
  39. {
  40. final ValueStmt fromValueStmt = valueInterval.getFromValueStmt();
  41. final LiteralValueStmt literalFromValueStmt = (LiteralValueStmt) fromValueStmt;
  42. final Literal literal = literalFromValueStmt.getLiteral();
  43. assertEquals(Literal.LiteralType.FIGURATIVE_CONSTANT, literal.getLiteralType());
  44. {
  45. final FigurativeConstant figurativeConstant = literal.getFigurativeConstant();
  46. assertNotNull(figurativeConstant);
  47. assertEquals(FigurativeConstantType.ALL, figurativeConstant.getFigurativeConstantType());
  48. final Literal allLiteral = figurativeConstant.getLiteral();
  49. assertNotNull(allLiteral);
  50. assertEquals(Literal.LiteralType.NUMERIC, allLiteral.getLiteralType());
  51. assertEquals(new BigDecimal(2), allLiteral.getNumericLiteral().getValue());
  52. }
  53. }
  54. }
  55. {
  56. final DataDescriptionEntryGroup dataDescriptionEntryItem = (DataDescriptionEntryGroup) workingStorageSection
  57. .getDataDescriptionEntry("ITEMHIGHVALUE");
  58. assertNotNull(dataDescriptionEntryItem);
  59. assertNotNull(dataDescriptionEntryItem.getValueClause());
  60. final ValueInterval valueInterval = dataDescriptionEntryItem.getValueClause().getValueIntervals().get(0);
  61. assertNotNull(valueInterval);
  62. {
  63. final ValueStmt fromValueStmt = valueInterval.getFromValueStmt();
  64. final LiteralValueStmt literalFromValueStmt = (LiteralValueStmt) fromValueStmt;
  65. final Literal literal = literalFromValueStmt.getLiteral();
  66. assertEquals(Literal.LiteralType.FIGURATIVE_CONSTANT, literal.getLiteralType());
  67. assertNotNull(literal.getFigurativeConstant());
  68. assertEquals(FigurativeConstantType.HIGH_VALUE,
  69. literal.getFigurativeConstant().getFigurativeConstantType());
  70. }
  71. }
  72. {
  73. final DataDescriptionEntryGroup dataDescriptionEntryItem = (DataDescriptionEntryGroup) workingStorageSection
  74. .getDataDescriptionEntry("ITEMHIGHVALUES");
  75. assertNotNull(dataDescriptionEntryItem);
  76. assertNotNull(dataDescriptionEntryItem.getValueClause());
  77. final ValueInterval valueInterval = dataDescriptionEntryItem.getValueClause().getValueIntervals().get(0);
  78. assertNotNull(valueInterval);
  79. {
  80. final ValueStmt fromValueStmt = valueInterval.getFromValueStmt();
  81. final LiteralValueStmt literalFromValueStmt = (LiteralValueStmt) fromValueStmt;
  82. final Literal literal = literalFromValueStmt.getLiteral();
  83. assertEquals(Literal.LiteralType.FIGURATIVE_CONSTANT, literal.getLiteralType());
  84. assertNotNull(literal.getFigurativeConstant());
  85. assertEquals(FigurativeConstantType.HIGH_VALUES,
  86. literal.getFigurativeConstant().getFigurativeConstantType());
  87. }
  88. }
  89. {
  90. final DataDescriptionEntryGroup dataDescriptionEntryItem = (DataDescriptionEntryGroup) workingStorageSection
  91. .getDataDescriptionEntry("ITEMLOWVALUE");
  92. assertNotNull(dataDescriptionEntryItem);
  93. assertNotNull(dataDescriptionEntryItem.getValueClause());
  94. final ValueInterval valueInterval = dataDescriptionEntryItem.getValueClause().getValueIntervals().get(0);
  95. assertNotNull(valueInterval);
  96. {
  97. final ValueStmt fromValueStmt = valueInterval.getFromValueStmt();
  98. final LiteralValueStmt literalFromValueStmt = (LiteralValueStmt) fromValueStmt;
  99. final Literal literal = literalFromValueStmt.getLiteral();
  100. assertEquals(Literal.LiteralType.FIGURATIVE_CONSTANT, literal.getLiteralType());
  101. assertNotNull(literal.getFigurativeConstant());
  102. assertEquals(FigurativeConstantType.LOW_VALUE,
  103. literal.getFigurativeConstant().getFigurativeConstantType());
  104. }
  105. }
  106. {
  107. final DataDescriptionEntryGroup dataDescriptionEntryItem = (DataDescriptionEntryGroup) workingStorageSection
  108. .getDataDescriptionEntry("ITEMLOWVALUES");
  109. assertNotNull(dataDescriptionEntryItem);
  110. assertNotNull(dataDescriptionEntryItem.getValueClause());
  111. final ValueInterval valueInterval = dataDescriptionEntryItem.getValueClause().getValueIntervals().get(0);
  112. assertNotNull(valueInterval);
  113. {
  114. final ValueStmt fromValueStmt = valueInterval.getFromValueStmt();
  115. final LiteralValueStmt literalFromValueStmt = (LiteralValueStmt) fromValueStmt;
  116. final Literal literal = literalFromValueStmt.getLiteral();
  117. assertEquals(Literal.LiteralType.FIGURATIVE_CONSTANT, literal.getLiteralType());
  118. assertNotNull(literal.getFigurativeConstant());
  119. assertEquals(FigurativeConstantType.LOW_VALUES,
  120. literal.getFigurativeConstant().getFigurativeConstantType());
  121. }
  122. }
  123. {
  124. final DataDescriptionEntryGroup dataDescriptionEntryItem = (DataDescriptionEntryGroup) workingStorageSection
  125. .getDataDescriptionEntry("ITEMNULL");
  126. assertNotNull(dataDescriptionEntryItem);
  127. assertNotNull(dataDescriptionEntryItem.getValueClause());
  128. final ValueInterval valueInterval = dataDescriptionEntryItem.getValueClause().getValueIntervals().get(0);
  129. assertNotNull(valueInterval);
  130. {
  131. final ValueStmt fromValueStmt = valueInterval.getFromValueStmt();
  132. final LiteralValueStmt literalFromValueStmt = (LiteralValueStmt) fromValueStmt;
  133. final Literal literal = literalFromValueStmt.getLiteral();
  134. assertEquals(Literal.LiteralType.FIGURATIVE_CONSTANT, literal.getLiteralType());
  135. assertNotNull(literal.getFigurativeConstant());
  136. assertEquals(FigurativeConstantType.NULL, literal.getFigurativeConstant().getFigurativeConstantType());
  137. }
  138. }
  139. {
  140. final DataDescriptionEntryGroup dataDescriptionEntryItem = (DataDescriptionEntryGroup) workingStorageSection
  141. .getDataDescriptionEntry("ITEMNULLS");
  142. assertNotNull(dataDescriptionEntryItem);
  143. assertNotNull(dataDescriptionEntryItem.getValueClause());
  144. final ValueInterval valueInterval = dataDescriptionEntryItem.getValueClause().getValueIntervals().get(0);
  145. assertNotNull(valueInterval);
  146. {
  147. final ValueStmt fromValueStmt = valueInterval.getFromValueStmt();
  148. final LiteralValueStmt literalFromValueStmt = (LiteralValueStmt) fromValueStmt;
  149. final Literal literal = literalFromValueStmt.getLiteral();
  150. assertEquals(Literal.LiteralType.FIGURATIVE_CONSTANT, literal.getLiteralType());
  151. assertNotNull(literal.getFigurativeConstant());
  152. assertEquals(FigurativeConstantType.NULLS, literal.getFigurativeConstant().getFigurativeConstantType());
  153. }
  154. }
  155. {
  156. final DataDescriptionEntryGroup dataDescriptionEntryItem = (DataDescriptionEntryGroup) workingStorageSection
  157. .getDataDescriptionEntry("ITEMQUOTE");
  158. assertNotNull(dataDescriptionEntryItem);
  159. assertNotNull(dataDescriptionEntryItem.getValueClause());
  160. final ValueInterval valueInterval = dataDescriptionEntryItem.getValueClause().getValueIntervals().get(0);
  161. assertNotNull(valueInterval);
  162. {
  163. final ValueStmt fromValueStmt = valueInterval.getFromValueStmt();
  164. final LiteralValueStmt literalFromValueStmt = (LiteralValueStmt) fromValueStmt;
  165. final Literal literal = literalFromValueStmt.getLiteral();
  166. assertEquals(Literal.LiteralType.FIGURATIVE_CONSTANT, literal.getLiteralType());
  167. assertNotNull(literal.getFigurativeConstant());
  168. assertEquals(FigurativeConstantType.QUOTE, literal.getFigurativeConstant().getFigurativeConstantType());
  169. }
  170. }
  171. {
  172. final DataDescriptionEntryGroup dataDescriptionEntryItem = (DataDescriptionEntryGroup) workingStorageSection
  173. .getDataDescriptionEntry("ITEMQUOTES");
  174. assertNotNull(dataDescriptionEntryItem);
  175. assertNotNull(dataDescriptionEntryItem.getValueClause());
  176. final ValueInterval valueInterval = dataDescriptionEntryItem.getValueClause().getValueIntervals().get(0);
  177. assertNotNull(valueInterval);
  178. {
  179. final ValueStmt fromValueStmt = valueInterval.getFromValueStmt();
  180. final LiteralValueStmt literalFromValueStmt = (LiteralValueStmt) fromValueStmt;
  181. final Literal literal = literalFromValueStmt.getLiteral();
  182. assertEquals(Literal.LiteralType.FIGURATIVE_CONSTANT, literal.getLiteralType());
  183. assertNotNull(literal.getFigurativeConstant());
  184. assertEquals(FigurativeConstantType.QUOTES,
  185. literal.getFigurativeConstant().getFigurativeConstantType());
  186. }
  187. }
  188. {
  189. final DataDescriptionEntryGroup dataDescriptionEntryItem = (DataDescriptionEntryGroup) workingStorageSection
  190. .getDataDescriptionEntry("ITEMSPACE");
  191. assertNotNull(dataDescriptionEntryItem);
  192. assertNotNull(dataDescriptionEntryItem.getValueClause());
  193. final ValueInterval valueInterval = dataDescriptionEntryItem.getValueClause().getValueIntervals().get(0);
  194. assertNotNull(valueInterval);
  195. {
  196. final ValueStmt fromValueStmt = valueInterval.getFromValueStmt();
  197. final LiteralValueStmt literalFromValueStmt = (LiteralValueStmt) fromValueStmt;
  198. final Literal literal = literalFromValueStmt.getLiteral();
  199. assertEquals(Literal.LiteralType.FIGURATIVE_CONSTANT, literal.getLiteralType());
  200. assertNotNull(literal.getFigurativeConstant());
  201. assertEquals(FigurativeConstantType.SPACE, literal.getFigurativeConstant().getFigurativeConstantType());
  202. }
  203. }
  204. {
  205. final DataDescriptionEntryGroup dataDescriptionEntryItem = (DataDescriptionEntryGroup) workingStorageSection
  206. .getDataDescriptionEntry("ITEMSPACES");
  207. assertNotNull(dataDescriptionEntryItem);
  208. assertNotNull(dataDescriptionEntryItem.getPictureClause());
  209. assertEquals("X(10)", dataDescriptionEntryItem.getPictureClause().getPictureString());
  210. assertNotNull(dataDescriptionEntryItem.getValueClause());
  211. {
  212. final ValueInterval valueInterval = dataDescriptionEntryItem.getValueClause().getValueIntervals()
  213. .get(0);
  214. assertNotNull(valueInterval);
  215. {
  216. final ValueStmt fromValueStmt = valueInterval.getFromValueStmt();
  217. final LiteralValueStmt literalFromValueStmt = (LiteralValueStmt) fromValueStmt;
  218. final Literal literal = literalFromValueStmt.getLiteral();
  219. assertEquals(Literal.LiteralType.FIGURATIVE_CONSTANT, literal.getLiteralType());
  220. assertNotNull(literal.getFigurativeConstant());
  221. assertEquals(FigurativeConstantType.SPACES,
  222. literal.getFigurativeConstant().getFigurativeConstantType());
  223. }
  224. }
  225. }
  226. {
  227. final DataDescriptionEntryGroup dataDescriptionEntryItem = (DataDescriptionEntryGroup) workingStorageSection
  228. .getDataDescriptionEntry("ITEMZERO");
  229. assertNotNull(dataDescriptionEntryItem);
  230. assertNotNull(dataDescriptionEntryItem.getPictureClause());
  231. assertEquals("9(10)", dataDescriptionEntryItem.getPictureClause().getPictureString());
  232. assertNotNull(dataDescriptionEntryItem.getValueClause());
  233. {
  234. final ValueInterval valueInterval = dataDescriptionEntryItem.getValueClause().getValueIntervals()
  235. .get(0);
  236. assertNotNull(valueInterval);
  237. {
  238. final ValueStmt fromValueStmt = valueInterval.getFromValueStmt();
  239. final LiteralValueStmt literalFromValueStmt = (LiteralValueStmt) fromValueStmt;
  240. final Literal literal = literalFromValueStmt.getLiteral();
  241. assertEquals(Literal.LiteralType.FIGURATIVE_CONSTANT, literal.getLiteralType());
  242. assertNotNull(literal.getFigurativeConstant());
  243. assertEquals(FigurativeConstantType.ZERO,
  244. literal.getFigurativeConstant().getFigurativeConstantType());
  245. }
  246. }
  247. }
  248. {
  249. final DataDescriptionEntryGroup dataDescriptionEntryItem = (DataDescriptionEntryGroup) workingStorageSection
  250. .getDataDescriptionEntry("ITEMZEROS");
  251. assertNotNull(dataDescriptionEntryItem);
  252. assertNotNull(dataDescriptionEntryItem.getPictureClause());
  253. assertEquals("9(10)", dataDescriptionEntryItem.getPictureClause().getPictureString());
  254. assertNotNull(dataDescriptionEntryItem.getValueClause());
  255. {
  256. final ValueInterval valueInterval = dataDescriptionEntryItem.getValueClause().getValueIntervals()
  257. .get(0);
  258. assertNotNull(valueInterval);
  259. {
  260. final ValueStmt fromValueStmt = valueInterval.getFromValueStmt();
  261. final LiteralValueStmt literalFromValueStmt = (LiteralValueStmt) fromValueStmt;
  262. final Literal literal = literalFromValueStmt.getLiteral();
  263. assertEquals(Literal.LiteralType.FIGURATIVE_CONSTANT, literal.getLiteralType());
  264. assertNotNull(literal.getFigurativeConstant());
  265. assertEquals(FigurativeConstantType.ZEROS,
  266. literal.getFigurativeConstant().getFigurativeConstantType());
  267. }
  268. }
  269. }
  270. {
  271. final DataDescriptionEntryGroup dataDescriptionEntryItem = (DataDescriptionEntryGroup) workingStorageSection
  272. .getDataDescriptionEntry("ITEMZEROES");
  273. assertNotNull(dataDescriptionEntryItem);
  274. assertNotNull(dataDescriptionEntryItem.getValueClause());
  275. final ValueInterval valueInterval = dataDescriptionEntryItem.getValueClause().getValueIntervals().get(0);
  276. assertNotNull(valueInterval);
  277. {
  278. final ValueStmt fromValueStmt = valueInterval.getFromValueStmt();
  279. final LiteralValueStmt literalFromValueStmt = (LiteralValueStmt) fromValueStmt;
  280. final Literal literal = literalFromValueStmt.getLiteral();
  281. assertEquals(Literal.LiteralType.FIGURATIVE_CONSTANT, literal.getLiteralType());
  282. assertNotNull(literal.getFigurativeConstant());
  283. assertEquals(FigurativeConstantType.ZEROES,
  284. literal.getFigurativeConstant().getFigurativeConstantType());
  285. }
  286. }
  287. }
  288. }