IOWA 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (502) hide show
  1. checksums.yaml +7 -0
  2. data/CONTRIBUTORS +14 -0
  3. data/README.md +23 -0
  4. data/RELEASE_NOTES +77 -0
  5. data/ToDo +21 -0
  6. data/components/CRUDList/CRUDList.html +13 -0
  7. data/components/CRUDList/CRUDList.iwa +136 -0
  8. data/components/Content/Content.html +0 -0
  9. data/components/Content/Content.iwa +143 -0
  10. data/components/Content/example/README +9 -0
  11. data/components/Content/example/cgi/iowa.cgi +10 -0
  12. data/components/Content/example/demo.rb +30 -0
  13. data/components/Content/example/doc/index.html +7 -0
  14. data/components/Content/example/iowa/Content.html +1 -0
  15. data/components/Content/example/iowa/Content.iwa +1 -0
  16. data/components/Content/example/iowa/Main.html +6 -0
  17. data/components/Content/example/iowa/Main.iwa +3 -0
  18. data/components/Content/example/iowa/_content/body +7 -0
  19. data/components/Content/example/iowa/_content/body2 +3 -0
  20. data/components/Content/example/iowa/_content/title +2 -0
  21. data/components/Content/example/iowa/app.cnf +8 -0
  22. data/components/Content/example/iowa/app.rb +8 -0
  23. data/components/Content/example/webrick.rb +38 -0
  24. data/components/Include/Include.html +1 -0
  25. data/components/Include/Include.iwa +30 -0
  26. data/components/Include/readme +5 -0
  27. data/components/JumpTo/JumpTo.html +8 -0
  28. data/components/JumpTo/JumpTo.iwa +8 -0
  29. data/components/JumpTo/readme +6 -0
  30. data/doc/Architecture.txt +6 -0
  31. data/doc/History.txt +33 -0
  32. data/doc/StandardDispatcher.txt +19 -0
  33. data/examples/blog/README +1 -0
  34. data/examples/hello_world/README +17 -0
  35. data/examples/hello_world/htdocs/hello_world_html.html +24 -0
  36. data/examples/hello_world/htdocs/hello_world_ruby.html +41 -0
  37. data/examples/hello_world/iowa/HelloWorld.html +14 -0
  38. data/examples/hello_world/iowa/HelloWorld.iwa +31 -0
  39. data/examples/hello_world/iowa/Index.html +16 -0
  40. data/examples/hello_world/iowa/Index.iwa +5 -0
  41. data/examples/hello_world/iowa/iowa_hello_world.cnf +19 -0
  42. data/examples/hello_world/iowa/iowa_hello_world.rb +5 -0
  43. data/examples/hello_world/iowa/mapfile.cnf +6 -0
  44. data/examples/hw1/iowa/Main.html +1 -0
  45. data/examples/hw1/iowa/README +9 -0
  46. data/examples/hw1/iowa/hw.rb +4 -0
  47. data/examples/hw2/iowa/Main.html +10 -0
  48. data/examples/hw2/iowa/Main.iwa +7 -0
  49. data/examples/hw2/iowa/README +16 -0
  50. data/examples/hw2/iowa/hw.rb +4 -0
  51. data/examples/hw3/iowa/Main.html +11 -0
  52. data/examples/hw3/iowa/Main.iwa +7 -0
  53. data/examples/hw3/iowa/README +22 -0
  54. data/examples/hw3/iowa/hw.rb +4 -0
  55. data/examples/hw4/iowa/Greetings.html +10 -0
  56. data/examples/hw4/iowa/Greetings.iwa +9 -0
  57. data/examples/hw4/iowa/Main.html +12 -0
  58. data/examples/hw4/iowa/Main.iwa +10 -0
  59. data/examples/hw4/iowa/README +28 -0
  60. data/examples/hw4/iowa/hw.rb +4 -0
  61. data/examples/hw5/iowa/Footer.html +2 -0
  62. data/examples/hw5/iowa/Greetings.html +4 -0
  63. data/examples/hw5/iowa/Greetings.iwa +12 -0
  64. data/examples/hw5/iowa/Header.html +6 -0
  65. data/examples/hw5/iowa/Main.html +12 -0
  66. data/examples/hw5/iowa/Main.iwa +13 -0
  67. data/examples/hw5/iowa/README +16 -0
  68. data/examples/hw5/iowa/hw.rb +4 -0
  69. data/examples/template_server/iowa/Content.iwa +121 -0
  70. data/examples/template_server/iowa/Content.view +0 -0
  71. data/examples/template_server/iowa/DBContentDispatcher.rb +112 -0
  72. data/examples/template_server/iowa/DBContentPage.html +3 -0
  73. data/examples/template_server/iowa/DBContentPage.iwa +85 -0
  74. data/examples/template_server/iowa/app.cnf +13 -0
  75. data/examples/template_server/iowa/app.rb +5 -0
  76. data/ext/Classifier/classifier.c +256 -0
  77. data/ext/Classifier/ext_help.h +14 -0
  78. data/ext/Classifier/extconf.rb +5 -0
  79. data/ext/Classifier/tst.h +40 -0
  80. data/ext/Classifier/tst_cleanup.c +24 -0
  81. data/ext/Classifier/tst_delete.c +146 -0
  82. data/ext/Classifier/tst_grow_node_free_list.c +38 -0
  83. data/ext/Classifier/tst_init.c +41 -0
  84. data/ext/Classifier/tst_insert.c +192 -0
  85. data/ext/Classifier/tst_search.c +68 -0
  86. data/ext/http11/README +11 -0
  87. data/ext/http11/ext_help.h +15 -0
  88. data/ext/http11/extconf.rb +5 -0
  89. data/ext/http11/http11.c +534 -0
  90. data/ext/http11/http11.c.dif +422 -0
  91. data/ext/http11/http11_parser.c +1243 -0
  92. data/ext/http11/http11_parser.c.dif +193 -0
  93. data/ext/http11/http11_parser.h +49 -0
  94. data/ext/http11/http11_parser.h.dif +20 -0
  95. data/ext/http11/http11_parser.rl +192 -0
  96. data/ext/httpmachine/Makefile +149 -0
  97. data/ext/httpmachine/extconf.rb +33 -0
  98. data/ext/httpmachine/http.cpp +430 -0
  99. data/ext/httpmachine/http.h +156 -0
  100. data/ext/httpmachine/rubyhttp.cpp +165 -0
  101. data/external/mime-types/LICENCE +18 -0
  102. data/external/mime-types/README +46 -0
  103. data/external/mime-types/doc/classes/MIME.html +120 -0
  104. data/external/mime-types/doc/classes/MIME/InvalidContentType.html +119 -0
  105. data/external/mime-types/doc/classes/MIME/Type.html +866 -0
  106. data/external/mime-types/doc/classes/MIME/Type.src/M000010.html +22 -0
  107. data/external/mime-types/doc/classes/MIME/Type.src/M000011.html +18 -0
  108. data/external/mime-types/doc/classes/MIME/Type.src/M000012.html +19 -0
  109. data/external/mime-types/doc/classes/MIME/Type.src/M000013.html +18 -0
  110. data/external/mime-types/doc/classes/MIME/Type.src/M000014.html +26 -0
  111. data/external/mime-types/doc/classes/MIME/Type.src/M000015.html +33 -0
  112. data/external/mime-types/doc/classes/MIME/Type.src/M000016.html +27 -0
  113. data/external/mime-types/doc/classes/MIME/Type.src/M000017.html +35 -0
  114. data/external/mime-types/doc/classes/MIME/Type.src/M000018.html +34 -0
  115. data/external/mime-types/doc/classes/MIME/Type.src/M000019.html +24 -0
  116. data/external/mime-types/doc/classes/MIME/Type.src/M000020.html +38 -0
  117. data/external/mime-types/doc/classes/MIME/Type.src/M000021.html +22 -0
  118. data/external/mime-types/doc/classes/MIME/Type.src/M000022.html +18 -0
  119. data/external/mime-types/doc/classes/MIME/Type.src/M000023.html +18 -0
  120. data/external/mime-types/doc/classes/MIME/Type.src/M000024.html +18 -0
  121. data/external/mime-types/doc/classes/MIME/Type.src/M000025.html +18 -0
  122. data/external/mime-types/doc/classes/MIME/Type.src/M000026.html +18 -0
  123. data/external/mime-types/doc/classes/MIME/Type.src/M000027.html +18 -0
  124. data/external/mime-types/doc/classes/MIME/Type.src/M000028.html +18 -0
  125. data/external/mime-types/doc/classes/MIME/Type.src/M000029.html +18 -0
  126. data/external/mime-types/doc/classes/MIME/Type.src/M000030.html +19 -0
  127. data/external/mime-types/doc/classes/MIME/Type.src/M000031.html +26 -0
  128. data/external/mime-types/doc/classes/MIME/Types.html +459 -0
  129. data/external/mime-types/doc/classes/MIME/Types.src/M000001.html +19 -0
  130. data/external/mime-types/doc/classes/MIME/Types.src/M000002.html +32 -0
  131. data/external/mime-types/doc/classes/MIME/Types.src/M000003.html +21 -0
  132. data/external/mime-types/doc/classes/MIME/Types.src/M000004.html +18 -0
  133. data/external/mime-types/doc/classes/MIME/Types.src/M000005.html +26 -0
  134. data/external/mime-types/doc/classes/MIME/Types.src/M000006.html +18 -0
  135. data/external/mime-types/doc/classes/MIME/Types.src/M000007.html +18 -0
  136. data/external/mime-types/doc/classes/MIME/Types.src/M000008.html +18 -0
  137. data/external/mime-types/doc/classes/MIME/Types.src/M000009.html +18 -0
  138. data/external/mime-types/doc/created.rid +1 -0
  139. data/external/mime-types/doc/files/ChangeLog.html +320 -0
  140. data/external/mime-types/doc/files/README.html +145 -0
  141. data/external/mime-types/doc/files/lib/mime/types_rb.html +101 -0
  142. data/external/mime-types/doc/fr_class_index.html +30 -0
  143. data/external/mime-types/doc/fr_file_index.html +29 -0
  144. data/external/mime-types/doc/fr_method_index.html +57 -0
  145. data/external/mime-types/doc/index.html +24 -0
  146. data/external/mime-types/doc/rdoc-style.css +208 -0
  147. data/external/mime-types/lib/mime/types.rb +1558 -0
  148. data/external/package.rb +672 -0
  149. data/external/test_support.rb +95 -0
  150. data/external/tmail/README +7 -0
  151. data/external/tmail/tmail.rb +4 -0
  152. data/external/tmail/tmail/address.rb +222 -0
  153. data/external/tmail/tmail/base64.rb +52 -0
  154. data/external/tmail/tmail/compat.rb +39 -0
  155. data/external/tmail/tmail/config.rb +50 -0
  156. data/external/tmail/tmail/encode.rb +447 -0
  157. data/external/tmail/tmail/header.rb +895 -0
  158. data/external/tmail/tmail/info.rb +14 -0
  159. data/external/tmail/tmail/loader.rb +1 -0
  160. data/external/tmail/tmail/mail.rb +869 -0
  161. data/external/tmail/tmail/mailbox.rb +386 -0
  162. data/external/tmail/tmail/mbox.rb +1 -0
  163. data/external/tmail/tmail/net.rb +260 -0
  164. data/external/tmail/tmail/obsolete.rb +123 -0
  165. data/external/tmail/tmail/parser.rb +1475 -0
  166. data/external/tmail/tmail/parser.y +372 -0
  167. data/external/tmail/tmail/port.rb +356 -0
  168. data/external/tmail/tmail/scanner.rb +17 -0
  169. data/external/tmail/tmail/scanner_r.rb +243 -0
  170. data/external/tmail/tmail/stringio.rb +256 -0
  171. data/external/tmail/tmail/textutils.rb +197 -0
  172. data/external/tmail/tmail/tmail.rb +1 -0
  173. data/external/tmail/tmail/utils.rb +23 -0
  174. data/external/win32-process/README +133 -0
  175. data/external/win32-process/lib/win32/process.rb +561 -0
  176. data/external/windows-pr/README +145 -0
  177. data/external/windows-pr/doc/conversion_guide.txt +25 -0
  178. data/external/windows-pr/lib/windows/clipboard.rb +72 -0
  179. data/external/windows-pr/lib/windows/console.rb +323 -0
  180. data/external/windows-pr/lib/windows/device_io.rb +88 -0
  181. data/external/windows-pr/lib/windows/directory.rb +80 -0
  182. data/external/windows-pr/lib/windows/error.rb +313 -0
  183. data/external/windows-pr/lib/windows/eventlog.rb +120 -0
  184. data/external/windows-pr/lib/windows/file.rb +349 -0
  185. data/external/windows-pr/lib/windows/filesystem.rb +16 -0
  186. data/external/windows-pr/lib/windows/handle.rb +31 -0
  187. data/external/windows-pr/lib/windows/library.rb +76 -0
  188. data/external/windows-pr/lib/windows/limits.rb +13 -0
  189. data/external/windows-pr/lib/windows/memory.rb +117 -0
  190. data/external/windows-pr/lib/windows/msvcrt/buffer.rb +48 -0
  191. data/external/windows-pr/lib/windows/msvcrt/file.rb +18 -0
  192. data/external/windows-pr/lib/windows/msvcrt/string.rb +46 -0
  193. data/external/windows-pr/lib/windows/national.rb +557 -0
  194. data/external/windows-pr/lib/windows/path.rb +296 -0
  195. data/external/windows-pr/lib/windows/pipe.rb +77 -0
  196. data/external/windows-pr/lib/windows/process.rb +171 -0
  197. data/external/windows-pr/lib/windows/registry.rb +238 -0
  198. data/external/windows-pr/lib/windows/security.rb +89 -0
  199. data/external/windows-pr/lib/windows/service.rb +183 -0
  200. data/external/windows-pr/lib/windows/shell.rb +88 -0
  201. data/external/windows-pr/lib/windows/sound.rb +52 -0
  202. data/external/windows-pr/lib/windows/synchronize.rb +161 -0
  203. data/external/windows-pr/lib/windows/system_info.rb +70 -0
  204. data/external/windows-pr/lib/windows/unicode.rb +138 -0
  205. data/external/windows-pr/lib/windows/window.rb +22 -0
  206. data/iowa.gemspec +45 -0
  207. data/microprojects/DiskCache/LICENSE +28 -0
  208. data/microprojects/DiskCache/README +17 -0
  209. data/microprojects/DiskCache/external/package.rb +608 -0
  210. data/microprojects/DiskCache/external/test_support.rb +8 -0
  211. data/microprojects/DiskCache/setup.rb +22 -0
  212. data/microprojects/DiskCache/src/iowa/Association.rb +67 -0
  213. data/microprojects/DiskCache/src/iowa/Constants.rb +159 -0
  214. data/microprojects/DiskCache/src/iowa/DiskStore.rb +377 -0
  215. data/microprojects/DiskCache/src/iowa/Hash.rb +63 -0
  216. data/microprojects/DiskCache/src/iowa/Lockfile.rb +575 -0
  217. data/microprojects/DiskCache/src/iowa/Mutex.rb +142 -0
  218. data/microprojects/DiskCache/src/iowa/caches/DiskCache.rb +605 -0
  219. data/microprojects/DiskCache/src/iowa/caches/LRUCache.rb +287 -0
  220. data/microprojects/DiskCache/test/TC_DiskCache.rb +218 -0
  221. data/microprojects/LRUCache/LICENSE +28 -0
  222. data/microprojects/LRUCache/README +13 -0
  223. data/microprojects/LRUCache/external/package.rb +608 -0
  224. data/microprojects/LRUCache/external/test_support.rb +8 -0
  225. data/microprojects/LRUCache/setup.rb +22 -0
  226. data/microprojects/LRUCache/src/iowa/Association.rb +57 -0
  227. data/microprojects/LRUCache/src/iowa/Constants.rb +159 -0
  228. data/microprojects/LRUCache/src/iowa/Hash.rb +63 -0
  229. data/microprojects/LRUCache/src/iowa/Mutex.rb +129 -0
  230. data/microprojects/LRUCache/src/iowa/caches/LRUCache.rb +287 -0
  231. data/microprojects/LRUCache/test/TC_LRUCache.rb +65 -0
  232. data/microprojects/LinkedList/LICENSE +28 -0
  233. data/microprojects/LinkedList/README +13 -0
  234. data/microprojects/LinkedList/external/package.rb +608 -0
  235. data/microprojects/LinkedList/external/test_support.rb +8 -0
  236. data/microprojects/LinkedList/setup.rb +22 -0
  237. data/microprojects/LinkedList/src/iowa/LinkedList.rb +165 -0
  238. data/microprojects/LinkedList/test/TC_LinkedList.rb +42 -0
  239. data/microprojects/README +8 -0
  240. data/setup.rb +116 -0
  241. data/share/iowa/app_skeleton/Main.html +8 -0
  242. data/share/iowa/app_skeleton/Main.iwa +15 -0
  243. data/share/iowa/app_skeleton/app.cnf +48 -0
  244. data/share/iowa/app_skeleton/app.rb +58 -0
  245. data/share/iowa/app_skeleton/models/model.rb +49 -0
  246. data/src/ihc.rb +223 -0
  247. data/src/iowa.cgi +29 -0
  248. data/src/iowa.rb +637 -0
  249. data/src/iowa/AbstractCache.rb +96 -0
  250. data/src/iowa/AcceptLanguage.rb +76 -0
  251. data/src/iowa/Application.rb +928 -0
  252. data/src/iowa/ApplicationStats.rb +72 -0
  253. data/src/iowa/Association.rb +67 -0
  254. data/src/iowa/BindingsParser.rb +62 -0
  255. data/src/iowa/Breakpoint.rb +273 -0
  256. data/src/iowa/CSS.rb +564 -0
  257. data/src/iowa/Client.rb +192 -0
  258. data/src/iowa/Component.rb +405 -0
  259. data/src/iowa/ComponentProxy.rb +26 -0
  260. data/src/iowa/Config.rb +21 -0
  261. data/src/iowa/Constants.rb +226 -0
  262. data/src/iowa/Context.rb +218 -0
  263. data/src/iowa/ContextLogger.rb +16 -0
  264. data/src/iowa/DbPool.rb +222 -0
  265. data/src/iowa/DetachedComponent.rb +18 -0
  266. data/src/iowa/Dispatcher.rb +27 -0
  267. data/src/iowa/DynamicElements.rb +471 -0
  268. data/src/iowa/Element.rb +100 -0
  269. data/src/iowa/Email.rb +287 -0
  270. data/src/iowa/Extensions/AllExtensions.rb +4 -0
  271. data/src/iowa/Extensions/Class.rb +94 -0
  272. data/src/iowa/Extensions/Date.rb +88 -0
  273. data/src/iowa/Extensions/DateTime.rb +88 -0
  274. data/src/iowa/Extensions/Hash.rb +22 -0
  275. data/src/iowa/Extensions/Kernel.rb +6 -0
  276. data/src/iowa/Extensions/Numeric.rb +47 -0
  277. data/src/iowa/Extensions/Object.rb +11 -0
  278. data/src/iowa/Extensions/String.rb +60 -0
  279. data/src/iowa/Extensions/Time.rb +89 -0
  280. data/src/iowa/Extensions/TimeExtensions.rb +6 -0
  281. data/src/iowa/Form.rb +368 -0
  282. data/src/iowa/Hash.rb +85 -0
  283. data/src/iowa/ISAAC.rb +175 -0
  284. data/src/iowa/ImageSize.rb +279 -0
  285. data/src/iowa/IowaComponentMixins.rb +7 -0
  286. data/src/iowa/JSON-lexer.rb +296 -0
  287. data/src/iowa/JSON-objects.rb +201 -0
  288. data/src/iowa/KeyValueCoding.rb +91 -0
  289. data/src/iowa/LinkedList.rb +175 -0
  290. data/src/iowa/Loader.rb +22 -0
  291. data/src/iowa/Lockfile.rb +575 -0
  292. data/src/iowa/Logger.rb +74 -0
  293. data/src/iowa/Monkey.rb +20 -0
  294. data/src/iowa/Mutex.rb +142 -0
  295. data/src/iowa/Policy.rb +70 -0
  296. data/src/iowa/Pool.rb +243 -0
  297. data/src/iowa/PrettyException.rb +1091 -0
  298. data/src/iowa/Request.rb +244 -0
  299. data/src/iowa/Response.rb +133 -0
  300. data/src/iowa/Session.rb +354 -0
  301. data/src/iowa/SessionStats.rb +78 -0
  302. data/src/iowa/String.rb +65 -0
  303. data/src/iowa/Tag.rb +101 -0
  304. data/src/iowa/TemplateParser.rb +236 -0
  305. data/src/iowa/Util.rb +314 -0
  306. data/src/iowa/Webcache.rb +122 -0
  307. data/src/iowa/caches/BiLevelCache.rb +65 -0
  308. data/src/iowa/caches/ClassLimitedCache.rb +67 -0
  309. data/src/iowa/caches/DiskCache.rb +609 -0
  310. data/src/iowa/caches/DiskStore.rb +380 -0
  311. data/src/iowa/caches/LRUCache-alternative.rb +155 -0
  312. data/src/iowa/caches/LRUCache.rb +290 -0
  313. data/src/iowa/caches/SimpleLRUCache.rb +112 -0
  314. data/src/iowa/dispatchers/StandardDispatcher.rb +396 -0
  315. data/src/iowa/dispatchers/StandardDispatcherWithClassifier.rb +93 -0
  316. data/src/iowa/js/iowa_jsonrpc.js +381 -0
  317. data/src/iowa/js/jsonrpc.js +187 -0
  318. data/src/iowa/js/jsonrpc_async.js +261 -0
  319. data/src/iowa/loaders/DiskLoader.rb +50 -0
  320. data/src/iowa/loggers/Analogger.rb +54 -0
  321. data/src/iowa/loggers/AsyncLogger.rb +54 -0
  322. data/src/iowa/loggers/BitBucket.rb +38 -0
  323. data/src/iowa/loggers/Log4R.rb +13 -0
  324. data/src/iowa/loggers/Log4rLogger.rb +48 -0
  325. data/src/iowa/loggers/Logger.rb +29 -0
  326. data/src/iowa/loggers/RubyLogger.rb +9 -0
  327. data/src/iowa/pools/DBConnectionPool.rb +53 -0
  328. data/src/iowa/request/Apache.rb +90 -0
  329. data/src/iowa/request/EMHybrid.rb +59 -0
  330. data/src/iowa/request/ENV.rb +80 -0
  331. data/src/iowa/request/FCGI.rb +68 -0
  332. data/src/iowa/request/HTTPMachine.rb +75 -0
  333. data/src/iowa/request/Mongrel.rb +68 -0
  334. data/src/iowa/request/WEBrick.rb +48 -0
  335. data/src/iowa/version.rb +3 -0
  336. data/src/iowa/webrick/HTTPServer.rb +43 -0
  337. data/src/iowa/webrick/WEBrickServlet.rb +28 -0
  338. data/src/iowa_fcgi_handler.rb +101 -0
  339. data/src/iowa_httpmachine.rb +141 -0
  340. data/src/iowa_hybrid.rb +193 -0
  341. data/src/iowa_hybrid_cluster.rb +231 -0
  342. data/src/iowa_mongrel.rb +136 -0
  343. data/src/iowa_webrick.rb +194 -0
  344. data/src/iowa_webrick_legacy.rb +104 -0
  345. data/src/mod_iowa.rb +104 -0
  346. data/tcss.rb +61 -0
  347. data/test/README.windows +12 -0
  348. data/test/TC_AcceptLanguage.rb +61 -0
  349. data/test/TC_AppConfig.rb +43 -0
  350. data/test/TC_AppConfig/cgi/iowa.cgi +7 -0
  351. data/test/TC_AppConfig/doc/index.html +1 -0
  352. data/test/TC_AppConfig/iowa/Main.html +4 -0
  353. data/test/TC_AppConfig/iowa/Main.iwa +17 -0
  354. data/test/TC_AppConfig/iowa/README +1 -0
  355. data/test/TC_AppConfig/iowa/app.cnf +19 -0
  356. data/test/TC_AppConfig/iowa/app.rb +8 -0
  357. data/test/TC_AppConfig/webrick.rb +38 -0
  358. data/test/TC_Association.rb +29 -0
  359. data/test/TC_BiLevelCache.rb +71 -0
  360. data/test/TC_CGI_Adaptor.rb +55 -0
  361. data/test/TC_CGI_Adaptor/cgi/iowa.cgi +7 -0
  362. data/test/TC_CGI_Adaptor/doc/index.html +1 -0
  363. data/test/TC_CGI_Adaptor/iowa/Main.html +8 -0
  364. data/test/TC_CGI_Adaptor/iowa/Main.iwa +14 -0
  365. data/test/TC_CGI_Adaptor/iowa/README +1 -0
  366. data/test/TC_CGI_Adaptor/iowa/app.cnf +8 -0
  367. data/test/TC_CGI_Adaptor/iowa/app.rb +8 -0
  368. data/test/TC_CGI_Adaptor/webrick.rb +38 -0
  369. data/test/TC_CSS.rb +660 -0
  370. data/test/TC_ClassLimitedCache.rb +89 -0
  371. data/test/TC_Classifier.rb +80 -0
  372. data/test/TC_DbPool.rb +127 -0
  373. data/test/TC_DiskCache.rb +218 -0
  374. data/test/TC_Hybrid.rb +58 -0
  375. data/test/TC_Hybrid/doc/thing.txt +1 -0
  376. data/test/TC_Hybrid/iowa/Main.html +3 -0
  377. data/test/TC_Hybrid/iowa/Main.iwa +7 -0
  378. data/test/TC_Hybrid/iowa/NewPage.html +1 -0
  379. data/test/TC_Hybrid/iowa/NewPage.iwa +5 -0
  380. data/test/TC_Hybrid/iowa/app.cnf +10 -0
  381. data/test/TC_Hybrid/iowa/app.rb +5 -0
  382. data/test/TC_IOWAFunctions/doc/Ajax1.html +1 -0
  383. data/test/TC_IOWAFunctions/doc/Ajax1.iwa +1 -0
  384. data/test/TC_IOWAFunctions/doc/index.html +1 -0
  385. data/test/TC_IOWAFunctions/doc/js/dojo.js +9686 -0
  386. data/test/TC_IOWAFunctions/iowa/Ajax1.html +40 -0
  387. data/test/TC_IOWAFunctions/iowa/Ajax1.iwa +23 -0
  388. data/test/TC_IOWAFunctions/iowa/AjaxWidget.iwa +19 -0
  389. data/test/TC_IOWAFunctions/iowa/AjaxWidget.view +22 -0
  390. data/test/TC_IOWAFunctions/iowa/DanielTest.html +9 -0
  391. data/test/TC_IOWAFunctions/iowa/DanielTest.iwa +10 -0
  392. data/test/TC_IOWAFunctions/iowa/IntervalWidget.html +1 -0
  393. data/test/TC_IOWAFunctions/iowa/IntervalWidget.iwa +14 -0
  394. data/test/TC_IOWAFunctions/iowa/Main.html +1 -0
  395. data/test/TC_IOWAFunctions/iowa/NestedRepeat1.html +12 -0
  396. data/test/TC_IOWAFunctions/iowa/NestedRepeat1.iwa +24 -0
  397. data/test/TC_IOWAFunctions/iowa/RPCResponse.iwa +7 -0
  398. data/test/TC_IOWAFunctions/iowa/RPCResponse.view +1 -0
  399. data/test/TC_IOWAFunctions/iowa/Repeat1.iwa +31 -0
  400. data/test/TC_IOWAFunctions/iowa/Repeat1.view +9 -0
  401. data/test/TC_IOWAFunctions/iowa/Repeat2.iwa +32 -0
  402. data/test/TC_IOWAFunctions/iowa/Repeat2.view +11 -0
  403. data/test/TC_IOWAFunctions/iowa/Repeat3.iwa +44 -0
  404. data/test/TC_IOWAFunctions/iowa/Repeat3.view +18 -0
  405. data/test/TC_IOWAFunctions/iowa/TesCon.html +1 -0
  406. data/test/TC_IOWAFunctions/iowa/TesCon.iwa +5 -0
  407. data/test/TC_IOWAFunctions/iowa/app.cnf +19 -0
  408. data/test/TC_IOWAFunctions/iowa/app.rb +9 -0
  409. data/test/TC_IOWAFunctions/iowa/mapfile.cnf +8 -0
  410. data/test/TC_ISAAC.rb +52 -0
  411. data/test/TC_ImageSize.rb +84 -0
  412. data/test/TC_ImageSize/img.bmp +0 -0
  413. data/test/TC_ImageSize/img.gif +0 -0
  414. data/test/TC_ImageSize/img.jpg +0 -0
  415. data/test/TC_ImageSize/img.pcx +0 -0
  416. data/test/TC_ImageSize/img.pgm +7144 -0
  417. data/test/TC_ImageSize/img.png +0 -0
  418. data/test/TC_ImageSize/img.ppm +0 -0
  419. data/test/TC_ImageSize/img.psd +0 -0
  420. data/test/TC_ImageSize/img.tiff +0 -0
  421. data/test/TC_ImageSize/img.xbm +22 -0
  422. data/test/TC_KeyValueCoding.rb +35 -0
  423. data/test/TC_LRUCache.rb +296 -0
  424. data/test/TC_LinkedList.rb +46 -0
  425. data/test/TC_Lockfile.rb +106 -0
  426. data/test/TC_Minimal.rb +45 -0
  427. data/test/TC_Minimal/app.cnf +8 -0
  428. data/test/TC_Minimal/cgi-bin/iowa.cgi +11 -0
  429. data/test/TC_Minimal/doc/index.html +1 -0
  430. data/test/TC_Minimal/iowa/Main.html +1 -0
  431. data/test/TC_Minimal/iowa/README +1 -0
  432. data/test/TC_Minimal/iowa/app.rb +3 -0
  433. data/test/TC_Minimal/webrick.rb +38 -0
  434. data/test/TC_Mongrel.rb +58 -0
  435. data/test/TC_Mongrel/doc/thing.txt +1 -0
  436. data/test/TC_Mongrel/iowa/Main.html +3 -0
  437. data/test/TC_Mongrel/iowa/Main.iwa +7 -0
  438. data/test/TC_Mongrel/iowa/NewPage.html +1 -0
  439. data/test/TC_Mongrel/iowa/NewPage.iwa +5 -0
  440. data/test/TC_Mongrel/iowa/app.cnf +10 -0
  441. data/test/TC_Mongrel/iowa/app.rb +5 -0
  442. data/test/TC_NoSubclass.rb +56 -0
  443. data/test/TC_NoSubclass/cgi/iowa.cgi +7 -0
  444. data/test/TC_NoSubclass/doc/index.html +1 -0
  445. data/test/TC_NoSubclass/iowa/Main.html +8 -0
  446. data/test/TC_NoSubclass/iowa/Main.iwa +14 -0
  447. data/test/TC_NoSubclass/iowa/README +1 -0
  448. data/test/TC_NoSubclass/iowa/app.cnf +8 -0
  449. data/test/TC_NoSubclass/iowa/app.rb +5 -0
  450. data/test/TC_NoSubclass/webrick.rb +38 -0
  451. data/test/TC_Pool.rb +139 -0
  452. data/test/TC_RenderedCache/doc/thing.txt +1 -0
  453. data/test/TC_RenderedCache/iowa/BigPage.html +1 -0
  454. data/test/TC_RenderedCache/iowa/BigPage.iwa +12 -0
  455. data/test/TC_RenderedCache/iowa/Main.html +3 -0
  456. data/test/TC_RenderedCache/iowa/Main.iwa +7 -0
  457. data/test/TC_RenderedCache/iowa/NewPage.html +1 -0
  458. data/test/TC_RenderedCache/iowa/NewPage.iwa +11 -0
  459. data/test/TC_RenderedCache/iowa/app.cnf +13 -0
  460. data/test/TC_RenderedCache/iowa/app.rb +5 -0
  461. data/test/TC_RenderedCache/iowa/mapfile.map +4 -0
  462. data/test/TC_ResourceURL.rb +73 -0
  463. data/test/TC_ResourceURL/iowa/Main.html +2 -0
  464. data/test/TC_ResourceURL/iowa/Main.iwa +10 -0
  465. data/test/TC_ResourceURL/iowa/app.cnf +10 -0
  466. data/test/TC_ResourceURL/iowa/app.rb +5 -0
  467. data/test/TC_SimpleDetached.rb +41 -0
  468. data/test/TC_StandardDispatcher.rb +362 -0
  469. data/test/TC_StandardDispatcherWithClassifier.rb +358 -0
  470. data/test/TC_String.rb +24 -0
  471. data/test/TC_Tag.rb +41 -0
  472. data/test/TC_Webrick.rb +56 -0
  473. data/test/TC_Webrick/doc/thing.txt +1 -0
  474. data/test/TC_Webrick/iowa/Main.html +3 -0
  475. data/test/TC_Webrick/iowa/Main.iwa +7 -0
  476. data/test/TC_Webrick/iowa/NewPage.html +1 -0
  477. data/test/TC_Webrick/iowa/NewPage.iwa +5 -0
  478. data/test/TC_Webrick/iowa/app.cnf +10 -0
  479. data/test/TC_Webrick/iowa/app.rb +5 -0
  480. data/test/tc_template.rb +15 -0
  481. data/test/tests.conf +19 -0
  482. data/utils/CVS/Entries +3 -0
  483. data/utils/CVS/Repository +1 -0
  484. data/utils/CVS/Root +1 -0
  485. data/utils/QuickCert-1.0.2.tar.gz +0 -0
  486. data/utils/QuickCert-1.0.2/InstalledFiles +7 -0
  487. data/utils/QuickCert-1.0.2/MANIFEST +10 -0
  488. data/utils/QuickCert-1.0.2/Makefile +15 -0
  489. data/utils/QuickCert-1.0.2/README +56 -0
  490. data/utils/QuickCert-1.0.2/bin/QuickCert +355 -0
  491. data/utils/QuickCert-1.0.2/config.save +12 -0
  492. data/utils/QuickCert-1.0.2/data/examples/ruby/QuickCert/README +60 -0
  493. data/utils/QuickCert-1.0.2/data/examples/ruby/QuickCert/drbssl_c.rb +26 -0
  494. data/utils/QuickCert-1.0.2/data/examples/ruby/QuickCert/drbssl_s.rb +35 -0
  495. data/utils/QuickCert-1.0.2/data/examples/ruby/QuickCert/qc_config +21 -0
  496. data/utils/QuickCert-1.0.2/lib/QuickCert/defaults.rb +28 -0
  497. data/utils/QuickCert-1.0.2/setup.rb +1312 -0
  498. data/utils/iowa_apps +422 -0
  499. data/utils/smtp_sink.rb +9 -0
  500. data/utils/startup_template.cnf +27 -0
  501. data/utils/startup_template.rb +73 -0
  502. metadata +551 -0
