minilab 1.1.0-x86-mswin32-60

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 (492) hide show
  1. data/CHANGES +8 -0
  2. data/LICENSE +19 -0
  3. data/README +105 -0
  4. data/Rakefile +83 -0
  5. data/config/environment.rb +23 -0
  6. data/config/objects.yml +23 -0
  7. data/lib/analog_io.rb +23 -0
  8. data/lib/connection_state.rb +13 -0
  9. data/lib/digital_auxport_io.rb +34 -0
  10. data/lib/digital_configuration.rb +53 -0
  11. data/lib/digital_port_io.rb +39 -0
  12. data/lib/library_translator.rb +46 -0
  13. data/lib/minilab.rb +130 -0
  14. data/lib/minilab_constants.rb +20 -0
  15. data/lib/minilab_context.rb +14 -0
  16. data/lib/minilab_hardware.rb +112 -0
  17. data/lib/minilab_wrapper.rb +12 -0
  18. data/test/system/analog_input.test +3 -0
  19. data/test/system/analog_output.test +37 -0
  20. data/test/system/digital_port_input.test +5 -0
  21. data/test/system/digital_port_output.test +39 -0
  22. data/test/system/digital_port_read_byte.test +26 -0
  23. data/test/system/digital_screw_terminals_input.test +2 -0
  24. data/test/system/digital_screw_terminals_output.test +11 -0
  25. data/test/system/minilab_driver.rb +83 -0
  26. data/test/test_helper.rb +15 -0
  27. data/test/unit/analog_io_test.rb +54 -0
  28. data/test/unit/connection_state_test.rb +18 -0
  29. data/test/unit/digital_auxport_io_test.rb +102 -0
  30. data/test/unit/digital_configuration_test.rb +100 -0
  31. data/test/unit/digital_port_io_test.rb +67 -0
  32. data/test/unit/library_translator_test.rb +98 -0
  33. data/test/unit/minilab_context_test.rb +23 -0
  34. data/test/unit/minilab_hardware_test.rb +33 -0
  35. data/test/unit/minilab_test.rb +115 -0
  36. data/test/unit/minilab_wrapper_test.rb +24 -0
  37. data/vendor/behaviors/lib/behaviors.rb +50 -0
  38. data/vendor/behaviors/tasks/behaviors_tasks.rake +140 -0
  39. data/vendor/behaviors/test/behaviors_tasks_test.rb +71 -0
  40. data/vendor/behaviors/test/behaviors_test.rb +50 -0
  41. data/vendor/behaviors/test/tasks_test/Rakefile +16 -0
  42. data/vendor/behaviors/test/tasks_test/doc/behaviors.html +55 -0
  43. data/vendor/behaviors/test/tasks_test/lib/user.rb +2 -0
  44. data/vendor/behaviors/test/tasks_test/test/user_test.rb +17 -0
  45. data/vendor/constructor-1.0.2/History.txt +11 -0
  46. data/vendor/constructor-1.0.2/Manifest.txt +6 -0
  47. data/vendor/constructor-1.0.2/README.txt +77 -0
  48. data/vendor/constructor-1.0.2/Rakefile +33 -0
  49. data/vendor/constructor-1.0.2/lib/constructor.rb +119 -0
  50. data/vendor/constructor-1.0.2/specs/constructor_spec.rb +345 -0
  51. data/vendor/diy-1.1.1/History.txt +23 -0
  52. data/vendor/diy-1.1.1/Manifest.txt +88 -0
  53. data/vendor/diy-1.1.1/README.txt +220 -0
  54. data/vendor/diy-1.1.1/Rakefile +29 -0
  55. data/vendor/diy-1.1.1/TODO.txt +9 -0
  56. data/vendor/diy-1.1.1/homepage/Notes.txt +27 -0
  57. data/vendor/diy-1.1.1/homepage/Rakefile +14 -0
  58. data/vendor/diy-1.1.1/homepage/diy_example.png +0 -0
  59. data/vendor/diy-1.1.1/homepage/index.erb +36 -0
  60. data/vendor/diy-1.1.1/homepage/index.html +45 -0
  61. data/vendor/diy-1.1.1/homepage/objects_yml.png +0 -0
  62. data/vendor/diy-1.1.1/homepage/page_header.graffle +0 -0
  63. data/vendor/diy-1.1.1/homepage/page_header.html +9 -0
  64. data/vendor/diy-1.1.1/homepage/page_header.png +0 -0
  65. data/vendor/diy-1.1.1/lib/diy.rb +365 -0
  66. data/vendor/diy-1.1.1/sample_code/car.rb +7 -0
  67. data/vendor/diy-1.1.1/sample_code/chassis.rb +5 -0
  68. data/vendor/diy-1.1.1/sample_code/diy_example.rb +26 -0
  69. data/vendor/diy-1.1.1/sample_code/engine.rb +5 -0
  70. data/vendor/diy-1.1.1/sample_code/objects.yml +10 -0
  71. data/vendor/diy-1.1.1/test/constructor.rb +119 -0
  72. data/vendor/diy-1.1.1/test/diy_test.rb +604 -0
  73. data/vendor/diy-1.1.1/test/files/broken_construction.yml +7 -0
  74. data/vendor/diy-1.1.1/test/files/cat/cat.rb +3 -0
  75. data/vendor/diy-1.1.1/test/files/cat/extra_conflict.yml +5 -0
  76. data/vendor/diy-1.1.1/test/files/cat/heritage.rb +2 -0
  77. data/vendor/diy-1.1.1/test/files/cat/needs_input.yml +3 -0
  78. data/vendor/diy-1.1.1/test/files/cat/the_cat_lineage.rb +1 -0
  79. data/vendor/diy-1.1.1/test/files/dog/dog_model.rb +3 -0
  80. data/vendor/diy-1.1.1/test/files/dog/dog_presenter.rb +3 -0
  81. data/vendor/diy-1.1.1/test/files/dog/dog_view.rb +2 -0
  82. data/vendor/diy-1.1.1/test/files/dog/file_resolver.rb +2 -0
  83. data/vendor/diy-1.1.1/test/files/dog/other_thing.rb +2 -0
  84. data/vendor/diy-1.1.1/test/files/dog/simple.yml +11 -0
  85. data/vendor/diy-1.1.1/test/files/donkey/foo.rb +8 -0
  86. data/vendor/diy-1.1.1/test/files/donkey/foo/bar/qux.rb +7 -0
  87. data/vendor/diy-1.1.1/test/files/fud/objects.yml +13 -0
  88. data/vendor/diy-1.1.1/test/files/fud/toy.rb +14 -0
  89. data/vendor/diy-1.1.1/test/files/functions/invalid_method.yml +5 -0
  90. data/vendor/diy-1.1.1/test/files/functions/method_extractor.rb +3 -0
  91. data/vendor/diy-1.1.1/test/files/functions/nonsingleton_objects.yml +6 -0
  92. data/vendor/diy-1.1.1/test/files/functions/objects.yml +11 -0
  93. data/vendor/diy-1.1.1/test/files/functions/thing.rb +3 -0
  94. data/vendor/diy-1.1.1/test/files/functions/thing_builder.rb +21 -0
  95. data/vendor/diy-1.1.1/test/files/functions/things_builder.rb +3 -0
  96. data/vendor/diy-1.1.1/test/files/gnu/objects.yml +14 -0
  97. data/vendor/diy-1.1.1/test/files/gnu/thinger.rb +7 -0
  98. data/vendor/diy-1.1.1/test/files/goat/base.rb +8 -0
  99. data/vendor/diy-1.1.1/test/files/goat/can.rb +6 -0
  100. data/vendor/diy-1.1.1/test/files/goat/goat.rb +6 -0
  101. data/vendor/diy-1.1.1/test/files/goat/objects.yml +12 -0
  102. data/vendor/diy-1.1.1/test/files/goat/paper.rb +6 -0
  103. data/vendor/diy-1.1.1/test/files/goat/plane.rb +7 -0
  104. data/vendor/diy-1.1.1/test/files/goat/shirt.rb +6 -0
  105. data/vendor/diy-1.1.1/test/files/goat/wings.rb +8 -0
  106. data/vendor/diy-1.1.1/test/files/horse/holder_thing.rb +3 -0
  107. data/vendor/diy-1.1.1/test/files/horse/objects.yml +7 -0
  108. data/vendor/diy-1.1.1/test/files/namespace/animal/bird.rb +5 -0
  109. data/vendor/diy-1.1.1/test/files/namespace/animal/cat.rb +5 -0
  110. data/vendor/diy-1.1.1/test/files/namespace/animal/reptile/hardshell/turtle.rb +8 -0
  111. data/vendor/diy-1.1.1/test/files/namespace/animal/reptile/lizard.rb +7 -0
  112. data/vendor/diy-1.1.1/test/files/namespace/bad_module_specified.yml +8 -0
  113. data/vendor/diy-1.1.1/test/files/namespace/class_name_combine.yml +8 -0
  114. data/vendor/diy-1.1.1/test/files/namespace/hello.txt +1 -0
  115. data/vendor/diy-1.1.1/test/files/namespace/no_module_specified.yml +8 -0
  116. data/vendor/diy-1.1.1/test/files/namespace/objects.yml +21 -0
  117. data/vendor/diy-1.1.1/test/files/namespace/road.rb +2 -0
  118. data/vendor/diy-1.1.1/test/files/namespace/sky.rb +2 -0
  119. data/vendor/diy-1.1.1/test/files/namespace/subcontext.yml +22 -0
  120. data/vendor/diy-1.1.1/test/files/non_singleton/air.rb +2 -0
  121. data/vendor/diy-1.1.1/test/files/non_singleton/fat_cat.rb +3 -0
  122. data/vendor/diy-1.1.1/test/files/non_singleton/objects.yml +19 -0
  123. data/vendor/diy-1.1.1/test/files/non_singleton/pig.rb +3 -0
  124. data/vendor/diy-1.1.1/test/files/non_singleton/thread_spinner.rb +3 -0
  125. data/vendor/diy-1.1.1/test/files/non_singleton/tick.rb +3 -0
  126. data/vendor/diy-1.1.1/test/files/non_singleton/yard.rb +2 -0
  127. data/vendor/diy-1.1.1/test/files/yak/core_model.rb +3 -0
  128. data/vendor/diy-1.1.1/test/files/yak/core_presenter.rb +3 -0
  129. data/vendor/diy-1.1.1/test/files/yak/core_view.rb +1 -0
  130. data/vendor/diy-1.1.1/test/files/yak/data_source.rb +1 -0
  131. data/vendor/diy-1.1.1/test/files/yak/fringe_model.rb +3 -0
  132. data/vendor/diy-1.1.1/test/files/yak/fringe_presenter.rb +3 -0
  133. data/vendor/diy-1.1.1/test/files/yak/fringe_view.rb +1 -0
  134. data/vendor/diy-1.1.1/test/files/yak/giant_squid.rb +3 -0
  135. data/vendor/diy-1.1.1/test/files/yak/krill.rb +2 -0
  136. data/vendor/diy-1.1.1/test/files/yak/my_objects.yml +21 -0
  137. data/vendor/diy-1.1.1/test/files/yak/sub_sub_context_test.yml +27 -0
  138. data/vendor/diy-1.1.1/test/test_helper.rb +39 -0
  139. data/vendor/ffi-0.4.0-x86-mswin32/LICENSE +51 -0
  140. data/vendor/ffi-0.4.0-x86-mswin32/Rakefile +142 -0
  141. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/AbstractMemory.c +412 -0
  142. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/AbstractMemory.h +68 -0
  143. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/AutoPointer.c +60 -0
  144. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/AutoPointer.h +18 -0
  145. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Buffer.c +171 -0
  146. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Callback.c +374 -0
  147. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Callback.h +47 -0
  148. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/DynamicLibrary.c +213 -0
  149. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/DynamicLibrary.h +22 -0
  150. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Invoker.c +962 -0
  151. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/LastError.c +135 -0
  152. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/LastError.h +18 -0
  153. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/MemoryPointer.c +156 -0
  154. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/MemoryPointer.h +20 -0
  155. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/NullPointer.c +143 -0
  156. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Platform.c +59 -0
  157. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Platform.h +16 -0
  158. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Pointer.c +164 -0
  159. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Pointer.h +25 -0
  160. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Struct.c +477 -0
  161. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Struct.h +26 -0
  162. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Type.c +230 -0
  163. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Type.h +28 -0
  164. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Types.c +118 -0
  165. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Types.h +54 -0
  166. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/compat.h +22 -0
  167. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/endian.h +40 -0
  168. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/extconf.rb +31 -0
  169. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/ffi.c +76 -0
  170. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi.bsd.mk +34 -0
  171. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi.darwin.mk +75 -0
  172. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi.gnu.mk +29 -0
  173. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi.mk +13 -0
  174. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/ChangeLog +3243 -0
  175. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/ChangeLog.libffi +347 -0
  176. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/ChangeLog.libgcj +40 -0
  177. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/ChangeLog.v1 +764 -0
  178. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/LICENSE +21 -0
  179. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/Makefile.am +177 -0
  180. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/Makefile.in +1640 -0
  181. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/README +328 -0
  182. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/TODO +1 -0
  183. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/acinclude.m4 +92 -0
  184. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/aclocal.m4 +7516 -0
  185. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/compile +142 -0
  186. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/config.guess +1516 -0
  187. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/config.sub +1626 -0
  188. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/configure +24414 -0
  189. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/configure.ac +365 -0
  190. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/configure.host +11 -0
  191. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/depcomp +584 -0
  192. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/doc/libffi.info +533 -0
  193. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/doc/libffi.texi +541 -0
  194. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/doc/stamp-vti +4 -0
  195. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/doc/version.texi +4 -0
  196. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/fficonfig.h.in +160 -0
  197. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/include/Makefile.am +9 -0
  198. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/include/Makefile.in +422 -0
  199. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/include/ffi.h.in +393 -0
  200. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/include/ffi_common.h +98 -0
  201. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/install-sh +323 -0
  202. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/libffi.pc.in +10 -0
  203. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/libtool-version +29 -0
  204. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/ltcf-c.sh +861 -0
  205. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/ltcf-cxx.sh +1069 -0
  206. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/ltcf-gcj.sh +700 -0
  207. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/ltconfig +2862 -0
  208. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/ltmain.sh +6930 -0
  209. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/man/Makefile.am +8 -0
  210. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/man/Makefile.in +395 -0
  211. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/man/ffi.3 +31 -0
  212. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/man/ffi_call.3 +103 -0
  213. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/man/ffi_prep_cif.3 +66 -0
  214. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/mdate-sh +201 -0
  215. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/missing +353 -0
  216. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/mkinstalldirs +158 -0
  217. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/alpha/ffi.c +284 -0
  218. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/alpha/ffitarget.h +48 -0
  219. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/alpha/osf.S +366 -0
  220. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/arm/ffi.c +309 -0
  221. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/arm/ffitarget.h +49 -0
  222. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/arm/sysv.S +299 -0
  223. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/closures.c +596 -0
  224. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/cris/ffi.c +383 -0
  225. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/cris/ffitarget.h +51 -0
  226. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/cris/sysv.S +215 -0
  227. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/debug.c +59 -0
  228. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/dlmalloc.c +5099 -0
  229. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/frv/eabi.S +128 -0
  230. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/frv/ffi.c +292 -0
  231. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/frv/ffitarget.h +61 -0
  232. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/ia64/ffi.c +580 -0
  233. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/ia64/ffitarget.h +50 -0
  234. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/ia64/ia64_flags.h +40 -0
  235. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/ia64/unix.S +560 -0
  236. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/java_raw_api.c +359 -0
  237. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/m32r/ffi.c +232 -0
  238. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/m32r/ffitarget.h +48 -0
  239. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/m32r/sysv.S +121 -0
  240. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/m68k/ffi.c +278 -0
  241. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/m68k/ffitarget.h +49 -0
  242. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/m68k/sysv.S +234 -0
  243. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/mips/ffi.c +926 -0
  244. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/mips/ffitarget.h +202 -0
  245. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/mips/n32.S +534 -0
  246. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/mips/o32.S +381 -0
  247. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/pa/ffi.c +709 -0
  248. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/pa/ffitarget.h +77 -0
  249. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/pa/hpux32.S +368 -0
  250. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/pa/linux.S +357 -0
  251. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/aix.S +225 -0
  252. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/aix_closure.S +247 -0
  253. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/asm.h +125 -0
  254. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/darwin.S +245 -0
  255. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +317 -0
  256. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/ffi.c +1429 -0
  257. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +800 -0
  258. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/ffitarget.h +118 -0
  259. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/linux64.S +187 -0
  260. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +236 -0
  261. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +327 -0
  262. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/sysv.S +230 -0
  263. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/prep_cif.c +174 -0
  264. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/raw_api.c +254 -0
  265. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/s390/ffi.c +780 -0
  266. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/s390/ffitarget.h +60 -0
  267. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/s390/sysv.S +434 -0
  268. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/sh/ffi.c +716 -0
  269. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/sh/ffitarget.h +49 -0
  270. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/sh/sysv.S +850 -0
  271. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/sh64/ffi.c +453 -0
  272. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/sh64/ffitarget.h +53 -0
  273. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/sh64/sysv.S +530 -0
  274. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/sparc/ffi.c +610 -0
  275. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/sparc/ffitarget.h +66 -0
  276. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/sparc/v8.S +272 -0
  277. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/sparc/v9.S +307 -0
  278. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/types.c +77 -0
  279. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/x86/darwin.S +443 -0
  280. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/x86/darwin64.S +416 -0
  281. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/x86/ffi.c +475 -0
  282. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/x86/ffi64.c +572 -0
  283. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/x86/ffitarget.h +90 -0
  284. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/x86/freebsd.S +458 -0
  285. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/x86/sysv.S +437 -0
  286. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/x86/unix64.S +418 -0
  287. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/x86/win32.S +391 -0
  288. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/Makefile.am +71 -0
  289. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/Makefile.in +447 -0
  290. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/config/default.exp +1 -0
  291. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp +289 -0
  292. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +263 -0
  293. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/lib/wrapper.exp +45 -0
  294. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +36 -0
  295. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn0.c +97 -0
  296. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn1.c +89 -0
  297. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn2.c +89 -0
  298. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn3.c +90 -0
  299. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn4.c +97 -0
  300. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn5.c +99 -0
  301. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn6.c +98 -0
  302. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/closure_stdcall.c +72 -0
  303. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c +102 -0
  304. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c +103 -0
  305. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c +104 -0
  306. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c +110 -0
  307. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c +97 -0
  308. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c +99 -0
  309. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c +101 -0
  310. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c +121 -0
  311. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c +98 -0
  312. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c +103 -0
  313. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c +98 -0
  314. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c +98 -0
  315. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c +106 -0
  316. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c +98 -0
  317. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c +117 -0
  318. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c +106 -0
  319. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c +132 -0
  320. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c +121 -0
  321. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c +107 -0
  322. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c +125 -0
  323. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c +105 -0
  324. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c +96 -0
  325. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c +98 -0
  326. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c +99 -0
  327. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c +101 -0
  328. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c +99 -0
  329. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c +100 -0
  330. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c +101 -0
  331. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c +99 -0
  332. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c +99 -0
  333. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +99 -0
  334. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c +99 -0
  335. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c +99 -0
  336. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +100 -0
  337. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_double.c +51 -0
  338. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_float.c +51 -0
  339. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_schar.c +82 -0
  340. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshort.c +82 -0
  341. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshortchar.c +94 -0
  342. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_uchar.c +99 -0
  343. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushort.c +82 -0
  344. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushortchar.c +94 -0
  345. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_schar.c +52 -0
  346. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_sint.c +50 -0
  347. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_sshort.c +50 -0
  348. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar.c +50 -0
  349. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint.c +51 -0
  350. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +54 -0
  351. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort.c +51 -0
  352. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +86 -0
  353. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/float.c +59 -0
  354. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +58 -0
  355. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +57 -0
  356. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +72 -0
  357. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/float4.c +62 -0
  358. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/many.c +69 -0
  359. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/many_win32.c +63 -0
  360. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +53 -0
  361. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c +160 -0
  362. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c +169 -0
  363. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +141 -0
  364. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c +118 -0
  365. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c +119 -0
  366. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c +119 -0
  367. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c +120 -0
  368. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c +139 -0
  369. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c +119 -0
  370. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c +139 -0
  371. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c +139 -0
  372. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/problem1.c +98 -0
  373. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c +59 -0
  374. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc-tc.c +114 -0
  375. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +35 -0
  376. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c +43 -0
  377. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c +42 -0
  378. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c +35 -0
  379. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c +36 -0
  380. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c +49 -0
  381. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c +42 -0
  382. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +34 -0
  383. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c +41 -0
  384. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +42 -0
  385. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +36 -0
  386. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +38 -0
  387. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +38 -0
  388. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +38 -0
  389. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +44 -0
  390. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/strlen_win32.c +44 -0
  391. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +65 -0
  392. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +67 -0
  393. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +59 -0
  394. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +63 -0
  395. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +65 -0
  396. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +64 -0
  397. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +74 -0
  398. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +80 -0
  399. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +67 -0
  400. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +86 -0
  401. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.special/special.exp +38 -0
  402. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.special/unwindtest.cc +123 -0
  403. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.special/unwindtest_ffi_call.cc +53 -0
  404. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/texinfo.tex +7482 -0
  405. data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/rbffi.h +23 -0
  406. data/vendor/ffi-0.4.0-x86-mswin32/gen/Rakefile +12 -0
  407. data/vendor/ffi-0.4.0-x86-mswin32/lib/1.8/ffi_c.so +0 -0
  408. data/vendor/ffi-0.4.0-x86-mswin32/lib/1.9/ffi_c.so +0 -0
  409. data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi.rb +11 -0
  410. data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/autopointer.rb +61 -0
  411. data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/buffer.rb +0 -0
  412. data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/callback.rb +10 -0
  413. data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/enum.rb +78 -0
  414. data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/errno.rb +8 -0
  415. data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/ffi.rb +96 -0
  416. data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/io.rb +21 -0
  417. data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/library.rb +243 -0
  418. data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/managedstruct.rb +55 -0
  419. data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/memorypointer.rb +73 -0
  420. data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/platform.rb +78 -0
  421. data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/pointer.rb +119 -0
  422. data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/struct.rb +354 -0
  423. data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/tools/const_generator.rb +177 -0
  424. data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/tools/generator.rb +58 -0
  425. data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/tools/generator_task.rb +35 -0
  426. data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/tools/struct_generator.rb +194 -0
  427. data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/tools/types_generator.rb +123 -0
  428. data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/types.rb +153 -0
  429. data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/union.rb +17 -0
  430. data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/variadic.rb +30 -0
  431. data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/bool_spec.rb +24 -0
  432. data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/buffer_spec.rb +196 -0
  433. data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/callback_spec.rb +560 -0
  434. data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/enum_spec.rb +164 -0
  435. data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/errno_spec.rb +13 -0
  436. data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/library_spec.rb +144 -0
  437. data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/managed_struct_spec.rb +56 -0
  438. data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/number_spec.rb +231 -0
  439. data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/pointer_spec.rb +195 -0
  440. data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/rbx/attach_function_spec.rb +27 -0
  441. data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/rbx/memory_pointer_spec.rb +102 -0
  442. data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/rbx/spec_helper.rb +1 -0
  443. data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/rbx/struct_spec.rb +13 -0
  444. data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/spec_helper.rb +17 -0
  445. data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/string_spec.rb +103 -0
  446. data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/struct_callback_spec.rb +41 -0
  447. data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/struct_initialize_spec.rb +30 -0
  448. data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/struct_spec.rb +476 -0
  449. data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/typedef_spec.rb +48 -0
  450. data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/union_spec.rb +60 -0
  451. data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/variadic_spec.rb +84 -0
  452. data/vendor/ffi-0.4.0-x86-mswin32/spec/spec.opts +4 -0
  453. data/vendor/hardmock-1.3.7/CHANGES +78 -0
  454. data/vendor/hardmock-1.3.7/LICENSE +7 -0
  455. data/vendor/hardmock-1.3.7/README +70 -0
  456. data/vendor/hardmock-1.3.7/Rakefile +8 -0
  457. data/vendor/hardmock-1.3.7/config/environment.rb +12 -0
  458. data/vendor/hardmock-1.3.7/lib/assert_error.rb +23 -0
  459. data/vendor/hardmock-1.3.7/lib/extend_test_unit.rb +14 -0
  460. data/vendor/hardmock-1.3.7/lib/hardmock.rb +86 -0
  461. data/vendor/hardmock-1.3.7/lib/hardmock/errors.rb +22 -0
  462. data/vendor/hardmock-1.3.7/lib/hardmock/expectation.rb +229 -0
  463. data/vendor/hardmock-1.3.7/lib/hardmock/expectation_builder.rb +9 -0
  464. data/vendor/hardmock-1.3.7/lib/hardmock/expector.rb +26 -0
  465. data/vendor/hardmock-1.3.7/lib/hardmock/method_cleanout.rb +33 -0
  466. data/vendor/hardmock-1.3.7/lib/hardmock/mock.rb +180 -0
  467. data/vendor/hardmock-1.3.7/lib/hardmock/mock_control.rb +53 -0
  468. data/vendor/hardmock-1.3.7/lib/hardmock/stubbing.rb +210 -0
  469. data/vendor/hardmock-1.3.7/lib/hardmock/trapper.rb +31 -0
  470. data/vendor/hardmock-1.3.7/lib/hardmock/utils.rb +9 -0
  471. data/vendor/hardmock-1.3.7/lib/test_unit_before_after.rb +169 -0
  472. data/vendor/hardmock-1.3.7/rake_tasks/test.rake +22 -0
  473. data/vendor/hardmock-1.3.7/test/functional/assert_error_test.rb +52 -0
  474. data/vendor/hardmock-1.3.7/test/functional/auto_verify_test.rb +178 -0
  475. data/vendor/hardmock-1.3.7/test/functional/direct_mock_usage_test.rb +396 -0
  476. data/vendor/hardmock-1.3.7/test/functional/hardmock_test.rb +434 -0
  477. data/vendor/hardmock-1.3.7/test/functional/stubbing_test.rb +479 -0
  478. data/vendor/hardmock-1.3.7/test/test_helper.rb +43 -0
  479. data/vendor/hardmock-1.3.7/test/unit/expectation_builder_test.rb +19 -0
  480. data/vendor/hardmock-1.3.7/test/unit/expectation_test.rb +372 -0
  481. data/vendor/hardmock-1.3.7/test/unit/expector_test.rb +57 -0
  482. data/vendor/hardmock-1.3.7/test/unit/method_cleanout_test.rb +36 -0
  483. data/vendor/hardmock-1.3.7/test/unit/mock_control_test.rb +175 -0
  484. data/vendor/hardmock-1.3.7/test/unit/mock_test.rb +279 -0
  485. data/vendor/hardmock-1.3.7/test/unit/test_unit_before_after_test.rb +452 -0
  486. data/vendor/hardmock-1.3.7/test/unit/trapper_test.rb +62 -0
  487. data/vendor/hardmock-1.3.7/test/unit/verify_error_test.rb +40 -0
  488. data/vendor/mcc/cbw32.dll +0 -0
  489. data/vendor/systir/systir.rb +403 -0
  490. data/vendor/systir/test/unit/ui/xml/testrunner.rb +192 -0
  491. data/vendor/systir/test/unit/ui/xml/xmltestrunner.xslt +109 -0
  492. metadata +561 -0
