/rake:dbmigrate/ruby/1.9.1/gems/erubis-2.6.6/test/test-engines.rb

https://github.com/bharathi2011/example · Ruby · 369 lines · 339 code · 21 blank · 9 comment · 9 complexity · 3befb8dfa017b01ac8001c031495717d MD5 · raw file

  1. ##
  2. ## $Release: 2.6.6 $
  3. ## copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
  4. ##
  5. require "#{File.dirname(__FILE__)}/test.rb"
  6. require 'erubis'
  7. require 'erubis/engine/eruby'
  8. require 'erubis/engine/ephp'
  9. require 'erubis/engine/ec'
  10. require 'erubis/engine/ejava'
  11. require 'erubis/engine/escheme'
  12. require 'erubis/engine/eperl'
  13. require 'erubis/engine/ejavascript'
  14. class EnginesTest < Test::Unit::TestCase
  15. #load_yaml_documents(__FILE__)
  16. testdata_list = load_yaml_datafile(__FILE__)
  17. define_testmethods(testdata_list)
  18. def _test()
  19. klass = Erubis.const_get(@class)
  20. engine = klass.new(@input, @options || {})
  21. actual = engine.src
  22. assert_text_equal(@expected, actual)
  23. end
  24. self.post_definition()
  25. end
  26. __END__
  27. - name: ruby1
  28. lang: ruby
  29. class: Eruby
  30. options:
  31. input: |
  32. <table>
  33. <tbody>
  34. <% i = 0
  35. list.each_with_index do |item, i| %>
  36. <tr>
  37. <td><%= i+1 %></td>
  38. <td><%== list %></td>
  39. </tr>
  40. <% end %>
  41. </tbody>
  42. </table>
  43. <%=== i+1 %>
  44. expected: |
  45. _buf = ''; _buf << '<table>
  46. <tbody>
  47. '; i = 0
  48. list.each_with_index do |item, i|
  49. _buf << ' <tr>
  50. <td>'; _buf << ( i+1 ).to_s; _buf << '</td>
  51. <td>'; _buf << Erubis::XmlHelper.escape_xml( list ); _buf << '</td>
  52. </tr>
  53. '; end
  54. _buf << ' </tbody>
  55. </table>
  56. '; $stderr.puts("*** debug: i+1=#{(i+1).inspect}"); _buf << '
  57. ';
  58. _buf.to_s
  59. ##
  60. - name: php1
  61. lang: php
  62. class: Ephp
  63. options:
  64. input: |
  65. <table>
  66. <tbody>
  67. <%
  68. $i = 0;
  69. foreach ($list as $item) {
  70. $i++;
  71. %>
  72. <tr>
  73. <td><%= $i %></td>
  74. <td><%== $item %></td>
  75. </tr>
  76. <%
  77. }
  78. %>
  79. </tbody>
  80. </table>
  81. <%=== $i %>
  82. expected: |
  83. <table>
  84. <tbody>
  85. <?php
  86. $i = 0;
  87. foreach ($list as $item) {
  88. $i++;
  89. ?>
  90. <tr>
  91. <td><?php echo $i; ?></td>
  92. <td><?php echo htmlspecialchars($item); ?></td>
  93. </tr>
  94. <?php
  95. }
  96. ?>
  97. </tbody>
  98. </table>
  99. <?php error_log('*** debug: $i='.($i), 0); ?>
  100. ##
  101. - name: c1
  102. lang: c
  103. class: Ec
  104. options: { :filename: foo.html, :indent: ' ' }
  105. input: |4
  106. <table>
  107. <tbody>
  108. <% for (i = 0; i < list; i++) { %>
  109. <tr>
  110. <td><%= "%d", i %></td>
  111. <td><%== list[i] %></td>
  112. </tr>
  113. <% } %>
  114. </tbody>
  115. </table>
  116. <%=== "%d", i %>
  117. expected: |
  118. #line 1 "foo.html"
  119. fputs("<table>\n"
  120. " <tbody>\n", stdout);
  121. for (i = 0; i < list; i++) {
  122. fputs(" <tr>\n"
  123. " <td>", stdout); fprintf(stdout, "%d", i); fputs("</td>\n"
  124. " <td>", stdout); escape(list[i], stdout); fputs("</td>\n"
  125. " </tr>\n", stdout);
  126. }
  127. fputs(" </tbody>\n"
  128. "</table>\n", stdout);
  129. fprintf(stderr, "*** debug: i=" "%d", i); fputs("\n", stdout);
  130. ##
  131. - name: java1
  132. lang: java
  133. class: Ejava
  134. options: { :buf: _buf, :bufclass: StringBuilder, :indent: ' ' }
  135. input: |
  136. <table>
  137. <tbody>
  138. <%
  139. int i = 0;
  140. for (Iterator it = list.iterator(); it.hasNext(); ) {
  141. String s = (String)it.next();
  142. i++;
  143. %>
  144. <tr class="<%= i%2==0 ? "even" : "odd" %>">
  145. <td><%= i %></td>
  146. <td><%== s %></td>
  147. </tr>
  148. <%
  149. }
  150. %>
  151. <tbody>
  152. </table>
  153. <%=== i %>
  154. expected: |4
  155. StringBuilder _buf = new StringBuilder(); _buf.append("<table>\n"
  156. + " <tbody>\n");
  157. int i = 0;
  158. for (Iterator it = list.iterator(); it.hasNext(); ) {
  159. String s = (String)it.next();
  160. i++;
  161. _buf.append(" <tr class=\""); _buf.append(i%2==0 ? "even" : "odd"); _buf.append("\">\n"
  162. + " <td>"); _buf.append(i); _buf.append("</td>\n"
  163. + " <td>"); _buf.append(escape(s)); _buf.append("</td>\n"
  164. + " </tr>\n");
  165. }
  166. _buf.append(" <tbody>\n"
  167. + "</table>\n");
  168. System.err.println("*** debug: i="+(i)); _buf.append("\n");
  169. return _buf.toString();
  170. ##
  171. - name: scheme1
  172. lang: scheme
  173. class: Escheme
  174. options:
  175. input: &scheme1_input|
  176. <% (let ((i 0)) %>
  177. <table>
  178. <tbody>
  179. <%
  180. (for-each
  181. (lambda (item)
  182. (set! i (+ i 1))
  183. %>
  184. <tr>
  185. <td><%= i %></td>
  186. <td><%== item %></td>
  187. </tr>
  188. <%
  189. ); lambda end
  190. list); for-each end
  191. %>
  192. </tbody>
  193. </table>
  194. <%=== i %>
  195. <% ); let end %>
  196. expected: |4
  197. (let ((_buf '())) (define (_add x) (set! _buf (cons x _buf))) (let ((i 0))
  198. (_add "<table>
  199. <tbody>\n")
  200. (for-each
  201. (lambda (item)
  202. (set! i (+ i 1))
  203. (_add " <tr>
  204. <td>")(_add i)(_add "</td>
  205. <td>")(_add (escape item))(_add "</td>
  206. </tr>\n")
  207. ); lambda end
  208. list); for-each end
  209. (_add " </tbody>
  210. </table>\n")
  211. (display "*** debug: i=")(display i)(display "\n")(_add "\n")
  212. ); let end
  213. (reverse _buf))
  214. ##
  215. - name: scheme2
  216. lang: scheme
  217. class: Escheme
  218. options: { :func: 'display' }
  219. input: *scheme1_input
  220. expected: |4
  221. (let ((i 0))
  222. (display "<table>
  223. <tbody>\n")
  224. (for-each
  225. (lambda (item)
  226. (set! i (+ i 1))
  227. (display " <tr>
  228. <td>")(display i)(display "</td>
  229. <td>")(display (escape item))(display "</td>
  230. </tr>\n")
  231. ); lambda end
  232. list); for-each end
  233. (display " </tbody>
  234. </table>\n")
  235. (display "*** debug: i=")(display i)(display "\n")(display "\n")
  236. ); let end
  237. ##
  238. - name: perl1
  239. lang: perl
  240. class: Eperl
  241. options:
  242. input: |
  243. <%
  244. my $user = 'Erubis';
  245. my @list = ('<aaa>', 'b&b', '"ccc"');
  246. %>
  247. <p>Hello <%= $user %>!</p>
  248. <table>
  249. <tbody>
  250. <% $i = 0; %>
  251. <% for $item (@list) { %>
  252. <tr bgcolor=<%= ++$i % 2 == 0 ? '#FFCCCC' : '#CCCCFF' %>">
  253. <td><%= $i %></td>
  254. <td><%== $item %></td>
  255. </tr>
  256. <% } %>
  257. </tbody>
  258. </table>
  259. <%=== $i %>
  260. expected: |4
  261. use HTML::Entities;
  262. my $user = 'Erubis';
  263. my @list = ('<aaa>', 'b&b', '"ccc"');
  264. print('<p>Hello '); print($user); print('!</p>
  265. <table>
  266. <tbody>
  267. '); $i = 0;
  268. for $item (@list) {
  269. print(' <tr bgcolor='); print(++$i % 2 == 0 ? '#FFCCCC' : '#CCCCFF'); print('">
  270. <td>'); print($i); print('</td>
  271. <td>'); print(encode_entities($item)); print('</td>
  272. </tr>
  273. '); }
  274. print(' </tbody>
  275. </table>
  276. '); print('*** debug: $i=', $i, "\n");print('
  277. ');
  278. ##
  279. - name: javascript1
  280. lang: javascript
  281. class: Ejavascript
  282. options:
  283. input: &javascript_input |
  284. <%
  285. var user = 'Erubis';
  286. var list = ['<aaa>', 'b&b', '"ccc"'];
  287. %>
  288. <p>Hello <%= user %>!</p>
  289. <table>
  290. <tbody>
  291. <% var i; %>
  292. <% for (i = 0; i < list.length; i++) { %>
  293. <tr bgcolor=<%= ++i % 2 == 0 ? '#FFCCCC' : '#CCCCFF' %>">
  294. <td><%= i %></td>
  295. <td><%= list[i] %></td>
  296. </tr>
  297. <% } %>
  298. </tbody>
  299. </table>
  300. <%=== i %>
  301. expected: |4
  302. var _buf = [];
  303. var user = 'Erubis';
  304. var list = ['<aaa>', 'b&b', '"ccc"'];
  305. _buf.push("<p>Hello "); _buf.push(user); _buf.push("!</p>\n\
  306. <table>\n\
  307. <tbody>\n");
  308. var i;
  309. for (i = 0; i < list.length; i++) {
  310. _buf.push(" <tr bgcolor="); _buf.push(++i % 2 == 0 ? '#FFCCCC' : '#CCCCFF'); _buf.push("\">\n\
  311. <td>"); _buf.push(i); _buf.push("</td>\n\
  312. <td>"); _buf.push(list[i]); _buf.push("</td>\n\
  313. </tr>\n");
  314. }
  315. _buf.push(" </tbody>\n\
  316. </table>\n");
  317. alert("*** debug: i="+(i)); _buf.push("\n");
  318. document.write(_buf.join(""));
  319. ##
  320. - name: javascript2
  321. lang: javascript
  322. class: Ejavascript
  323. options: { :docwrite: false }
  324. input: *javascript_input
  325. expected: |4
  326. var _buf = [];
  327. var user = 'Erubis';
  328. var list = ['<aaa>', 'b&b', '"ccc"'];
  329. _buf.push("<p>Hello "); _buf.push(user); _buf.push("!</p>\n\
  330. <table>\n\
  331. <tbody>\n");
  332. var i;
  333. for (i = 0; i < list.length; i++) {
  334. _buf.push(" <tr bgcolor="); _buf.push(++i % 2 == 0 ? '#FFCCCC' : '#CCCCFF'); _buf.push("\">\n\
  335. <td>"); _buf.push(i); _buf.push("</td>\n\
  336. <td>"); _buf.push(list[i]); _buf.push("</td>\n\
  337. </tr>\n");
  338. }
  339. _buf.push(" </tbody>\n\
  340. </table>\n");
  341. alert("*** debug: i="+(i)); _buf.push("\n");
  342. _buf.join("");
  343. ##