@@ -0,0 +1,358 @@
1
+ require 'test/unit'
2
+ require 'external/test_support'
3
+ IWATestSupport.set_src_dir
4
+ require 'iowa/dispatchers/StandardDispatcherWithClassifier'
5
+ require 'benchmark'
6
+
7
+ class ExternalRoutines
8
+ def self.downcase(r)
9
+ r.uri.downcase!
10
+ end
11
+ end
12
+
13
+ class FauxPolicy
14
+ def self.getIDs(_)
15
+ [nil,nil]
16
+ end
17
+ end
18
+
19
+ module Iowa
20
+ def self.app
21
+ Struct.new(:policy).new(FauxPolicy)
22
+ end
23
+ end
24
+
25
+ class TC_StandardDispatcherWithClassifier < Test::Unit::TestCase
26
+
27
+ @@testdir = IWATestSupport.test_dir(__FILE__)
28
+ class Request
29
+ attr_accessor :uri, :hostname, :params, :request_method
30
+ def initialize(uri = nil, hostname = nil, params = nil, request_method = 'GET')
31
+ @uri = uri
32
+ @hostname = hostname
33
+ @params = params
34
+ @request_method = request_method
35
+ end
36
+ end
37
+
38
+ def transforming(uri)
39
+ print "\nTransforming #{uri} -> "
40
+ end
41
+
42
+ def processing(req)
43
+ puts "\nProcessing request #{req.inspect} -> "
44
+ end
45
+
46
+ def setup
47
+ Dir.chdir(@@testdir)
48
+ IWATestSupport.announce(:standard_dispatcher,"Iowa::Dispatchers::StandardDisparcher")
49
+ end
50
+
51
+ def test_a_empty_struct
52
+ rule_struct = []
53
+ assert_nothing_raised("Failure parsing an empty ruleset") do
54
+ rs = Iowa::Dispatchers::StandardDispatcherWithClassifier::RuleSet.new(rule_struct)
55
+ end
56
+ end
57
+
58
+ def test_b_hash_struct1
59
+ rule_struct = {:match => /view/, :sub => 'show'}
60
+ rq = Request.new('/view/3')
61
+ assert_nothing_raised("Failure while parsing ruleset.") do
62
+ rs = Iowa::Dispatchers::StandardDispatcherWithClassifier::RuleSet.new(rule_struct)
63
+ transforming rq.uri
64
+ rs.process(rq)
65
+ puts rq.uri
66
+ assert_equal('/show/3',rq.uri,"The processed request did not return the expected result.")
67
+ end
68
+ end
69
+
70
+ def test_c_hash_struct2
71
+ rule_struct = {:match => 'view', :sub => 'show'}
72
+ rq = Request.new('/view/3')
73
+ assert_nothing_raised("Failure while parsing ruleset.") do
74
+ rs = Iowa::Dispatchers::StandardDispatcherWithClassifier::RuleSet.new(rule_struct)
75
+ transforming rq.uri
76
+ rs.process(rq)
77
+ puts rq.uri
78
+ assert_equal('/show/3',rq.uri,"The processed request did not return the expected result.")
79
+ end
80
+ end
81
+
82
+ def test_d_simple_struct
83
+ rule_struct = [
84
+ {:match => '[A-Z]', :gsub => '{|r,c| c.downcase}'},
85
+ {:match => '\.htm$', :sub => '.html'},
86
+ {:match => '^.*\.php\d*', :sub => '/php_unsupported.html'},
87
+ ]
88
+ rqs = [
89
+ Request.new('/foo/bar.htm'),
90
+ Request.new('/app.php'),
91
+ Request.new('/foo/BAR.HTM')
92
+ ]
93
+ rqso = rqs.dup
94
+
95
+ assert_nothing_raised("Failure while parsing ruleset.") do
96
+ rs = Iowa::Dispatchers::StandardDispatcherWithClassifier::RuleSet.new(rule_struct)
97
+ transforming rqso[0].uri
98
+ rs.process(rqs[0])
99
+ puts rqs[0].uri
100
+ assert_equal('/foo/bar.html',rqs[0].uri,"Transformation incorrect.")
101
+
102
+ transforming rqso[1].uri
103
+ rs.process(rqs[1])
104
+ puts rqs[1].uri
105
+ assert_equal('/php_unsupported.html',rqs[1].uri,"Transformation incorrect.")
106
+
107
+ transforming rqso[2].uri
108
+ rs.process(rqs[2])
109
+ puts rqs[2].uri
110
+ assert_equal('/foo/bar.html',rqs[2].uri,"Transformation incorrect.")
111
+ end
112
+ end
113
+
114
+ def test_e_simple_struct_call_external1
115
+ rule_struct = [
116
+ {:match => '[A-Z]', :call => '::ExternalRoutines.downcase'},
117
+ {:match => '\.htm$', :sub => '.html'}
118
+ ]
119
+ rqs = [
120
+ Request.new('/foo2/bar.htm'),
121
+ Request.new('/foo2/BAR.HTM')
122
+ ]
123
+ rqso = rqs.dup
124
+
125
+ assert_nothing_raised("Failure while parsing ruleset.") do
126
+ rs = Iowa::Dispatchers::StandardDispatcherWithClassifier::RuleSet.new(rule_struct)
127
+ transforming rqso[0].uri
128
+ rs.process(rqs[0])
129
+ puts rqs[0].uri
130
+ assert_equal('/foo2/bar.html',rqs[0].uri,"Transformation incorrect.")
131
+
132
+ transforming rqso[1].uri
133
+ rs.process(rqs[1])
134
+ puts rqs[1].uri
135
+ assert_equal('/foo2/bar.html',rqs[1].uri,"Transformation incorrect.")
136
+ end
137
+ end
138
+
139
+ def test_f_simple_struct_call_external2
140
+ rule_struct = [
141
+ {:match => '[A-Z]', :call => 'external_downcase'},
142
+ {:match => '\.htm$', :sub => '.html'}
143
+ ]
144
+ rqs = [
145
+ Request.new('/foo3/bar.htm'),
146
+ Request.new('/foo3/BAR.HTM')
147
+ ]
148
+ rqso = rqs.dup
149
+
150
+ assert_nothing_raised("Failure while parsing ruleset.") do
151
+ rs = Iowa::Dispatchers::StandardDispatcherWithClassifier::RuleSet.new(rule_struct)
152
+ transforming rqso[0].uri
153
+ rs.process(rqs[0])
154
+ puts rqs[0].uri
155
+ assert_equal('/foo3/bar.html',rqs[0].uri,"Transformation incorrect.")
156
+
157
+ transforming rqso[1].uri
158
+ rs.process(rqs[1])
159
+ puts rqs[1].uri
160
+ assert_equal('/foo3/bar.html',rqs[1].uri,"Transformation incorrect.")
161
+ end
162
+ end
163
+
164
+ def test_g_simple_struct_call_external3
165
+ rule_struct = [
166
+ {:match => '[A-Z]', :eval => 'request.uri.downcase!'},
167
+ {:match => '\.htm$', :sub => '.html'}
168
+ ]
169
+ rqs = [
170
+ Request.new('/foo4/bar.htm'),
171
+ Request.new('/foo4/BAR.HTM')
172
+ ]
173
+ rqso = rqs.dup
174
+
175
+ assert_nothing_raised("Failure while parsing ruleset.") do
176
+ rs = Iowa::Dispatchers::StandardDispatcherWithClassifier::RuleSet.new(rule_struct)
177
+ transforming rqso[0].uri
178
+ rs.process(rqs[0])
179
+ puts rqs[0].uri
180
+ assert_equal('/foo4/bar.html',rqs[0].uri,"Transformation incorrect.")
181
+
182
+ transforming rqso[1].uri
183
+ rs.process(rqs[1])
184
+ puts rqs[1].uri
185
+ assert_equal('/foo4/bar.html',rqs[1].uri,"Transformation incorrect.")
186
+ end
187
+ end
188
+
189
+ def test_h_branching
190
+ rule_struct = [
191
+ {:match => '{|request| request.hostname =~ /\.?foo\.com/}',
192
+ :branch => [{:match => '(?i-mx:\.htm)$', :sub => '.html'}]},
193
+ {:match => '{|request| request.hostname =~ /\.?bar\.com/}',
194
+ :branch => [{:match => '[A-Z]', :eval => 'request.uri.downcase!'}]}
195
+ ]
196
+ rqs = [
197
+ Request.new('/INDEX.HTM','foo.com'),
198
+ Request.new('/INDEX.HTM','www.foo.com'),
199
+ Request.new('/INDEX.HTM','www.bar.com'),
200
+ Request.new('/INDEX.HTM','fluffy.poodlelovers.com')
201
+ ]
202
+ rqso = rqs.dup
203
+
204
+ assert_nothing_raised("Failure while parsing ruleset.") do
205
+ rs = Iowa::Dispatchers::StandardDispatcherWithClassifier::RuleSet.new(rule_struct)
206
+ transforming "#{rqso[0].uri} @ #{rqso[0].hostname}"
207
+ rs.process(rqs[0])
208
+ puts rqs[0].uri
209
+ assert_equal('/INDEX.html',rqs[0].uri,"Transformation incorrect.")
210
+
211
+ transforming "#{rqso[1].uri} @ #{rqso[1].hostname}"
212
+ rs.process(rqs[1])
213
+ puts rqs[1].uri
214
+ assert_equal('/INDEX.html',rqs[1].uri,"Transformation incorrect.")
215
+
216
+ transforming "#{rqso[2].uri} @ #{rqso[2].hostname}"
217
+ rs.process(rqs[2])
218
+ puts rqs[2].uri
219
+ assert_equal('/index.htm',rqs[2].uri,"Transformation incorrect.")
220
+
221
+ transforming "#{rqso[3].uri} @ #{rqso[3].hostname}"
222
+ rs.process(rqs[3])
223
+ puts rqs[3].uri
224
+ assert_equal('/INDEX.HTM',rqs[3].uri,"Transformation incorrect.")
225
+ end
226
+ end
227
+
228
+ def test_i_processing
229
+ mapfile = <<EMAPFILE
230
+ :rewrites:
231
+ - :match: "{|request| request.hostname =~ /\.?foo\.com/}"
232
+ :branch:
233
+ - :match: "."
234
+ :eval: "request.uri.downcase!"
235
+ - :match: "INDEX"
236
+ :dispatch: IndexHTM
237
+ - :match: "{|request| request.hostname =~ /\.?bar\.com/}"
238
+ :branch:
239
+ - :match: "[A-Z]"
240
+ :eval: "request.uri.downcase!"
241
+ :map:
242
+ - /funds/: Default
243
+ - /index.htm: Index
244
+ - /index.html: CapIndex
245
+ - /randompix.png: RandomPix
246
+ EMAPFILE
247
+ rqs = [
248
+ Request.new('/funds/portfolio.html','foo.com',{}),
249
+ Request.new('/funds/blah/blarg/index.html','foo.com',{}),
250
+ Request.new('/INDEX.HTM','www.foo.com',{}),
251
+ Request.new('/INDEX.HTM','fluffy.poodlelovers.com',{}),
252
+ Request.new('/randompix.png','',{}),
253
+ Request.new('/books',nil,{}),
254
+ Request.new('/books/1',nil,{}),
255
+ Request.new('/books/1',nil,{},'DELETE'),
256
+ Request.new('/books/1',nil,{},'PUT'),
257
+ Request.new('/books/new',nil,{}),
258
+ Request.new('/books',nil,{},'POST'),
259
+ Request.new('/books/1',nil,{'_method' => 'DELETE'},'POST'),
260
+ Request.new('/books/1',nil,{'_method' => 'PUT'},'POST'),
261
+ Request.new('/books/1;complete',nil,{},'POST'),
262
+ Request.new('/books/show/ab4814f904/5/new',nil,{})
263
+ ]
264
+ rqso = rqs.dup
265
+
266
+ require 'stringio'
267
+ require 'yaml'
268
+ mf = YAML.load(StringIO.new(mapfile))
269
+ puts mf.inspect
270
+ #assert_nothing_raised("Failure while parsing ruleset.") do
271
+ disp = Iowa::Dispatchers::StandardDispatcherWithClassifier.new(mf)
272
+ dd = disp.process(rqs[0])
273
+ processing rqso[0]
274
+ puts "** #{dd.inspect}"
275
+ assert(dd.component == 'Default',"CapIndex1: Processing with result from map failed.")
276
+
277
+ dd = disp.process(rqs[1])
278
+ processing rqso[1]
279
+ puts " #{dd.inspect}"
280
+ assert(dd.component == 'Default',"CapIndex2: Processing with result from map failed.")
281
+
282
+ dd = disp.process(rqs[2])
283
+ processing rqso[2]
284
+ puts " #{dd.inspect}"
285
+ assert(dd.component == 'Index',"Index: Processing with result from map failed.")
286
+
287
+ dd = disp.process(rqs[3])
288
+ processing rqso[3]
289
+ puts " #{dd.inspect}"
290
+ assert(dd.component == 'IndexHTM',"IndexHTM: Processing with result from map failed.")
291
+
292
+ dd = disp.process(rqs[4])
293
+ processing rqso[4]
294
+ puts " #{dd.inspect}"
295
+ assert(dd.component == 'RandomPix',"RandomPix: Processing with result from map failed.")
296
+
297
+ dd = disp.process(rqs[5])
298
+ processing rqso[5]
299
+ puts " #{dd.inspect}"
300
+ assert(dd.component == 'books',"Processing RESTful request failed.")
301
+
302
+ dd = disp.process(rqs[6])
303
+ processing rqso[6]
304
+ puts " #{dd.inspect}"
305
+ assert(((dd.component == 'books') and (dd.method == 'show') and (dd.args == ["1"])),"Processing RESTful request failed.")
306
+
307
+ dd = disp.process(rqs[7])
308
+ processing rqso[7]
309
+ puts " #{dd.inspect}"
310
+ assert(((dd.component == 'books') and (dd.method == 'destroy') and (dd.args == ["1"])),"Processing RESTful DELETE request failed.")
311
+
312
+ dd = disp.process(rqs[8])
313
+ processing rqso[8]
314
+ puts " #{dd.inspect}"
315
+ assert(((dd.component == 'books') and (dd.method == 'update') and (dd.args == ["1"])),"Processing RESTful PUT request failed.")
316
+
317
+ dd = disp.process(rqs[9])
318
+ processing rqso[9]
319
+ puts " #{dd.inspect}"
320
+ assert(((dd.component == 'books') and (dd.method == 'new')),"Processing RESTful GET to invoke 'new' request failed.")
321
+
322
+ dd = disp.process(rqs[10])
323
+ processing rqso[10]
324
+ puts " #{dd.inspect}"
325
+ assert(((dd.component == 'books') and (dd.method == 'create')),"Processing RESTful POST to invoke 'create' request failed.")
326
+
327
+ dd = disp.process(rqs[11])
328
+ processing rqso[11]
329
+ puts " #{dd.inspect}"
330
+ assert(((dd.component == 'books') and (dd.method == 'destroy') and (dd.args == ["1"])),"Processing RESTful POST to invoke DELETE request failed.")
331
+
332
+ dd = disp.process(rqs[12])
333
+ processing rqso[12]
334
+ puts " #{dd.inspect}"
335
+ assert(((dd.component == 'books') and (dd.method == 'update') and (dd.args == ["1"])),"Processing RESTful POST to invoke PUT request failed.")
336
+
337
+ dd = disp.process(rqs[13])
338
+ processing rqso[13]
339
+ puts " #{dd.inspect}"
340
+ assert(((dd.component == 'books') and (dd.method == 'complete') and (dd.args == ["1"])),"Processing RESTful POST to invoke 'complete' request failed.")
341
+
342
+ dd = disp.process(rqs[14])
343
+ processing rqso[14]
344
+ puts " #{dd.inspect}"
345
+ assert(((dd.component == 'books') and (dd.method == 'show') and (dd.args == ["ab4814f904","5","new"])),"Processing RESTful POST to invoke 'complete' request failed.")
346
+
347
+ rqs = rqso.dup
348
+ rqs.each {|rq| assert(disp.handleRequest?(rq),"handleRequest? says it won't handle #{rq.inspect}")}
349
+
350
+ puts "\nDoing a quick benchmark of request processing using all of the test cases; 20000 * #{rqs.length} == #{20000 * rqs.length} requests."
351
+ Benchmark.benchmark {|bm| bm.report {20000.times {rqs.each {|rq| dd = disp.process(rq)}}}}
352
+ #end
353
+ end
354
+ end
355
+
356
+ def external_downcase(r)
357
+ r.uri.downcase!
358
+ end
@@ -0,0 +1,24 @@
1
+ require 'test/unit'
2
+ require 'external/test_support'
3
+ IWATestSupport.set_src_dir
4
+ require 'iowa/String'
5
+
6
+ class TC_String < Test::Unit::TestCase
7
+
8
+ @@testdir = IWATestSupport.test_dir(__FILE__)
9
+ def setup
10
+ Dir.chdir(@@testdir)
11
+ IWATestSupport.announce(:string, "Iowa::String")
12
+ assert_nothing_raised("setup failed") do
13
+ @iwa_string = Iowa::String.new("basic string")
14
+ end
15
+ end
16
+
17
+ def test_conversions
18
+ assert_equal('basic string',@iwa_string,"Unaltered Test: Test string(#{@iwa_string}) was not what was expected (basic string).")
19
+ assert_equal('basicString',@iwa_string.camelCase,"camelCase Test: Test string(#{@iwa_string.camelCase}) was not what was expected (basicString).")
20
+ assert_equal('BasicString',@iwa_string.constantCase,"constantCase Test: Test string(#{@iwa_string.constantCase}) was not what was expected (BasicString).")
21
+ assert_equal('Basic string',@iwa_string.humanCase,"humanCase Test: Test string(#{@iwa_string.humanCase}) was not what was expected (Basic string).")
22
+ assert_equal('basic_string',@iwa_string.snakeCase,"snakeCase Test: Test string(#{@iwa_string.snakeCase}) was not what was expected (basic_string).")
23
+ end
24
+ end
@@ -0,0 +1,41 @@
1
+ require 'test/unit'
2
+ require 'external/test_support'
3
+ IWATestSupport.set_src_dir
4
+ require 'iowa/Constants'
5
+ require 'iowa/Context'
6
+ require 'iowa/Element'
7
+ require 'iowa/Tag'
8
+
9
+ class TC_Tag < Test::Unit::TestCase
10
+ @tag
11
+
12
+ @@testdir = IWATestSupport.test_dir(__FILE__)
13
+ def setup
14
+ Dir.chdir(@@testdir)
15
+ IWATestSupport.announce(:tag,"Iowa::Tag")
16
+ assert_nothing_raised("Failed while creating an Iowa::Tag object") do
17
+ @tag = Iowa::Tag.new('test',[],{})
18
+ end
19
+ end
20
+
21
+ def testTagName
22
+ assert_nothing_raised("Failed while returning the tagName.") do
23
+ tagname = @tag.tagName
24
+ assert_equal('tag',tagname,"The expected tagName (tag) did not match the returned tagname (#{tagname}).")
25
+ end
26
+ end
27
+
28
+ def testOpenTag
29
+ assert_nothing_raised("Failed while returning the openTag.") do
30
+ opentag = @tag.openTag('name','test')
31
+ assert_equal('<tag name="test">',opentag,"The expected openTag (<tag name='test'>) did not match the returned openTag (#{opentag}).")
32
+ end
33
+ end
34
+
35
+ def testCloseTag
36
+ assert_nothing_raised("Failed while returning the closeTag.") do
37
+ closetag = @tag.closeTag
38
+ assert_equal("</tag>",closetag,"The expected closeTag (<tag name='test'>) did not match the returned closeTag (#{closetag}).")
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,56 @@
1
+ require 'test/unit'
2
+ require 'external/test_support'
3
+ IWATestSupport.set_src_dir
4
+ require 'rbconfig'
5
+ require 'net/http'
6
+
7
+ class TC_Webrick < Test::Unit::TestCase
8
+
9
+ @@testdir = IWATestSupport.test_dir(__FILE__)
10
+ def setup
11
+ Dir.chdir(@@testdir)
12
+ IWATestSupport.announce(:webrickmode,"Webrick Run Mode")
13
+
14
+ ruby = File.join(::Config::CONFIG['bindir'],::Config::CONFIG['ruby_install_name'])
15
+ ruby << ::Config::CONFIG['EXEEXT']
16
+
17
+ assert_nothing_raised("setup failed") do
18
+ @iowa_pid = IWATestSupport::create_process(:dir => 'TC_Webrick/iowa',
19
+ :cmd => ["#{ruby} -I../../../src app.rb -r webrick"])
20
+ sleep 1
21
+ end
22
+ end
23
+
24
+ def teardown
25
+ Process.kill "SIGKILL",@iowa_pid
26
+ Process.wait @iowa_pid
27
+ sleep 1
28
+ end
29
+
30
+ def get_url(hostname,port,url)
31
+ Net::HTTP.start(hostname,port) {|http| http.get(url)}
32
+ end
33
+
34
+ def test_webrick
35
+ r = nil
36
+ assert_nothing_raised("Error trying to send request to iowa app.") do
37
+ response = get_url('127.0.0.1','47990','/')
38
+ r = response.body
39
+ end
40
+
41
+ r =~ /<a href="([^"]+)">dynamic link/
42
+ dlink = $1
43
+ assert_match(/<a href="[^"]+">dynamic link/,r,"Failed to find expected dynamic link url.")
44
+
45
+ dresponse = get_url('127.0.0.1','47990',dlink).body
46
+ assert_match(/The time is now: /,dresponse,"Failed to get expected dynamic link result.")
47
+
48
+ r =~ /<a href="([^"]+)">static link/
49
+ slink = $1
50
+ assert_match(/<a href="[^"]+">static link/,r,"Failed to find expected static link url.")
51
+
52
+ sresponse = get_url('127.0.0.1','47990',slink).body
53
+ assert_match(/This is a static thing./,sresponse,"Failed to get the expected static link result.")
54
+ end
55
+
56
+ end