@@ -0,0 +1,22 @@
1
+ require 'rake/testtask'
2
+
3
+ namespace :test do
4
+
5
+ desc "Run unit tests"
6
+ Rake::TestTask.new("units") { |t|
7
+ t.libs << "test"
8
+ t.pattern = 'test/unit/*_test.rb'
9
+ t.verbose = true
10
+ }
11
+
12
+ desc "Run functional tests"
13
+ Rake::TestTask.new("functional") { |t|
14
+ t.libs << "test"
15
+ t.pattern = 'test/functional/*_test.rb'
16
+ t.verbose = true
17
+ }
18
+
19
+ desc "Run all the tests"
20
+ task :all => [ 'test:units', 'test:functional' ]
21
+
22
+ end
@@ -0,0 +1,52 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
2
+ require 'assert_error'
3
+
4
+ class AssertErrorTest < Test::Unit::TestCase
5
+
6
+ it "specfies an error type and message that should be raised" do
7
+ assert_error RuntimeError, "Too funky" do
8
+ raise RuntimeError.new("Too funky")
9
+ end
10
+ end
11
+
12
+ it "flunks if the error message is wrong" do
13
+ err = assert_raise Test::Unit::AssertionFailedError do
14
+ assert_error RuntimeError, "not good" do
15
+ raise RuntimeError.new("Too funky")
16
+ end
17
+ end
18
+ assert_match(/not good/i, err.message)
19
+ assert_match(/too funky/i, err.message)
20
+ end
21
+
22
+ it "flunks if the error type is wrong" do
23
+ err = assert_raise Test::Unit::AssertionFailedError do
24
+ assert_error StandardError, "Too funky" do
25
+ raise RuntimeError.new("Too funky")
26
+ end
27
+ end
28
+ assert_match(/StandardError/i, err.message)
29
+ assert_match(/RuntimeError/i, err.message)
30
+ end
31
+
32
+ it "can match error message text using a series of Regexps" do
33
+ assert_error StandardError, /too/i, /funky/i do
34
+ raise StandardError.new("Too funky")
35
+ end
36
+ end
37
+
38
+ it "flunks if the error message doesn't match all the Regexps" do
39
+ err = assert_raise Test::Unit::AssertionFailedError do
40
+ assert_error StandardError, /way/i, /too/i, /funky/i do
41
+ raise StandardError.new("Too funky")
42
+ end
43
+ end
44
+ assert_match(/way/i, err.message)
45
+ end
46
+
47
+ it "can operate without any message specification" do
48
+ assert_error StandardError do
49
+ raise StandardError.new("ooof")
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,178 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
2
+ require 'fileutils'
3
+
4
+ class AutoVerifyTest < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @expect_unmet_expectations = true
8
+ end
9
+
10
+ def teardown
11
+ remove_temp_test_file
12
+ end
13
+
14
+ #
15
+ # TESTS
16
+ #
17
+
18
+ it "auto-verifies all mocks in teardown" do
19
+ write_and_execute_test
20
+ end
21
+
22
+ it "auto-verifies even if user defines own teardown" do
23
+ @teardown_code =<<-EOM
24
+ def teardown
25
+ # just in the way
26
+ end
27
+ EOM
28
+ write_and_execute_test
29
+ end
30
+
31
+ should "not obscure normal failures when verification fails" do
32
+ @test_code =<<-EOM
33
+ def test_setup_doomed_expectation
34
+ create_mock :automobile
35
+ @automobile.expects.start
36
+ flunk "natural failure"
37
+ end
38
+ EOM
39
+ @expect_failures = 1
40
+ write_and_execute_test
41
+ end
42
+
43
+ should "not skip user-defined teardown when verification fails" do
44
+ @teardown_code =<<-EOM
45
+ def teardown
46
+ puts "User teardown"
47
+ end
48
+ EOM
49
+ write_and_execute_test
50
+ assert_output_contains(/User teardown/)
51
+ end
52
+
53
+ it "is quiet when verification is ok" do
54
+ @test_code =<<-EOM
55
+ def test_ok
56
+ create_mock :automobile
57
+ @automobile.expects.start
58
+ @automobile.start
59
+ end
60
+ EOM
61
+ @teardown_code =<<-EOM
62
+ def teardown
63
+ puts "User teardown"
64
+ end
65
+ EOM
66
+ @expect_unmet_expectations = false
67
+ @expect_failures = 0
68
+ @expect_errors = 0
69
+ write_and_execute_test
70
+ assert_output_contains(/User teardown/)
71
+ end
72
+
73
+ should "auto-verify even if user teardown explodes" do
74
+ @teardown_code =<<-EOM
75
+ def teardown
76
+ raise "self destruct"
77
+ end
78
+ EOM
79
+ @expect_errors = 2
80
+ write_and_execute_test
81
+ assert_output_contains(/self destruct/)
82
+ end
83
+
84
+ it "plays nice with inherited teardown methods" do
85
+ @full_code ||=<<-EOTEST
86
+ require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
87
+ require 'hardmock'
88
+ class Test::Unit::TestCase
89
+ def teardown
90
+ puts "Test helper teardown"
91
+ end
92
+ end
93
+ class DummyTest < Test::Unit::TestCase
94
+ def test_prepare_to_die
95
+ create_mock :automobile
96
+ @automobile.expects.start
97
+ end
98
+ end
99
+ EOTEST
100
+ write_and_execute_test
101
+ assert_output_contains(/Test helper teardown/)
102
+ end
103
+
104
+ #
105
+ # HELPERS
106
+ #
107
+
108
+ def temp_test_file
109
+ File.expand_path(File.dirname(__FILE__) + "/tear_down_verification_test.rb")
110
+ end
111
+
112
+ def run_test(tbody)
113
+ File.open(temp_test_file,"w") { |f| f.print(tbody) }
114
+ @test_output = `ruby #{temp_test_file} 2>&1`
115
+ end
116
+
117
+ def formatted_test_output
118
+ if @test_output
119
+ @test_output.split(/\n/).map { |line| "> #{line}" }.join("\n")
120
+ else
121
+ "(NO TEST OUTPUT!)"
122
+ end
123
+ end
124
+
125
+ def remove_temp_test_file
126
+ FileUtils::rm_f temp_test_file
127
+ end
128
+
129
+ def assert_results(h)
130
+ if @test_output !~ /#{h[:tests]} tests, [0-9]+ assertions, #{h[:failures]} failures, #{h[:errors]} errors/
131
+ flunk "Test results didn't match #{h.inspect}:\n#{formatted_test_output}"
132
+ end
133
+ end
134
+
135
+ def assert_output_contains(*patterns)
136
+ patterns.each do |pattern|
137
+ if @test_output !~ pattern
138
+ flunk "Test output didn't match #{pattern.inspect}:\n#{formatted_test_output}"
139
+ end
140
+ end
141
+ end
142
+
143
+ def assert_output_doesnt_contain(*patterns)
144
+ patterns.each do |pattern|
145
+ assert @test_output !~ pattern, "Output shouldn't match #{pattern.inspect} but it does."
146
+ end
147
+ end
148
+
149
+ def write_and_execute_test
150
+ @test_code ||=<<-EOM
151
+ def test_setup_doomed_expectation
152
+ create_mock :automobile
153
+ @automobile.expects.start
154
+ end
155
+ EOM
156
+ @full_code ||=<<-EOTEST
157
+ require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
158
+ require 'hardmock'
159
+ class DummyTest < Test::Unit::TestCase
160
+ #{@teardown_code}
161
+ #{@test_code}
162
+ end
163
+ EOTEST
164
+ run_test @full_code
165
+
166
+ if @expect_unmet_expectations
167
+ assert_output_contains(/unmet expectations/i, /automobile/, /start/)
168
+ else
169
+ assert_output_doesnt_contain(/unmet expectations/i, /automobile/, /start/)
170
+ end
171
+
172
+ @expect_tests ||= 1
173
+ @expect_failures ||= 0
174
+ @expect_errors ||= 1
175
+ assert_results :tests => @expect_tests, :failures => @expect_failures, :errors => @expect_errors
176
+ end
177
+
178
+ end
@@ -0,0 +1,396 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
2
+ require 'hardmock'
3
+
4
+ class DirectMockUsageTest < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @bird = Mock.new('bird')
8
+ end
9
+
10
+ def teardown
11
+ end
12
+
13
+ #
14
+ # TESTS
15
+ #
16
+
17
+ it "raises VerifyError if expected method not called" do
18
+ @bird.expects.flap_flap
19
+
20
+ err = assert_raise VerifyError do
21
+ @bird._verify
22
+ end
23
+ assert_match(/unmet expectations/i, err.message)
24
+ end
25
+
26
+ should "not raise when expected calls are made in order" do
27
+ @bird.expects.flap_flap
28
+ @bird.expects.bang
29
+ @bird.expects.plop
30
+
31
+ @bird.flap_flap
32
+ @bird.bang
33
+ @bird.plop
34
+
35
+ @bird._verify
36
+ end
37
+
38
+ it "raises ExpectationError when unexpected method are called" do
39
+ @bird.expects.flap_flap
40
+
41
+ err = assert_raise ExpectationError do
42
+ @bird.shoot
43
+ end
44
+ assert_match(/wrong method/i, err.message)
45
+ end
46
+
47
+ it "raises ExpectationError on bad arguments" do
48
+ @bird.expects.flap_flap(:swoosh)
49
+
50
+ err = assert_raise ExpectationError do
51
+ @bird.flap_flap(:rip)
52
+ end
53
+ assert_match(/wrong arguments/i, err.message)
54
+ end
55
+
56
+ it "raises VerifyError when not all expected methods are called" do
57
+ @bird.expects.flap_flap
58
+ @bird.expects.bang
59
+ @bird.expects.plop
60
+
61
+ @bird.flap_flap
62
+
63
+ err = assert_raise VerifyError do
64
+ @bird._verify
65
+ end
66
+ assert_match(/unmet expectations/i, err.message)
67
+ end
68
+
69
+ it "raises ExpectationError when calls are made out of order" do
70
+ @bird.expects.flap_flap
71
+ @bird.expects.bang
72
+ @bird.expects.plop
73
+
74
+ @bird.flap_flap
75
+ err = assert_raise ExpectationError do
76
+ @bird.plop
77
+ end
78
+ assert_match(/wrong method/i, err.message)
79
+ end
80
+
81
+ it "returns the configured value" do
82
+ @bird.expects.plop.returns(':P')
83
+ assert_equal ':P', @bird.plop
84
+ @bird._verify
85
+
86
+ @bird.expects.plop.returns(':x')
87
+ assert_equal ':x', @bird.plop
88
+ @bird._verify
89
+ end
90
+
91
+ it "returns nil when no return is specified" do
92
+ @bird.expects.plop
93
+ assert_nil @bird.plop
94
+ @bird._verify
95
+ end
96
+
97
+ it "raises the configured exception" do
98
+ err = RuntimeError.new('shaq')
99
+ @bird.expects.plop.raises(err)
100
+ actual_err = assert_raise RuntimeError do
101
+ @bird.plop
102
+ end
103
+ assert_same err, actual_err, 'should be the same error'
104
+ @bird._verify
105
+ end
106
+
107
+ it "raises a RuntimeError when told to 'raise' a string" do
108
+ @bird.expects.plop.raises('shaq')
109
+ err = assert_raise RuntimeError do
110
+ @bird.plop
111
+ end
112
+ assert_match(/shaq/i, err.message)
113
+ @bird._verify
114
+ end
115
+
116
+ it "raises a default RuntimeError" do
117
+ @bird.expects.plop.raises
118
+ err = assert_raise RuntimeError do
119
+ @bird.plop
120
+ end
121
+ assert_match(/error/i, err.message)
122
+ @bird._verify
123
+ end
124
+
125
+ it "is quiet when correct arguments given" do
126
+ thing = Object.new
127
+ @bird.expects.plop(:big,'one',thing)
128
+ @bird.plop(:big,'one',thing)
129
+ @bird._verify
130
+ end
131
+
132
+ it "raises ExpectationError when wrong number of arguments specified" do
133
+ thing = Object.new
134
+ @bird.expects.plop(:big,'one',thing)
135
+ err = assert_raise ExpectationError do
136
+ # more
137
+ @bird.plop(:big,'one',thing,:other)
138
+ end
139
+ assert_match(/wrong arguments/i, err.message)
140
+ @bird._verify
141
+
142
+ @bird.expects.plop(:big,'one',thing)
143
+ err = assert_raise ExpectationError do
144
+ # less
145
+ @bird.plop(:big,'one')
146
+ end
147
+ assert_match(/wrong arguments/i, err.message)
148
+ @bird._verify
149
+
150
+ @bird.expects.plop
151
+ err = assert_raise ExpectationError do
152
+ # less
153
+ @bird.plop(:big)
154
+ end
155
+ assert_match(/wrong arguments/i, err.message)
156
+ @bird._verify
157
+ end
158
+
159
+ it "raises ExpectationError when arguments don't match" do
160
+ thing = Object.new
161
+ @bird.expects.plop(:big,'one',thing)
162
+ err = assert_raise ExpectationError do
163
+ @bird.plop(:big,'two',thing,:other)
164
+ end
165
+ assert_match(/wrong arguments/i, err.message)
166
+ @bird._verify
167
+ end
168
+
169
+ it "can use a block for custom reactions" do
170
+ mitt = nil
171
+ @bird.expects.plop { mitt = :ball }
172
+ assert_nil mitt
173
+ @bird.plop
174
+ assert_equal :ball, mitt, 'didnt catch the ball'
175
+ @bird._verify
176
+
177
+ @bird.expects.plop { raise 'ball' }
178
+ err = assert_raise RuntimeError do
179
+ @bird.plop
180
+ end
181
+ assert_match(/ball/i, err.message)
182
+ @bird._verify
183
+ end
184
+
185
+ it "passes mock-call arguments to the expectation block" do
186
+ ball = nil
187
+ mitt = nil
188
+ @bird.expects.plop {|arg1,arg2|
189
+ ball = arg1
190
+ mitt = arg2
191
+ }
192
+ assert_nil ball
193
+ assert_nil mitt
194
+ @bird.plop(:ball,:mitt)
195
+ assert_equal :ball, ball
196
+ assert_equal :mitt, mitt
197
+ @bird._verify
198
+ end
199
+
200
+ it "validates arguments if specified in addition to a block" do
201
+ ball = nil
202
+ mitt = nil
203
+ @bird.expects.plop(:ball,:mitt) {|arg1,arg2|
204
+ ball = arg1
205
+ mitt = arg2
206
+ }
207
+ assert_nil ball
208
+ assert_nil mitt
209
+ @bird.plop(:ball,:mitt)
210
+ assert_equal :ball, ball
211
+ assert_equal :mitt, mitt
212
+ @bird._verify
213
+
214
+ ball = nil
215
+ mitt = nil
216
+ @bird.expects.plop(:bad,:stupid) {|arg1,arg2|
217
+ ball = arg1
218
+ mitt = arg2
219
+ }
220
+ assert_nil ball
221
+ assert_nil mitt
222
+ err = assert_raise ExpectationError do
223
+ @bird.plop(:ball,:mitt)
224
+ end
225
+ assert_match(/wrong arguments/i, err.message)
226
+ assert_nil ball
227
+ assert_nil mitt
228
+ @bird._verify
229
+
230
+ ball = nil
231
+ mitt = nil
232
+ @bird.expects.plop(:ball,:mitt) {|arg1,arg2|
233
+ ball = arg1
234
+ mitt = arg2
235
+ }
236
+ assert_nil ball
237
+ assert_nil mitt
238
+ err = assert_raise ExpectationError do
239
+ @bird.plop(:ball)
240
+ end
241
+ assert_match(/wrong arguments/i, err.message)
242
+ assert_nil ball
243
+ assert_nil mitt
244
+ @bird._verify
245
+ end
246
+
247
+ it "passes runtime blocks to the expectation block as the final argument" do
248
+ runtime_block_called = false
249
+ got_arg = nil
250
+
251
+ # Eg, bird expects someone to subscribe to :tweet using the 'when' method
252
+ @bird.expects.when(:tweet) { |arg1, block|
253
+ got_arg = arg1
254
+ block.call
255
+ }
256
+
257
+ @bird.when(:tweet) do
258
+ runtime_block_called = true
259
+ end
260
+
261
+ assert_equal :tweet, got_arg, "Wrong arg"
262
+ assert runtime_block_called, "The runtime block should have been invoked by the user block"
263
+
264
+ @bird.expects.when(:warnk) { |e,blk| }
265
+
266
+ err = assert_raise ExpectationError do
267
+ @bird.when(:honk) { }
268
+ end
269
+ assert_match(/wrong arguments/i, err.message)
270
+
271
+ @bird._verify
272
+ end
273
+
274
+ it "passes the runtime block to the expectation block as sole argument if no other args come into play" do
275
+ runtime_block_called = false
276
+ @bird.expects.subscribe { |block| block.call }
277
+ @bird.subscribe do
278
+ runtime_block_called = true
279
+ end
280
+ assert runtime_block_called, "The runtime block should have been invoked by the user block"
281
+ end
282
+
283
+ it "provides nil as final argument if expectation block seems to want a block" do
284
+ invoked = false
285
+ @bird.expects.kablam(:scatter) { |shot,block|
286
+ assert_equal :scatter, shot, "Wrong shot"
287
+ assert_nil block, "The expectation block should get a nil block when user neglects to pass one"
288
+ invoked = true
289
+ }
290
+ @bird.kablam :scatter
291
+ assert invoked, "Expectation block not invoked"
292
+
293
+ @bird._verify
294
+ end
295
+
296
+ it "can set explicit return after an expectation block" do
297
+ got = nil
298
+ @bird.expects.kablam(:scatter) { |shot|
299
+ got = shot
300
+ }.returns(:death)
301
+
302
+ val = @bird.kablam :scatter
303
+ assert_equal :death, val, "Wrong return value"
304
+ assert_equal :scatter, got, "Wrong argument"
305
+ @bird._verify
306
+ end
307
+
308
+ it "can raise after an expectation block" do
309
+ got = nil
310
+ @bird.expects.kablam(:scatter) do |shot|
311
+ got = shot
312
+ end.raises "hell"
313
+
314
+ err = assert_raise RuntimeError do
315
+ @bird.kablam :scatter
316
+ end
317
+ assert_match(/hell/i, err.message)
318
+
319
+ @bird._verify
320
+ end
321
+
322
+ it "stores the semantic value of the expectation block after it executes" do
323
+ expectation = @bird.expects.kablam(:slug) { |shot|
324
+ "The shot was #{shot}"
325
+ }
326
+
327
+ assert_not_nil expectation, "Expectation nil"
328
+ assert_nil expectation.block_value, "Block value should start out nil"
329
+
330
+ ret_val = @bird.kablam :slug
331
+
332
+ assert_equal "The shot was slug", expectation.block_value
333
+ assert_equal "The shot was slug", ret_val, "Block value should also be used for return"
334
+
335
+ @bird._verify
336
+ end
337
+
338
+
339
+ it "uses the value of the expectation block as the default return value" do
340
+ @bird.expects.kablam(:scatter) { |shot|
341
+ "The shot was #{shot}"
342
+ }
343
+ val = @bird.kablam :scatter
344
+ assert_equal "The shot was scatter", val, "Wrong return value"
345
+ @bird._verify
346
+ end
347
+
348
+ it "returns the Expectation even if 'returns' is used" do
349
+ expectation = @bird.expects.kablam(:slug) { |shot|
350
+ "The shot was #{shot}"
351
+ }.returns :hosed
352
+
353
+ assert_not_nil expectation, "Expectation nil"
354
+ assert_nil expectation.block_value, "Block value should start out nil"
355
+
356
+ ret_val = @bird.kablam :slug
357
+
358
+ assert_equal "The shot was slug", expectation.block_value
359
+ assert_equal :hosed, ret_val, "Block value should also be used for return"
360
+
361
+ @bird._verify
362
+ end
363
+
364
+ it "returns the Expectation even if 'raises' is used" do
365
+ expectation = @bird.expects.kablam(:slug) { |shot|
366
+ "The shot was #{shot}"
367
+ }.raises "aiee!"
368
+
369
+ assert_not_nil expectation, "Expectation nil"
370
+ assert_nil expectation.block_value, "Block value should start out nil"
371
+
372
+ err = assert_raise RuntimeError do
373
+ @bird.kablam :slug
374
+ end
375
+ assert_match(/aiee!/i, err.message)
376
+ assert_equal "The shot was slug", expectation.block_value
377
+ @bird._verify
378
+ end
379
+
380
+
381
+ it "supports assignment-style methods" do
382
+ @bird.expects.size = "large"
383
+ @bird.size = "large"
384
+ @bird._verify
385
+ end
386
+
387
+ it "supports assignments and raising (using explicit-method syntax)" do
388
+ @bird.expects('size=','large').raises "boom"
389
+
390
+ err = assert_raise RuntimeError do
391
+ @bird.size = "large"
392
+ end
393
+ assert_match(/boom/i, err.message)
394
+ end
395
+
396
+ end