t/binop.t - lemplate

  1. # vim:set ft= ts=4 sw=4 et fdm=marker:

  2. use t::TestLemplate;

  3. plan tests => 1 * blocks();

  4. $ENV{LEMPLATE_POST_CHOMP} = 1;

  5. run_tests;

  6. __DATA__

  7. === TEST 1:
  8. --- tt2
  9. maybe
  10. [% IF yes %]
  11. yes
  12. [% END %]

  13. --- define: yes = 1
  14. --- out
  15. maybe
  16. yes



  17. === TEST 2:
  18. --- tt2
  19. [% IF yes %]
  20. yes
  21. [% ELSE %]
  22. no
  23. [% END %]

  24. --- define: yes = 1
  25. --- out
  26. yes



  27. === TEST 3:
  28. --- tt2
  29. [% IF yes %]
  30. yes
  31. [% ELSE %]
  32. no
  33. [% END %]

  34. --- define: yes = 1
  35. --- out
  36. yes



  37. === TEST 4:
  38. --- tt2
  39. [% IF yes and true %]
  40. yes
  41. [% ELSE %]
  42. no
  43. [% END %]

  44. --- define: yes = 1, ['true'] = 'this is true'
  45. --- out
  46. yes



  47. === TEST 5:
  48. --- tt2
  49. [% IF yes && true %]
  50. yes
  51. [% ELSE %]
  52. no
  53. [% END %]

  54. --- define: yes = 1, ['true'] = 'this is true'
  55. --- out
  56. yes



  57. === TEST 6:
  58. --- tt2
  59. [% IF yes && sad || happy %]
  60. yes
  61. [% ELSE %]
  62. no
  63. [% END %]

  64. --- define: yes = 1, sad = '', happy = 'yes'
  65. --- out
  66. yes



  67. === TEST 7:
  68. --- tt2
  69. [% IF yes AND ten && true and twenty && 30 %]
  70. yes
  71. [% ELSE %]
  72. no
  73. [% END %]

  74. --- define: yes = 1, ten = 10, ['true'] = 'this is true', twenty = 20
  75. --- out
  76. yes



  77. === TEST 8:
  78. --- tt2
  79. [% IF ! yes %]
  80. no
  81. [% ELSE %]
  82. yes
  83. [% END %]

  84. --- define: yes = 1
  85. --- out
  86. yes



  87. === TEST 9:
  88. --- tt2
  89. [% UNLESS yes %]
  90. no
  91. [% ELSE %]
  92. yes
  93. [% END %]

  94. --- define: yes = 1
  95. --- out
  96. yes



  97. === TEST 10:
  98. --- tt2
  99. [% "yes" UNLESS no %]

  100. --- define: yes = 1, no = 0
  101. --- out chomp
  102. yes



  103. === TEST 11:
  104. --- tt2
  105. [% IF ! yes %]
  106. no
  107. [% ELSE %]
  108. yes
  109. [% END %]

  110. --- define: yes = 1, no = 0
  111. --- out
  112. yes



  113. === TEST 12:
  114. --- tt2
  115. [% IF yes || no %]
  116. yes
  117. [% ELSE %]
  118. no
  119. [% END %]

  120. --- define: yes = 1, no = 0
  121. --- out
  122. yes



  123. === TEST 13:
  124. --- tt2
  125. [% IF yes || no || true || false %]
  126. yes
  127. [% ELSE %]
  128. no
  129. [% END %]

  130. --- define: yes = 1, no = 0, ['true'] = 'this is true', ['false'] = '0'
  131. --- out
  132. yes



  133. === TEST 14:
  134. --- tt2
  135. [% IF yes or no %]
  136. yes
  137. [% ELSE %]
  138. no
  139. [% END %]

  140. --- define: yes = 1, no = 0
  141. --- out
  142. yes



  143. === TEST 15:
  144. --- tt2
  145. [% IF not false and not sad %]
  146. yes
  147. [% ELSE %]
  148. no
  149. [% END %]

  150. --- define: ['false'] = '0', sad = ''
  151. --- out
  152. yes



  153. === TEST 16:
  154. --- tt2
  155. [% IF ten == 10 %]
  156. yes
  157. [% ELSE %]
  158. no
  159. [% END %]

  160. --- define: ten = 10
  161. --- out
  162. yes



  163. === TEST 17:
  164. --- tt2
  165. [% IF ten == twenty %]
  166. I canna break the laws of mathematics, Captain.
  167. [% ELSIF ten > twenty %]
  168. Your numerical system is inverted.  Please reboot your Universe.
  169. [% ELSIF twenty < ten %]
  170. Your inverted system is numerical.  Please universe your reboot.
  171. [% ELSE %]
  172. Normality is restored.  Anything you can't cope with is your own problem.
  173. [% END %]

  174. --- define: ten = 10, twenty = 20
  175. --- out
  176. Normality is restored.  Anything you can't cope with is your own problem.



  177. === TEST 18:
  178. --- tt2
  179. [% IF ten >= twenty or false %]
  180. no
  181. [% ELSIF twenty <= ten  %]
  182. nope
  183. [% END %]
  184. nothing

  185. --- define: ten = 10, twenty = 20, ['false'] = '0'
  186. --- out
  187. nothing



  188. === TEST 19:
  189. --- tt2
  190. [% IF ten >= twenty or false %]
  191. no
  192. [% ELSIF twenty <= ten  %]
  193. nope
  194. [% END %]
  195. nothing

  196. --- define: ten = 10, twenty = 20, ['false'] = '0'
  197. --- out
  198. nothing



  199. === TEST 20:
  200. --- tt2
  201. [% IF ten > twenty %]
  202. no
  203. [% ELSIF ten < twenty  %]
  204. yep
  205. [% END %]

  206. --- define: ten = 10, twenty = 20, ['false'] = '0'
  207. --- out
  208. yep



  209. === TEST 21:
  210. --- tt2
  211. [% IF ten != 10 %]
  212. no
  213. [% ELSIF ten == 10  %]
  214. yep
  215. [% END %]

  216. --- define: ten = 10
  217. --- out
  218. yep



  219. === TEST 22:
  220. --- tt2
  221. [% IF alpha AND omega %]
  222. alpha and omega are true
  223. [% ELSE %]
  224. alpha and/or omega are not true
  225. [% END %]
  226. count: [% count %]

  227. --- init
  228. local counter = 0
  229. --- define
  230. alpha = function () counter = counter + 1 return counter end,
  231. omega = function () counter = counter + 10 return 0 end,
  232. count = function () return counter end,
  233. reset = function () return counter == 0 end
  234. --- out chomp
  235. alpha and/or omega are not true
  236. count: 11



  237. === TEST 23:
  238. --- tt2
  239. [% IF omega AND alpha %]
  240. omega and alpha are true
  241. [% ELSE %]
  242. omega and/or alpha are not true
  243. [% END %]
  244. count: [% count %]

  245. --- init: local counter = 11
  246. --- define
  247. ['true'] = 'this is true',
  248. alpha = function () counter = counter + 1 return counter end,
  249. omega = function () counter = counter + 10 return 0 end,
  250. count = function () return counter end,
  251. reset = function () return counter == 0 end

  252. --- out chomp
  253. omega and/or alpha are not true
  254. count: 21



  255. === TEST 24:
  256. --- tt2
  257. [% IF alpha OR omega %]
  258. alpha and/or omega are true
  259. [% ELSE %]
  260. neither alpha nor omega are true
  261. [% END %]
  262. count: [% count %]

  263. --- init: local counter = 21
  264. --- define
  265. ['true'] = 'this is true',
  266. alpha = function () counter = counter + 1 return counter end,
  267. omega = function () counter = counter + 10 return 0 end,
  268. count = function () return counter end,
  269. reset = function () return counter == 0 end

  270. --- out chomp
  271. alpha and/or omega are true
  272. count: 22



  273. === TEST 25:
  274. --- tt2
  275. [% IF omega OR alpha %]
  276. alpha and/or omega are true
  277. [% ELSE %]
  278. neither alpha nor omega are true
  279. [% END %]
  280. count: [% count %]

  281. --- init: local counter = 22
  282. --- define
  283. alpha = function () counter = counter + 1 return counter end,
  284. omega = function () counter = counter + 10 return 0 end,
  285. count = function () return counter end,
  286. --- out chomp
  287. alpha and/or omega are true
  288. count: 33



  289. === TEST 26:
  290. --- tt2
  291. [% small = 5
  292.    mid   = 7
  293.    big   = 10
  294.    both  = small + big
  295.    less  = big - mid
  296.    half  = big / small
  297.    left  = big % mid
  298.    mult  = big * small
  299. %]
  300. both: [% both +%]
  301. less: [% less +%]
  302. half: [% half +%]
  303. left: [% left +%]
  304. mult: [% mult +%]
  305. maxi: [% mult + 2 * 2 +%]
  306. mega: [% mult * 2 + 2 * 3 %]

  307. --- out chomp
  308. both: 15
  309. less: 3
  310. half: 2
  311. left: 3
  312. mult: 50
  313. maxi: 54
  314. mega: 106