CSV.mjs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. /**
  2. * CSV tests.
  3. *
  4. * @author n1474335 [n1474335@gmail.com]
  5. *
  6. * @copyright Crown Copyright 2018
  7. * @license Apache-2.0
  8. */
  9. import TestRegister from "../../TestRegister";
  10. const EXAMPLE_CSV = `A,B,C,D,E,F\r
  11. 1,2,3,4,5,6\r
  12. ",",;,',"""",,\r
  13. """hello""","a""1","multi\r
  14. line",,,end\r
  15. `;
  16. TestRegister.addTests([
  17. {
  18. name: "CSV to JSON: Array of dictionaries",
  19. input: EXAMPLE_CSV,
  20. expectedOutput: JSON.stringify([
  21. {
  22. "A": "1",
  23. "B": "2",
  24. "C": "3",
  25. "D": "4",
  26. "E": "5",
  27. "F": "6"
  28. },
  29. {
  30. "A": ",",
  31. "B": ";",
  32. "C": "'",
  33. "D": "\"",
  34. "E": "",
  35. "F": ""
  36. },
  37. {
  38. "A": "\"hello\"",
  39. "B": "a\"1",
  40. "C": "multi\r\nline",
  41. "D": "",
  42. "E": "",
  43. "F": "end"
  44. }
  45. ], null, 4),
  46. recipeConfig: [
  47. {
  48. op: "CSV to JSON",
  49. args: [",", "\r\n", "Array of dictionaries"],
  50. }
  51. ],
  52. },
  53. {
  54. name: "CSV to JSON: Array of arrays",
  55. input: EXAMPLE_CSV,
  56. expectedOutput: JSON.stringify([
  57. [
  58. "A",
  59. "B",
  60. "C",
  61. "D",
  62. "E",
  63. "F"
  64. ],
  65. [
  66. "1",
  67. "2",
  68. "3",
  69. "4",
  70. "5",
  71. "6"
  72. ],
  73. [
  74. ",",
  75. ";",
  76. "'",
  77. "\"",
  78. "",
  79. ""
  80. ],
  81. [
  82. "\"hello\"",
  83. "a\"1",
  84. "multi\r\nline",
  85. "",
  86. "",
  87. "end"
  88. ]
  89. ], null, 4),
  90. recipeConfig: [
  91. {
  92. op: "CSV to JSON",
  93. args: [",", "\r\n", "Array of arrays"],
  94. }
  95. ],
  96. },
  97. {
  98. name: "JSON to CSV: Array of dictionaries",
  99. input: JSON.stringify([
  100. {
  101. "A": "1",
  102. "B": "2",
  103. "C": "3",
  104. "D": "4",
  105. "E": "5",
  106. "F": "6"
  107. },
  108. {
  109. "A": ",",
  110. "B": ";",
  111. "C": "'",
  112. "D": "\"",
  113. "E": "",
  114. "F": ""
  115. },
  116. {
  117. "A": "\"hello\"",
  118. "B": "a\"1",
  119. "C": "multi\r\nline",
  120. "D": "",
  121. "E": "",
  122. "F": "end"
  123. }
  124. ]),
  125. expectedOutput: EXAMPLE_CSV,
  126. recipeConfig: [
  127. {
  128. op: "JSON to CSV",
  129. args: [",", "\r\n"],
  130. }
  131. ],
  132. },
  133. {
  134. name: "JSON to CSV: Array of arrays",
  135. input: JSON.stringify([
  136. [
  137. "A",
  138. "B",
  139. "C",
  140. "D",
  141. "E",
  142. "F"
  143. ],
  144. [
  145. "1",
  146. "2",
  147. "3",
  148. "4",
  149. "5",
  150. "6"
  151. ],
  152. [
  153. ",",
  154. ";",
  155. "'",
  156. "\"",
  157. "",
  158. ""
  159. ],
  160. [
  161. "\"hello\"",
  162. "a\"1",
  163. "multi\r\nline",
  164. "",
  165. "",
  166. "end"
  167. ]
  168. ]),
  169. expectedOutput: EXAMPLE_CSV,
  170. recipeConfig: [
  171. {
  172. op: "JSON to CSV",
  173. args: [",", "\r\n"],
  174. }
  175. ],
  176. },
  177. ]);