fork download
  1. import groovy.json.JsonSlurper
  2.  
  3. def jsonData = """{
  4. "_embedded": {
  5. "categories": [
  6. {
  7. "name": "Allergen",
  8. "value": "Allergen",
  9. "options": [
  10. {
  11. "name": "Antibiotic allergy",
  12. "value": "Antibiotic allergy"
  13. },
  14. {
  15. "name": "Antihypertensive allergy",
  16. "value": "Antihypertensive allergy"
  17. },
  18. {
  19. "name": "Aspirin allergy",
  20. "value": "Aspirin allergy"
  21. },
  22. {
  23. "name": "Corn",
  24. "value": "Corn"
  25. },
  26. {
  27. "name": "Egg",
  28. "value": "Egg"
  29. },
  30. {
  31. "name": "Eggs",
  32. "value": "Eggs"
  33. },
  34. {
  35. "name": "Fish",
  36. "value": "Fish"
  37. },
  38. {
  39. "name": "Gluten",
  40. "value": "Gluten"
  41. },
  42. {
  43. "name": "Ibuprofen allergy",
  44. "value": "Ibuprofen allergy"
  45. },
  46. {
  47. "name": "Insulin allergy",
  48. "value": "Insulin allergy"
  49. },
  50. {
  51. "name": "Kosher",
  52. "value": "Kosher"
  53. },
  54. {
  55. "name": "Milk",
  56. "value": "Milk"
  57. },
  58. {
  59. "name": "Nonsteroidal allergy",
  60. "value": "Nonsteroidal allergy"
  61. },
  62. {
  63. "name": "Others(Specify)",
  64. "value": "Others(Specify)"
  65. },
  66. {
  67. "name": "Peanut",
  68. "value": "Peanut"
  69. },
  70. {
  71. "name": "Penicillin allergy",
  72. "value": "Penicillin allergy"
  73. },
  74. {
  75. "name": "ShellFish",
  76. "value": "ShellFish"
  77. },
  78. {
  79. "name": "Soy",
  80. "value": "Soy"
  81. },
  82. {
  83. "name": "Tree Nut",
  84. "value": "Tree Nut"
  85. },
  86. {
  87. "name": "Tree Nuts",
  88. "value": "Tree Nuts"
  89. },
  90. {
  91. "name": "Vegan",
  92. "value": "Vegan"
  93. },
  94. {
  95. "name": "Vegetarian",
  96. "value": "Vegetarian"
  97. },
  98. {
  99. "name": "Wheat",
  100. "value": "Wheat"
  101. }
  102. ]
  103. },
  104. {
  105. "name": "Colour",
  106. "value": "Colour",
  107. "options": [
  108. {
  109. "name": "Blue",
  110. "value": "Blue"
  111. },
  112. {
  113. "name": "Green",
  114. "value": "Green"
  115. },
  116. {
  117. "name": "Others(Specify)",
  118. "value": "Others(Specify)"
  119. },
  120. {
  121. "name": "Red",
  122. "value": "Red"
  123. }
  124. ]
  125. },
  126. {
  127. "name": "Drinks",
  128. "value": "Drinks",
  129. "options": [
  130. {
  131. "name": "Absinthe",
  132. "value": "Absinthe"
  133. },
  134. {
  135. "name": "Apple",
  136. "value": "Apple"
  137. },
  138. {
  139. "name": "Ballantines",
  140. "value": "Ballantines"
  141. },
  142. {
  143. "name": "Bud light",
  144. "value": "Bud light"
  145. },
  146. {
  147. "name": "Carlsberg",
  148. "value": "Carlsberg"
  149. },
  150. {
  151. "name": "Chardonnay",
  152. "value": "Chardonnay"
  153. },
  154. {
  155. "name": "Corona",
  156. "value": "Corona"
  157. },
  158. {
  159. "name": "Gin & Tonic",
  160. "value": "Gin & Tonic"
  161. },
  162. {
  163. "name": "Glenfiddich",
  164. "value": "Glenfiddich"
  165. },
  166. {
  167. "name": "Heineken",
  168. "value": "Heineken"
  169. },
  170. {
  171. "name": "Johnnie Walker",
  172. "value": "Johnnie Walker"
  173. },
  174. {
  175. "name": "Lemon Drop Martini",
  176. "value": "Lemon Drop Martini"
  177. },
  178. {
  179. "name": "McCallan",
  180. "value": "McCallan"
  181. },
  182. {
  183. "name": "Miller",
  184. "value": "Miller"
  185. },
  186. {
  187. "name": "Mint Julep",
  188. "value": "Mint Julep"
  189. },
  190. {
  191. "name": "Mixed Fruit",
  192. "value": "Mixed Fruit"
  193. },
  194. {
  195. "name": "Mojito",
  196. "value": "Mojito"
  197. },
  198. {
  199. "name": "Old Fashioned",
  200. "value": "Old Fashioned"
  201. },
  202. {
  203. "name": "Orange",
  204. "value": "Orange"
  205. },
  206. {
  207. "name": "Others(Specify)",
  208. "value": "Others(Specify)"
  209. },
  210. {
  211. "name": "Red Wine",
  212. "value": "Red Wine"
  213. },
  214. {
  215. "name": "Strawberry Daiquiri",
  216. "value": "Strawberry Daiquiri"
  217. },
  218. {
  219. "name": "Tequila",
  220. "value": "Tequila"
  221. },
  222. {
  223. "name": "White Wine",
  224. "value": "White Wine"
  225. }
  226. ]
  227. },
  228. {
  229. "name": "Food",
  230. "value": "Food",
  231. "options": [
  232. {
  233. "name": "Caviar",
  234. "value": "Caviar"
  235. },
  236. {
  237. "name": "Chim Chum",
  238. "value": "Chim Chum"
  239. },
  240. {
  241. "name": "Chowmein",
  242. "value": "Chowmein"
  243. },
  244. {
  245. "name": "Fajitas",
  246. "value": "Fajitas"
  247. },
  248. {
  249. "name": "Garlic Prawn Risotto",
  250. "value": "Garlic Prawn Risotto"
  251. },
  252. {
  253. "name": "Indian Cury",
  254. "value": "Indian Cury"
  255. },
  256. {
  257. "name": "Noodle Soup",
  258. "value": "Noodle Soup"
  259. },
  260. {
  261. "name": "Others(Specify)",
  262. "value": "Others(Specify)"
  263. },
  264. {
  265. "name": "Pasta",
  266. "value": "Pasta"
  267. },
  268. {
  269. "name": "Pizza",
  270. "value": "Pizza"
  271. },
  272. {
  273. "name": "Seafood",
  274. "value": "Seafood"
  275. },
  276. {
  277. "name": "Suki",
  278. "value": "Suki"
  279. },
  280. {
  281. "name": "Tortillas",
  282. "value": "Tortillas"
  283. },
  284. {
  285. "name": "Vegetable Au Gratin",
  286. "value": "Vegetable Au Gratin"
  287. },
  288. {
  289. "name": "Yam Chin Kai",
  290. "value": "Yam Chin Kai"
  291. }
  292. ]
  293. },
  294. {
  295. "name": "Leisure",
  296. "value": "Leisure",
  297. "options": [
  298. {
  299. "name": "Cinema",
  300. "value": "Cinema"
  301. },
  302. {
  303. "name": "Cosplay",
  304. "value": "Cosplay"
  305. },
  306. {
  307. "name": "Exercise",
  308. "value": "Exercise"
  309. },
  310. {
  311. "name": "Fishing",
  312. "value": "Fishing"
  313. },
  314. {
  315. "name": "Luxury Vacation Style",
  316. "value": "Luxury Vacation Style"
  317. },
  318. {
  319. "name": "Others(Specify)",
  320. "value": "Others(Specify)"
  321. },
  322. {
  323. "name": "Reading",
  324. "value": "Reading"
  325. },
  326. {
  327. "name": "Story Telling",
  328. "value": "Story Telling"
  329. }
  330. ]
  331. },
  332. {
  333. "name": "Music",
  334. "value": "Music",
  335. "options": [
  336. {
  337. "name": "Blues",
  338. "value": "Blues"
  339. },
  340. {
  341. "name": "Classic Rock",
  342. "value": "Classic Rock"
  343. },
  344. {
  345. "name": "Jazz",
  346. "value": "Jazz"
  347. },
  348. {
  349. "name": "Opera",
  350. "value": "Opera"
  351. },
  352. {
  353. "name": "Others(Specify)",
  354. "value": "Others(Specify)"
  355. },
  356. {
  357. "name": "Pop",
  358. "value": "Pop"
  359. },
  360. {
  361. "name": "Rock",
  362. "value": "Rock"
  363. }
  364. ]
  365. },
  366. {
  367. "name": "Spa",
  368. "value": "Spa",
  369. "options": [
  370. {
  371. "name": "Ayurvedic Spa",
  372. "value": "Ayurvedic Spa"
  373. },
  374. {
  375. "name": "Cruise Ship Spa",
  376. "value": "Cruise Ship Spa"
  377. },
  378. {
  379. "name": "Hot Tub",
  380. "value": "Hot Tub"
  381. },
  382. {
  383. "name": "Others(Specify)",
  384. "value": "Others(Specify)"
  385. }
  386. ]
  387. },
  388. {
  389. "name": "Sports",
  390. "value": "Sports",
  391. "options": [
  392. {
  393. "name": "Air Hockey",
  394. "value": "Air Hockey"
  395. },
  396. {
  397. "name": "Baseball",
  398. "value": "Baseball"
  399. },
  400. {
  401. "name": "BasketBall",
  402. "value": "BasketBall"
  403. },
  404. {
  405. "name": "Carrom",
  406. "value": "Carrom"
  407. },
  408. {
  409. "name": "Chess",
  410. "value": "Chess"
  411. },
  412. {
  413. "name": "Football",
  414. "value": "Football"
  415. },
  416. {
  417. "name": "Golf",
  418. "value": "Golf"
  419. },
  420. {
  421. "name": "Ice Polo",
  422. "value": "Ice Polo"
  423. },
  424. {
  425. "name": "Jet Skiing",
  426. "value": "Jet Skiing"
  427. },
  428. {
  429. "name": "Others(Specify)",
  430. "value": "Others(Specify)"
  431. },
  432. {
  433. "name": "Para-Sailing",
  434. "value": "Para-Sailing"
  435. },
  436. {
  437. "name": "Rock",
  438. "value": "Rock"
  439. },
  440. {
  441. "name": "Scuba-Diving",
  442. "value": "Scuba-Diving"
  443. },
  444. {
  445. "name": "Skurfing",
  446. "value": "Skurfing"
  447. },
  448. {
  449. "name": "Table Tennis",
  450. "value": "Table Tennis"
  451. },
  452. {
  453. "name": "VolleyBall",
  454. "value": "VolleyBall"
  455. }
  456. ]
  457. }
  458. ]
  459. }
  460. }"""
  461. def expectedMap = ['Allergen': 22, 'Colour': 4]
  462. def resultMap = [:]
  463. def json = new JsonSlurper().parseText(jsonData)
  464. expectedMap.collect{ key, value ->
  465. def result = json.'_embedded'.categories.find{it.name == key}.options?.size()
  466. println "Count of $key: $result"
  467. resultMap[key] = result == value ? true : false
  468.  
  469. }
  470. assert resultMap.values().every{it}
  471.  
Runtime error #stdin #stdout #stderr 1.14s 91104KB
stdin
Standard input is empty
stdout
Count of Allergen: 23
Count of Colour: 4
stderr
Caught: Assertion failed: 

assert resultMap.values().every{it}
       |         |        |
       |         |        false
       |         [false, true]
       [Allergen:false, Colour:true]

Assertion failed: 

assert resultMap.values().every{it}
       |         |        |
       |         |        false
       |         [false, true]
       [Allergen:false, Colour:true]

	at prog.run(prog.groovy:470)