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.
- data/CHANGES +8 -0
- data/LICENSE +19 -0
- data/README +105 -0
- data/Rakefile +83 -0
- data/config/environment.rb +23 -0
- data/config/objects.yml +23 -0
- data/lib/analog_io.rb +23 -0
- data/lib/connection_state.rb +13 -0
- data/lib/digital_auxport_io.rb +34 -0
- data/lib/digital_configuration.rb +53 -0
- data/lib/digital_port_io.rb +39 -0
- data/lib/library_translator.rb +46 -0
- data/lib/minilab.rb +130 -0
- data/lib/minilab_constants.rb +20 -0
- data/lib/minilab_context.rb +14 -0
- data/lib/minilab_hardware.rb +112 -0
- data/lib/minilab_wrapper.rb +12 -0
- data/test/system/analog_input.test +3 -0
- data/test/system/analog_output.test +37 -0
- data/test/system/digital_port_input.test +5 -0
- data/test/system/digital_port_output.test +39 -0
- data/test/system/digital_port_read_byte.test +26 -0
- data/test/system/digital_screw_terminals_input.test +2 -0
- data/test/system/digital_screw_terminals_output.test +11 -0
- data/test/system/minilab_driver.rb +83 -0
- data/test/test_helper.rb +15 -0
- data/test/unit/analog_io_test.rb +54 -0
- data/test/unit/connection_state_test.rb +18 -0
- data/test/unit/digital_auxport_io_test.rb +102 -0
- data/test/unit/digital_configuration_test.rb +100 -0
- data/test/unit/digital_port_io_test.rb +67 -0
- data/test/unit/library_translator_test.rb +98 -0
- data/test/unit/minilab_context_test.rb +23 -0
- data/test/unit/minilab_hardware_test.rb +33 -0
- data/test/unit/minilab_test.rb +115 -0
- data/test/unit/minilab_wrapper_test.rb +24 -0
- data/vendor/behaviors/lib/behaviors.rb +50 -0
- data/vendor/behaviors/tasks/behaviors_tasks.rake +140 -0
- data/vendor/behaviors/test/behaviors_tasks_test.rb +71 -0
- data/vendor/behaviors/test/behaviors_test.rb +50 -0
- data/vendor/behaviors/test/tasks_test/Rakefile +16 -0
- data/vendor/behaviors/test/tasks_test/doc/behaviors.html +55 -0
- data/vendor/behaviors/test/tasks_test/lib/user.rb +2 -0
- data/vendor/behaviors/test/tasks_test/test/user_test.rb +17 -0
- data/vendor/constructor-1.0.2/History.txt +11 -0
- data/vendor/constructor-1.0.2/Manifest.txt +6 -0
- data/vendor/constructor-1.0.2/README.txt +77 -0
- data/vendor/constructor-1.0.2/Rakefile +33 -0
- data/vendor/constructor-1.0.2/lib/constructor.rb +119 -0
- data/vendor/constructor-1.0.2/specs/constructor_spec.rb +345 -0
- data/vendor/diy-1.1.1/History.txt +23 -0
- data/vendor/diy-1.1.1/Manifest.txt +88 -0
- data/vendor/diy-1.1.1/README.txt +220 -0
- data/vendor/diy-1.1.1/Rakefile +29 -0
- data/vendor/diy-1.1.1/TODO.txt +9 -0
- data/vendor/diy-1.1.1/homepage/Notes.txt +27 -0
- data/vendor/diy-1.1.1/homepage/Rakefile +14 -0
- data/vendor/diy-1.1.1/homepage/diy_example.png +0 -0
- data/vendor/diy-1.1.1/homepage/index.erb +36 -0
- data/vendor/diy-1.1.1/homepage/index.html +45 -0
- data/vendor/diy-1.1.1/homepage/objects_yml.png +0 -0
- data/vendor/diy-1.1.1/homepage/page_header.graffle +0 -0
- data/vendor/diy-1.1.1/homepage/page_header.html +9 -0
- data/vendor/diy-1.1.1/homepage/page_header.png +0 -0
- data/vendor/diy-1.1.1/lib/diy.rb +365 -0
- data/vendor/diy-1.1.1/sample_code/car.rb +7 -0
- data/vendor/diy-1.1.1/sample_code/chassis.rb +5 -0
- data/vendor/diy-1.1.1/sample_code/diy_example.rb +26 -0
- data/vendor/diy-1.1.1/sample_code/engine.rb +5 -0
- data/vendor/diy-1.1.1/sample_code/objects.yml +10 -0
- data/vendor/diy-1.1.1/test/constructor.rb +119 -0
- data/vendor/diy-1.1.1/test/diy_test.rb +604 -0
- data/vendor/diy-1.1.1/test/files/broken_construction.yml +7 -0
- data/vendor/diy-1.1.1/test/files/cat/cat.rb +3 -0
- data/vendor/diy-1.1.1/test/files/cat/extra_conflict.yml +5 -0
- data/vendor/diy-1.1.1/test/files/cat/heritage.rb +2 -0
- data/vendor/diy-1.1.1/test/files/cat/needs_input.yml +3 -0
- data/vendor/diy-1.1.1/test/files/cat/the_cat_lineage.rb +1 -0
- data/vendor/diy-1.1.1/test/files/dog/dog_model.rb +3 -0
- data/vendor/diy-1.1.1/test/files/dog/dog_presenter.rb +3 -0
- data/vendor/diy-1.1.1/test/files/dog/dog_view.rb +2 -0
- data/vendor/diy-1.1.1/test/files/dog/file_resolver.rb +2 -0
- data/vendor/diy-1.1.1/test/files/dog/other_thing.rb +2 -0
- data/vendor/diy-1.1.1/test/files/dog/simple.yml +11 -0
- data/vendor/diy-1.1.1/test/files/donkey/foo.rb +8 -0
- data/vendor/diy-1.1.1/test/files/donkey/foo/bar/qux.rb +7 -0
- data/vendor/diy-1.1.1/test/files/fud/objects.yml +13 -0
- data/vendor/diy-1.1.1/test/files/fud/toy.rb +14 -0
- data/vendor/diy-1.1.1/test/files/functions/invalid_method.yml +5 -0
- data/vendor/diy-1.1.1/test/files/functions/method_extractor.rb +3 -0
- data/vendor/diy-1.1.1/test/files/functions/nonsingleton_objects.yml +6 -0
- data/vendor/diy-1.1.1/test/files/functions/objects.yml +11 -0
- data/vendor/diy-1.1.1/test/files/functions/thing.rb +3 -0
- data/vendor/diy-1.1.1/test/files/functions/thing_builder.rb +21 -0
- data/vendor/diy-1.1.1/test/files/functions/things_builder.rb +3 -0
- data/vendor/diy-1.1.1/test/files/gnu/objects.yml +14 -0
- data/vendor/diy-1.1.1/test/files/gnu/thinger.rb +7 -0
- data/vendor/diy-1.1.1/test/files/goat/base.rb +8 -0
- data/vendor/diy-1.1.1/test/files/goat/can.rb +6 -0
- data/vendor/diy-1.1.1/test/files/goat/goat.rb +6 -0
- data/vendor/diy-1.1.1/test/files/goat/objects.yml +12 -0
- data/vendor/diy-1.1.1/test/files/goat/paper.rb +6 -0
- data/vendor/diy-1.1.1/test/files/goat/plane.rb +7 -0
- data/vendor/diy-1.1.1/test/files/goat/shirt.rb +6 -0
- data/vendor/diy-1.1.1/test/files/goat/wings.rb +8 -0
- data/vendor/diy-1.1.1/test/files/horse/holder_thing.rb +3 -0
- data/vendor/diy-1.1.1/test/files/horse/objects.yml +7 -0
- data/vendor/diy-1.1.1/test/files/namespace/animal/bird.rb +5 -0
- data/vendor/diy-1.1.1/test/files/namespace/animal/cat.rb +5 -0
- data/vendor/diy-1.1.1/test/files/namespace/animal/reptile/hardshell/turtle.rb +8 -0
- data/vendor/diy-1.1.1/test/files/namespace/animal/reptile/lizard.rb +7 -0
- data/vendor/diy-1.1.1/test/files/namespace/bad_module_specified.yml +8 -0
- data/vendor/diy-1.1.1/test/files/namespace/class_name_combine.yml +8 -0
- data/vendor/diy-1.1.1/test/files/namespace/hello.txt +1 -0
- data/vendor/diy-1.1.1/test/files/namespace/no_module_specified.yml +8 -0
- data/vendor/diy-1.1.1/test/files/namespace/objects.yml +21 -0
- data/vendor/diy-1.1.1/test/files/namespace/road.rb +2 -0
- data/vendor/diy-1.1.1/test/files/namespace/sky.rb +2 -0
- data/vendor/diy-1.1.1/test/files/namespace/subcontext.yml +22 -0
- data/vendor/diy-1.1.1/test/files/non_singleton/air.rb +2 -0
- data/vendor/diy-1.1.1/test/files/non_singleton/fat_cat.rb +3 -0
- data/vendor/diy-1.1.1/test/files/non_singleton/objects.yml +19 -0
- data/vendor/diy-1.1.1/test/files/non_singleton/pig.rb +3 -0
- data/vendor/diy-1.1.1/test/files/non_singleton/thread_spinner.rb +3 -0
- data/vendor/diy-1.1.1/test/files/non_singleton/tick.rb +3 -0
- data/vendor/diy-1.1.1/test/files/non_singleton/yard.rb +2 -0
- data/vendor/diy-1.1.1/test/files/yak/core_model.rb +3 -0
- data/vendor/diy-1.1.1/test/files/yak/core_presenter.rb +3 -0
- data/vendor/diy-1.1.1/test/files/yak/core_view.rb +1 -0
- data/vendor/diy-1.1.1/test/files/yak/data_source.rb +1 -0
- data/vendor/diy-1.1.1/test/files/yak/fringe_model.rb +3 -0
- data/vendor/diy-1.1.1/test/files/yak/fringe_presenter.rb +3 -0
- data/vendor/diy-1.1.1/test/files/yak/fringe_view.rb +1 -0
- data/vendor/diy-1.1.1/test/files/yak/giant_squid.rb +3 -0
- data/vendor/diy-1.1.1/test/files/yak/krill.rb +2 -0
- data/vendor/diy-1.1.1/test/files/yak/my_objects.yml +21 -0
- data/vendor/diy-1.1.1/test/files/yak/sub_sub_context_test.yml +27 -0
- data/vendor/diy-1.1.1/test/test_helper.rb +39 -0
- data/vendor/ffi-0.4.0-x86-mswin32/LICENSE +51 -0
- data/vendor/ffi-0.4.0-x86-mswin32/Rakefile +142 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/AbstractMemory.c +412 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/AbstractMemory.h +68 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/AutoPointer.c +60 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/AutoPointer.h +18 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Buffer.c +171 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Callback.c +374 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Callback.h +47 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/DynamicLibrary.c +213 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/DynamicLibrary.h +22 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Invoker.c +962 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/LastError.c +135 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/LastError.h +18 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/MemoryPointer.c +156 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/MemoryPointer.h +20 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/NullPointer.c +143 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Platform.c +59 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Platform.h +16 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Pointer.c +164 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Pointer.h +25 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Struct.c +477 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Struct.h +26 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Type.c +230 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Type.h +28 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Types.c +118 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/Types.h +54 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/compat.h +22 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/endian.h +40 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/extconf.rb +31 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/ffi.c +76 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi.bsd.mk +34 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi.darwin.mk +75 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi.gnu.mk +29 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi.mk +13 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/ChangeLog +3243 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/ChangeLog.libffi +347 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/ChangeLog.libgcj +40 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/ChangeLog.v1 +764 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/LICENSE +21 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/Makefile.am +177 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/Makefile.in +1640 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/README +328 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/TODO +1 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/acinclude.m4 +92 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/aclocal.m4 +7516 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/compile +142 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/config.guess +1516 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/config.sub +1626 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/configure +24414 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/configure.ac +365 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/configure.host +11 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/depcomp +584 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/doc/libffi.info +533 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/doc/libffi.texi +541 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/doc/stamp-vti +4 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/doc/version.texi +4 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/fficonfig.h.in +160 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/include/Makefile.am +9 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/include/Makefile.in +422 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/include/ffi.h.in +393 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/include/ffi_common.h +98 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/install-sh +323 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/libffi.pc.in +10 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/libtool-version +29 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/ltcf-c.sh +861 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/ltcf-cxx.sh +1069 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/ltcf-gcj.sh +700 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/ltconfig +2862 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/ltmain.sh +6930 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/man/Makefile.am +8 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/man/Makefile.in +395 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/man/ffi.3 +31 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/man/ffi_call.3 +103 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/man/ffi_prep_cif.3 +66 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/mdate-sh +201 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/missing +353 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/mkinstalldirs +158 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/alpha/ffi.c +284 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/alpha/ffitarget.h +48 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/alpha/osf.S +366 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/arm/ffi.c +309 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/arm/ffitarget.h +49 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/arm/sysv.S +299 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/closures.c +596 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/cris/ffi.c +383 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/cris/ffitarget.h +51 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/cris/sysv.S +215 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/debug.c +59 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/dlmalloc.c +5099 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/frv/eabi.S +128 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/frv/ffi.c +292 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/frv/ffitarget.h +61 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/ia64/ffi.c +580 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/ia64/ffitarget.h +50 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/ia64/ia64_flags.h +40 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/ia64/unix.S +560 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/java_raw_api.c +359 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/m32r/ffi.c +232 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/m32r/ffitarget.h +48 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/m32r/sysv.S +121 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/m68k/ffi.c +278 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/m68k/ffitarget.h +49 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/m68k/sysv.S +234 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/mips/ffi.c +926 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/mips/ffitarget.h +202 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/mips/n32.S +534 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/mips/o32.S +381 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/pa/ffi.c +709 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/pa/ffitarget.h +77 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/pa/hpux32.S +368 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/pa/linux.S +357 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/aix.S +225 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/aix_closure.S +247 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/asm.h +125 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/darwin.S +245 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +317 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/ffi.c +1429 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +800 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/ffitarget.h +118 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/linux64.S +187 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +236 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +327 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/powerpc/sysv.S +230 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/prep_cif.c +174 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/raw_api.c +254 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/s390/ffi.c +780 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/s390/ffitarget.h +60 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/s390/sysv.S +434 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/sh/ffi.c +716 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/sh/ffitarget.h +49 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/sh/sysv.S +850 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/sh64/ffi.c +453 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/sh64/ffitarget.h +53 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/sh64/sysv.S +530 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/sparc/ffi.c +610 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/sparc/ffitarget.h +66 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/sparc/v8.S +272 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/sparc/v9.S +307 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/types.c +77 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/x86/darwin.S +443 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/x86/darwin64.S +416 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/x86/ffi.c +475 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/x86/ffi64.c +572 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/x86/ffitarget.h +90 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/x86/freebsd.S +458 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/x86/sysv.S +437 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/x86/unix64.S +418 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/src/x86/win32.S +391 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/Makefile.am +71 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/Makefile.in +447 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/config/default.exp +1 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/lib/libffi-dg.exp +289 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +263 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/lib/wrapper.exp +45 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +36 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn0.c +97 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn1.c +89 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn2.c +89 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn3.c +90 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn4.c +97 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn5.c +99 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn6.c +98 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/closure_stdcall.c +72 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c +102 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c +103 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c +104 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c +110 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c +97 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c +99 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c +101 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c +121 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c +98 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c +103 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c +98 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c +98 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c +106 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c +98 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c +117 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c +106 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c +132 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c +121 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c +107 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c +125 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c +105 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c +96 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c +98 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c +99 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c +101 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c +99 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c +100 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c +101 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c +99 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c +99 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +99 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c +99 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c +99 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +100 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_double.c +51 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_float.c +51 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_schar.c +82 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshort.c +82 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshortchar.c +94 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_uchar.c +99 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushort.c +82 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushortchar.c +94 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_schar.c +52 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_sint.c +50 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_sshort.c +50 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar.c +50 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint.c +51 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +54 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort.c +51 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +86 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/float.c +59 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +58 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +57 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +72 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/float4.c +62 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/many.c +69 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/many_win32.c +63 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +53 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c +160 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c +169 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +141 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c +118 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c +119 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c +119 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c +120 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c +139 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c +119 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c +139 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c +139 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/problem1.c +98 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c +59 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc-tc.c +114 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +35 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c +43 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c +42 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c +35 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c +36 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c +49 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c +42 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +34 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c +41 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +42 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +36 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +38 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +38 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +38 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +44 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/strlen_win32.c +44 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +65 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +67 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +59 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +63 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +65 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +64 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +74 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +80 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +67 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +86 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.special/special.exp +38 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.special/unwindtest.cc +123 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/testsuite/libffi.special/unwindtest_ffi_call.cc +53 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/libffi/texinfo.tex +7482 -0
- data/vendor/ffi-0.4.0-x86-mswin32/ext/ffi_c/rbffi.h +23 -0
- data/vendor/ffi-0.4.0-x86-mswin32/gen/Rakefile +12 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/1.8/ffi_c.so +0 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/1.9/ffi_c.so +0 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi.rb +11 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/autopointer.rb +61 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/buffer.rb +0 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/callback.rb +10 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/enum.rb +78 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/errno.rb +8 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/ffi.rb +96 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/io.rb +21 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/library.rb +243 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/managedstruct.rb +55 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/memorypointer.rb +73 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/platform.rb +78 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/pointer.rb +119 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/struct.rb +354 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/tools/const_generator.rb +177 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/tools/generator.rb +58 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/tools/generator_task.rb +35 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/tools/struct_generator.rb +194 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/tools/types_generator.rb +123 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/types.rb +153 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/union.rb +17 -0
- data/vendor/ffi-0.4.0-x86-mswin32/lib/ffi/variadic.rb +30 -0
- data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/bool_spec.rb +24 -0
- data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/buffer_spec.rb +196 -0
- data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/callback_spec.rb +560 -0
- data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/enum_spec.rb +164 -0
- data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/errno_spec.rb +13 -0
- data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/library_spec.rb +144 -0
- data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/managed_struct_spec.rb +56 -0
- data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/number_spec.rb +231 -0
- data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/pointer_spec.rb +195 -0
- data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/rbx/attach_function_spec.rb +27 -0
- data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/rbx/memory_pointer_spec.rb +102 -0
- data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/rbx/spec_helper.rb +1 -0
- data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/rbx/struct_spec.rb +13 -0
- data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/spec_helper.rb +17 -0
- data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/string_spec.rb +103 -0
- data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/struct_callback_spec.rb +41 -0
- data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/struct_initialize_spec.rb +30 -0
- data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/struct_spec.rb +476 -0
- data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/typedef_spec.rb +48 -0
- data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/union_spec.rb +60 -0
- data/vendor/ffi-0.4.0-x86-mswin32/spec/ffi/variadic_spec.rb +84 -0
- data/vendor/ffi-0.4.0-x86-mswin32/spec/spec.opts +4 -0
- data/vendor/hardmock-1.3.7/CHANGES +78 -0
- data/vendor/hardmock-1.3.7/LICENSE +7 -0
- data/vendor/hardmock-1.3.7/README +70 -0
- data/vendor/hardmock-1.3.7/Rakefile +8 -0
- data/vendor/hardmock-1.3.7/config/environment.rb +12 -0
- data/vendor/hardmock-1.3.7/lib/assert_error.rb +23 -0
- data/vendor/hardmock-1.3.7/lib/extend_test_unit.rb +14 -0
- data/vendor/hardmock-1.3.7/lib/hardmock.rb +86 -0
- data/vendor/hardmock-1.3.7/lib/hardmock/errors.rb +22 -0
- data/vendor/hardmock-1.3.7/lib/hardmock/expectation.rb +229 -0
- data/vendor/hardmock-1.3.7/lib/hardmock/expectation_builder.rb +9 -0
- data/vendor/hardmock-1.3.7/lib/hardmock/expector.rb +26 -0
- data/vendor/hardmock-1.3.7/lib/hardmock/method_cleanout.rb +33 -0
- data/vendor/hardmock-1.3.7/lib/hardmock/mock.rb +180 -0
- data/vendor/hardmock-1.3.7/lib/hardmock/mock_control.rb +53 -0
- data/vendor/hardmock-1.3.7/lib/hardmock/stubbing.rb +210 -0
- data/vendor/hardmock-1.3.7/lib/hardmock/trapper.rb +31 -0
- data/vendor/hardmock-1.3.7/lib/hardmock/utils.rb +9 -0
- data/vendor/hardmock-1.3.7/lib/test_unit_before_after.rb +169 -0
- data/vendor/hardmock-1.3.7/rake_tasks/test.rake +22 -0
- data/vendor/hardmock-1.3.7/test/functional/assert_error_test.rb +52 -0
- data/vendor/hardmock-1.3.7/test/functional/auto_verify_test.rb +178 -0
- data/vendor/hardmock-1.3.7/test/functional/direct_mock_usage_test.rb +396 -0
- data/vendor/hardmock-1.3.7/test/functional/hardmock_test.rb +434 -0
- data/vendor/hardmock-1.3.7/test/functional/stubbing_test.rb +479 -0
- data/vendor/hardmock-1.3.7/test/test_helper.rb +43 -0
- data/vendor/hardmock-1.3.7/test/unit/expectation_builder_test.rb +19 -0
- data/vendor/hardmock-1.3.7/test/unit/expectation_test.rb +372 -0
- data/vendor/hardmock-1.3.7/test/unit/expector_test.rb +57 -0
- data/vendor/hardmock-1.3.7/test/unit/method_cleanout_test.rb +36 -0
- data/vendor/hardmock-1.3.7/test/unit/mock_control_test.rb +175 -0
- data/vendor/hardmock-1.3.7/test/unit/mock_test.rb +279 -0
- data/vendor/hardmock-1.3.7/test/unit/test_unit_before_after_test.rb +452 -0
- data/vendor/hardmock-1.3.7/test/unit/trapper_test.rb +62 -0
- data/vendor/hardmock-1.3.7/test/unit/verify_error_test.rb +40 -0
- data/vendor/mcc/cbw32.dll +0 -0
- data/vendor/systir/systir.rb +403 -0
- data/vendor/systir/test/unit/ui/xml/testrunner.rb +192 -0
- data/vendor/systir/test/unit/ui/xml/xmltestrunner.xslt +109 -0
- metadata +561 -0
@@ -0,0 +1,119 @@
|
|
1
|
+
CONSTRUCTOR_VERSION = '1.0.2' #:nodoc:#
|
2
|
+
|
3
|
+
class Class #:nodoc:#
|
4
|
+
def constructor(*attrs, &block)
|
5
|
+
call_block = ''
|
6
|
+
if block_given?
|
7
|
+
@constructor_block = block
|
8
|
+
call_block = 'self.instance_eval(&self.class.constructor_block)'
|
9
|
+
end
|
10
|
+
# Look for embedded options in the listing:
|
11
|
+
opts = attrs.find { |a| a.kind_of?(Hash) and attrs.delete(a) }
|
12
|
+
do_acc = opts.nil? ? false : opts[:accessors] == true
|
13
|
+
require_args = opts.nil? ? true : opts[:strict] != false
|
14
|
+
super_args = opts.nil? ? nil : opts[:super]
|
15
|
+
|
16
|
+
# Incorporate superclass's constructor keys, if our superclass
|
17
|
+
if superclass.constructor_keys
|
18
|
+
similar_keys = superclass.constructor_keys & attrs
|
19
|
+
raise "Base class already has keys #{similar_keys.inspect}" unless similar_keys.empty?
|
20
|
+
attrs = [attrs,superclass.constructor_keys].flatten
|
21
|
+
end
|
22
|
+
# Generate ivar assigner code lines
|
23
|
+
assigns = ''
|
24
|
+
attrs.each do |k|
|
25
|
+
assigns += "@#{k.to_s} = args[:#{k.to_s}]\n"
|
26
|
+
end
|
27
|
+
|
28
|
+
# If accessors option is on, declare accessors for the attributes:
|
29
|
+
if do_acc
|
30
|
+
self.class_eval "attr_accessor " + attrs.map {|x| ":#{x.to_s}"}.join(',')
|
31
|
+
end
|
32
|
+
|
33
|
+
# If user supplied super-constructor hints:
|
34
|
+
super_call = ''
|
35
|
+
if super_args
|
36
|
+
list = super_args.map do |a|
|
37
|
+
case a
|
38
|
+
when String
|
39
|
+
%|"#{a}"|
|
40
|
+
when Symbol
|
41
|
+
%|:#{a}|
|
42
|
+
end
|
43
|
+
end
|
44
|
+
super_call = %|super(#{list.join(',')})|
|
45
|
+
end
|
46
|
+
|
47
|
+
# If strict is on, define the constructor argument validator method,
|
48
|
+
# and setup the initializer to invoke the validator method.
|
49
|
+
# Otherwise, insert lax code into the initializer.
|
50
|
+
validation_code = "return if args.nil?"
|
51
|
+
if require_args
|
52
|
+
self.class_eval do
|
53
|
+
def _validate_constructor_args(args)
|
54
|
+
# First, make sure we've got args of some kind
|
55
|
+
unless args and args.keys and args.keys.size > 0
|
56
|
+
raise ConstructorArgumentError.new(self.class.constructor_keys)
|
57
|
+
end
|
58
|
+
# Scan for missing keys in the argument hash
|
59
|
+
a_keys = args.keys
|
60
|
+
missing = []
|
61
|
+
self.class.constructor_keys.each do |ck|
|
62
|
+
unless a_keys.member?(ck)
|
63
|
+
missing << ck
|
64
|
+
end
|
65
|
+
a_keys.delete(ck) # Delete inbound keys as we address them
|
66
|
+
end
|
67
|
+
if missing.size > 0 || a_keys.size > 0
|
68
|
+
raise ConstructorArgumentError.new(missing,a_keys)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
# Setup the code to insert into the initializer:
|
73
|
+
validation_code = "_validate_constructor_args args "
|
74
|
+
end
|
75
|
+
|
76
|
+
# Generate the initializer code
|
77
|
+
self.class_eval %{
|
78
|
+
def initialize(args=nil)
|
79
|
+
#{super_call}
|
80
|
+
#{validation_code}
|
81
|
+
#{assigns}
|
82
|
+
setup if respond_to?(:setup)
|
83
|
+
#{call_block}
|
84
|
+
end
|
85
|
+
}
|
86
|
+
|
87
|
+
# Remember our constructor keys
|
88
|
+
@_ctor_keys = attrs
|
89
|
+
end
|
90
|
+
|
91
|
+
# Access the constructor keys for this class
|
92
|
+
def constructor_keys; @_ctor_keys ||=[]; end
|
93
|
+
|
94
|
+
def constructor_block #:nodoc:#
|
95
|
+
@constructor_block
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
# Fancy validation exception, based on missing and extraneous keys.
|
101
|
+
class ConstructorArgumentError < RuntimeError #:nodoc:#
|
102
|
+
def initialize(missing,rejected=[])
|
103
|
+
err_msg = ''
|
104
|
+
if missing.size > 0
|
105
|
+
err_msg = "Missing constructor args [#{missing.join(',')}]"
|
106
|
+
end
|
107
|
+
if rejected.size > 0
|
108
|
+
# Some inbound keys were not addressed earlier; this means they're unwanted
|
109
|
+
if err_msg
|
110
|
+
err_msg << "; " # Appending to earlier message about missing items
|
111
|
+
else
|
112
|
+
err_msg = ''
|
113
|
+
end
|
114
|
+
# Enumerate the rejected key names
|
115
|
+
err_msg << "Rejected constructor args [#{rejected.join(',')}]"
|
116
|
+
end
|
117
|
+
super err_msg
|
118
|
+
end
|
119
|
+
end
|
@@ -0,0 +1,604 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/test_helper"
|
2
|
+
require 'diy'
|
3
|
+
require 'fileutils'
|
4
|
+
include FileUtils
|
5
|
+
|
6
|
+
class DIYTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def setup
|
9
|
+
# Add load paths:
|
10
|
+
%w|gnu dog cat yak donkey goat horse fud non_singleton namespace functions|.each do |p|
|
11
|
+
libdir = path_to_test_file(p)
|
12
|
+
$: << libdir unless $:.member?(libdir)
|
13
|
+
end
|
14
|
+
DIY::Context.auto_require = true # Restore default
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
#
|
19
|
+
# TESTS
|
20
|
+
#
|
21
|
+
|
22
|
+
def test_essential_use_case
|
23
|
+
load_context "dog/simple.yml"
|
24
|
+
|
25
|
+
# Check object defs
|
26
|
+
check_dog_objects @diy
|
27
|
+
|
28
|
+
# Tweak the load-path
|
29
|
+
$: << path_to_test_file("dog")
|
30
|
+
|
31
|
+
# Get the objects, use reference comparison to check composition
|
32
|
+
presenter = @diy.get_object('dog_presenter')
|
33
|
+
assert_not_nil presenter, 'nil dog_presenter'
|
34
|
+
|
35
|
+
model = @diy.get_object('dog_model')
|
36
|
+
assert_not_nil model, 'nil dog_model'
|
37
|
+
assert_same presenter.model, model, "Different model came from context than found in presenter"
|
38
|
+
|
39
|
+
view = @diy.get_object('dog_view')
|
40
|
+
assert_not_nil view, 'nil dog_view'
|
41
|
+
assert_same presenter.view, view, "Different view came from context than found in presenter"
|
42
|
+
|
43
|
+
resolver = @diy.get_object('file_resolver')
|
44
|
+
assert_not_nil resolver, 'nil file_resolver'
|
45
|
+
assert_same model.file_resolver, resolver, "File resolver in model is different than one in context"
|
46
|
+
|
47
|
+
# Check repeat access:
|
48
|
+
assert_same model, @diy.get_object('dog_model'), "Second access of model yielded different result"
|
49
|
+
assert_same view, @diy.get_object('dog_view'), "Second access of view yielded different result"
|
50
|
+
assert_same presenter, @diy.get_object('dog_presenter'), "Second access of presenter got difrnt result"
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_classname_inside_a_module
|
54
|
+
load_hash 'thinger' => {'class' => "DiyTesting::Bar::Foo", 'lib' => 'foo'}
|
55
|
+
@diy.build_everything
|
56
|
+
assert_not_nil @diy['thinger'], "Should have got my thinger (which is hiding in a couple modules)"
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_classname_inside_a_module_loads_from_directories_named_after_the_underscored_module_names
|
60
|
+
load_hash 'thinger' => {'class' => "Foo::Bar::Qux"}
|
61
|
+
# expect it to be loaded from: foo/bar/qux.rb
|
62
|
+
@diy.build_everything
|
63
|
+
assert_not_nil @diy['thinger'], "Should have got my thinger (which is hiding in a couple modules)"
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_use_class_directly
|
67
|
+
load_hash 'thinger' => {'class' => "DiyTesting::Bar::Foo", 'lib' => 'foo', 'use_class_directly' => true}
|
68
|
+
@diy.build_everything
|
69
|
+
assert_equal DiyTesting::Bar::Foo, @diy['thinger'], "Should be the class 'object'"
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_classname_inside_a_module_derives_the_namespaced_classname_from_the_underscored_object_def_key
|
73
|
+
load_hash 'foo/bar/qux' => nil
|
74
|
+
@diy.build_everything
|
75
|
+
assert_not_nil @diy['foo/bar/qux'], "Should have got my qux (which is hiding in a couple modules)"
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_keys
|
79
|
+
load_context "dog/simple.yml"
|
80
|
+
assert_equal %w|dog_model dog_presenter dog_view file_resolver other_thing|, @diy.keys.sort
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_subcontext_keys_should_include_parent_context_keys
|
84
|
+
load_context 'yak/sub_sub_context_test.yml'
|
85
|
+
main_keys = %w|core_presenter core_model core_view data_source|.sort
|
86
|
+
assert_equal main_keys, @diy.keys.sort, "Wrong keys in main context"
|
87
|
+
@diy.within :fringe_context do |fcontext|
|
88
|
+
fringe_keys = [main_keys, %w|fringe_model fringe_view fringe_presenter|].flatten.sort
|
89
|
+
assert_equal fringe_keys, fcontext.keys.sort, "Wrong keys in fringe context"
|
90
|
+
fcontext.within :deep_context do |dcontext|
|
91
|
+
deep_keys = [fringe_keys, %w|krill giant_squid|].flatten.sort
|
92
|
+
assert_equal deep_keys, dcontext.keys.sort
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_constructor_no_hash
|
98
|
+
assert_raise RuntimeError do DIY::Context.new(nil) end
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_constructor_bad_extra_inputs
|
102
|
+
err = assert_raise RuntimeError do
|
103
|
+
DIY::Context.new({}, Object.new)
|
104
|
+
end
|
105
|
+
assert_match(/extra inputs/i, err.message)
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_from_yaml
|
109
|
+
text = File.read(path_to_test_file("dog/simple.yml"))
|
110
|
+
diy = DIY::Context.from_yaml(text)
|
111
|
+
check_dog_objects diy
|
112
|
+
end
|
113
|
+
|
114
|
+
def test_from_yaml_extra_inputs
|
115
|
+
extra = { 'the_cat_lineage' => 'siamese', :some_meat => 'horse' }
|
116
|
+
diy = DIY::Context.from_yaml(File.read(path_to_test_file('cat/needs_input.yml')), extra)
|
117
|
+
cat = diy['cat']
|
118
|
+
assert_equal 'siamese', cat.heritage
|
119
|
+
assert_equal 'horse', cat.food
|
120
|
+
end
|
121
|
+
|
122
|
+
def test_from_file
|
123
|
+
diy = DIY::Context.from_file(path_to_test_file("dog/simple.yml"))
|
124
|
+
check_dog_objects diy
|
125
|
+
end
|
126
|
+
|
127
|
+
def test_from_file_bad
|
128
|
+
assert_raise RuntimeError do
|
129
|
+
DIY::Context.from_file(nil)
|
130
|
+
end
|
131
|
+
assert_raise Errno::ENOENT do
|
132
|
+
DIY::Context.from_file("bad file name")
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
def test_from_file_extra_inputs
|
137
|
+
extra = { 'the_cat_lineage' => 'siamese', :some_meat => 'horse' }
|
138
|
+
diy = DIY::Context.from_file(path_to_test_file('cat/needs_input.yml'), extra)
|
139
|
+
cat = diy['cat']
|
140
|
+
assert_equal 'siamese', cat.heritage
|
141
|
+
assert_equal 'horse', cat.food
|
142
|
+
end
|
143
|
+
|
144
|
+
def test_contains_object
|
145
|
+
load_context "dog/simple.yml"
|
146
|
+
assert @diy.contains_object('dog_presenter'), "Should be true for dog_presenter"
|
147
|
+
assert !@diy.contains_object('woops'), "Should return false for 'woops'"
|
148
|
+
err = assert_raise ArgumentError do
|
149
|
+
@diy.contains_object(nil)
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
def test_contains_object_extra_inputs
|
154
|
+
extra = { 'the_cat_lineage' => 'siamese', :some_meat => 'horse' }
|
155
|
+
main = YAML.load(File.read(path_to_test_file('cat/needs_input.yml')))
|
156
|
+
diy = DIY::Context.new(main, extra)
|
157
|
+
|
158
|
+
assert diy.contains_object('cat')
|
159
|
+
assert diy.contains_object('the_cat_lineage')
|
160
|
+
assert diy.contains_object('some_meat')
|
161
|
+
end
|
162
|
+
|
163
|
+
def test_get_object
|
164
|
+
load_context "dog/simple.yml"
|
165
|
+
assert_not_nil @diy.get_object('file_resolver'), "nil resolver?"
|
166
|
+
assert_raise ArgumentError do
|
167
|
+
@diy.get_object(nil)
|
168
|
+
end
|
169
|
+
assert_raise DIY::ConstructionError do
|
170
|
+
@diy.get_object("no such object")
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
def test_hash_style_access
|
175
|
+
load_context "dog/simple.yml"
|
176
|
+
assert_not_nil @diy['file_resolver'], "nil resolver?"
|
177
|
+
assert_raise ArgumentError do
|
178
|
+
@diy[nil]
|
179
|
+
end
|
180
|
+
assert_raise DIY::ConstructionError do
|
181
|
+
@diy["no such object"]
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
def test_get_object_construction_error
|
186
|
+
load_context "broken_construction.yml"
|
187
|
+
err = assert_raise DIY::ConstructionError do
|
188
|
+
@diy.get_object 'dog_presenter'
|
189
|
+
end
|
190
|
+
assert_match(/dog_presenter/, err.message)
|
191
|
+
end
|
192
|
+
|
193
|
+
def test_context_with_extra_inputs
|
194
|
+
extra = { 'the_cat_lineage' => 'siamese', :some_meat => 'horse' }
|
195
|
+
main = YAML.load(File.read(path_to_test_file('cat/needs_input.yml')))
|
196
|
+
diy = DIY::Context.new(main, extra)
|
197
|
+
cat = diy['cat']
|
198
|
+
assert_equal 'siamese', cat.heritage
|
199
|
+
assert_equal 'horse', cat.food
|
200
|
+
end
|
201
|
+
|
202
|
+
def test_conflicting_extra_inputs
|
203
|
+
extra = { 'the_cat_lineage' => 'siamese', :some_meat => 'horse' }
|
204
|
+
main = YAML.load(File.read(path_to_test_file('cat/extra_conflict.yml')))
|
205
|
+
|
206
|
+
DIY::Context.new(main,extra)
|
207
|
+
flunk "Should have raised err"
|
208
|
+
rescue Exception => err
|
209
|
+
assert_match(/conflict/i, err.message)
|
210
|
+
end
|
211
|
+
|
212
|
+
def test_sub_context
|
213
|
+
load_context 'yak/my_objects.yml'
|
214
|
+
|
215
|
+
core_model = @diy['core_model']
|
216
|
+
assert_not_nil core_model, "no core model in main context?"
|
217
|
+
|
218
|
+
fmodel1 = nil
|
219
|
+
fview1 = nil
|
220
|
+
@diy.within('fringe_context') do |fc|
|
221
|
+
assert_not_nil fc["fringe_presenter"], "no fringe presenter"
|
222
|
+
fmodel1 = fc["fringe_model"]
|
223
|
+
fmodel1a = fc["fringe_model"]
|
224
|
+
assert_same fmodel1, fmodel1a, "Second fring model in fringe_context came out different"
|
225
|
+
assert_not_nil fmodel1, "no fringe_model"
|
226
|
+
fview1 = fc["fringe_view"]
|
227
|
+
assert_not_nil fview1, "no fringe_view"
|
228
|
+
assert_same core_model, fmodel1.connected
|
229
|
+
end
|
230
|
+
|
231
|
+
fmodel2 = nil
|
232
|
+
fview2 = nil
|
233
|
+
@diy.within('fringe_context') do |fc|
|
234
|
+
assert_not_nil fc["fringe_presenter"], "2: no fringe presenter"
|
235
|
+
fmodel2 = fc["fringe_model"]
|
236
|
+
fmodel2a = fc["fringe_model"]
|
237
|
+
assert_same fmodel2, fmodel2a, "Second fringe model in fringe_context came out different"
|
238
|
+
assert_not_nil fmodel2, "2: no fringe_model"
|
239
|
+
fview2 = fc["fringe_view"]
|
240
|
+
assert_not_nil fview2, "2: no fringe_view"
|
241
|
+
assert_same core_model, fmodel2.connected
|
242
|
+
|
243
|
+
assert fmodel1.object_id != fmodel2.object_id, "fringe models 1 and 2 are same!"
|
244
|
+
assert fview1.object_id != fview2.object_id, "fringe views 1 and 2 are same!"
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
248
|
+
def test_sub_sub_context
|
249
|
+
load_context 'yak/sub_sub_context_test.yml'
|
250
|
+
|
251
|
+
core_model = @diy['core_model']
|
252
|
+
assert_not_nil core_model, "no core model in main context?"
|
253
|
+
|
254
|
+
fmodel1 = nil
|
255
|
+
fview1 = nil
|
256
|
+
@diy.within('fringe_context') do |fc|
|
257
|
+
assert_not_nil fc["fringe_presenter"], "no fringe presenter"
|
258
|
+
fmodel1 = fc["fringe_model"]
|
259
|
+
fmodel1a = fc["fringe_model"]
|
260
|
+
assert_same fmodel1, fmodel1a, "Second fring model in fringe_context came out different"
|
261
|
+
assert_not_nil fmodel1, "no fringe_model"
|
262
|
+
fview1 = fc["fringe_view"]
|
263
|
+
assert_not_nil fview1, "no fringe_view"
|
264
|
+
assert_same core_model, fmodel1.connected
|
265
|
+
|
266
|
+
fc.within :deep_context do |dc|
|
267
|
+
krill = dc['krill']
|
268
|
+
assert_not_nil krill, "nil krill"
|
269
|
+
assert_same krill, dc['krill'], "krill was different second time"
|
270
|
+
giant_squid = dc['giant_squid']
|
271
|
+
assert_same fview1, giant_squid.fringe_view, "wrong view in squid"
|
272
|
+
assert_same core_model, giant_squid.core_model, "wrong model in squid"
|
273
|
+
assert_same krill, giant_squid.krill, "wrong krill in squid"
|
274
|
+
end
|
275
|
+
end
|
276
|
+
|
277
|
+
end
|
278
|
+
|
279
|
+
def test_build_everything
|
280
|
+
# Singletons in the goat context will generate test output in their constructors.
|
281
|
+
# We just gotta tell em where:
|
282
|
+
ofile = path_to_test_file('goat/output.tmp')
|
283
|
+
$goat_test_output_file = ofile
|
284
|
+
|
285
|
+
# Reusable setup for this test
|
286
|
+
prep_output = proc do
|
287
|
+
remove ofile if File.exist?(ofile)
|
288
|
+
end
|
289
|
+
|
290
|
+
# Reusable assertion set and cleanup
|
291
|
+
examine_output = proc do
|
292
|
+
# Examine output file for expected construction
|
293
|
+
assert File.exist?(ofile), "no goat output created"
|
294
|
+
lines = File.readlines(ofile).map { |x| x.strip }
|
295
|
+
%w|can paper shirt goat|.each do |object|
|
296
|
+
assert lines.member?("#{object} built"), "Didn't see constructor output for #{object}"
|
297
|
+
end
|
298
|
+
assert_equal 4, lines.size, "wrong number of entries in output file"
|
299
|
+
|
300
|
+
# Make sure the subcontext was not built
|
301
|
+
assert !lines.member?("plane built"), "plane should not have been built -- it's in the subcontext"
|
302
|
+
assert !lines.member?("wings built"), "wings should not have been built -- it's in the subcontext"
|
303
|
+
|
304
|
+
# Check the objects in the context
|
305
|
+
%w|can paper shirt goat|.each do |object|
|
306
|
+
assert_same @diy[object], @diy[object], "Multiple accesses on #{object} yielded different refs"
|
307
|
+
end
|
308
|
+
|
309
|
+
# Try the subcontext
|
310
|
+
@diy.within('the_sub_context') do |tsc|
|
311
|
+
%w|plane wings|.each do |object|
|
312
|
+
assert_same tsc[object], tsc[object], "Multiple accesses on #{object} (in subcontext) yielded different refs"
|
313
|
+
end
|
314
|
+
end
|
315
|
+
# cleanup
|
316
|
+
remove ofile if File.exist?(ofile)
|
317
|
+
end
|
318
|
+
|
319
|
+
# Test all three methods
|
320
|
+
[:build_everything, :build_all, :preinstantiate_singletons].each do |method_name|
|
321
|
+
prep_output.call
|
322
|
+
load_context 'goat/objects.yml'
|
323
|
+
# go
|
324
|
+
@diy.send method_name
|
325
|
+
examine_output.call
|
326
|
+
end
|
327
|
+
ensure
|
328
|
+
# cleanup
|
329
|
+
remove ofile if File.exist?(ofile)
|
330
|
+
end
|
331
|
+
|
332
|
+
# See that the current object factory context can be referenced within the yaml
|
333
|
+
def test_this_context
|
334
|
+
load_context 'horse/objects.yml'
|
335
|
+
|
336
|
+
assert_same @diy, @diy['this_context'], "basic self-reference failed"
|
337
|
+
assert_same @diy, @diy['holder_thing'].thing_held, "composition self-reference failed"
|
338
|
+
end
|
339
|
+
|
340
|
+
def test_this_context_works_for_subcontexts
|
341
|
+
load_context 'horse/objects.yml'
|
342
|
+
|
343
|
+
@diy.within('repeater') do |ctx|
|
344
|
+
assert_same ctx, ctx['this_context'], "self-ref inside a subcontext doesn't work"
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
348
|
+
def test_multiple_classes_in_one_file
|
349
|
+
load_context 'fud/objects.yml'
|
350
|
+
|
351
|
+
toy = @diy['toy']
|
352
|
+
widget = @diy['widget']
|
353
|
+
thing = @diy['thing_ama_jack']
|
354
|
+
trinket = @diy['trinket']
|
355
|
+
|
356
|
+
assert_same widget, toy.widget, "wrong widget in toy"
|
357
|
+
assert_same trinket, toy.trinket, "wrong trinket in toy"
|
358
|
+
assert_same thing, trinket.thing_ama_jack, "wrong thing_ama_jack in trinket"
|
359
|
+
end
|
360
|
+
|
361
|
+
def test_objects_can_be_set_in_a_context_and_diy_will_not_attempt_to_build_it_as_a_dependency
|
362
|
+
load_context 'gnu/objects.yml'
|
363
|
+
|
364
|
+
injected = 'boom'
|
365
|
+
@diy[:injected] = injected
|
366
|
+
thinger = @diy[:thinger]
|
367
|
+
assert_not_nil thinger
|
368
|
+
assert_same injected, thinger.injected
|
369
|
+
assert_same injected, @diy[:injected]
|
370
|
+
|
371
|
+
inner_injected = 'slam'
|
372
|
+
@diy.within :inny do |sub|
|
373
|
+
sub.set_object :inner_injected, inner_injected
|
374
|
+
inner_thinger = sub[:inner_thinger]
|
375
|
+
assert_not_nil inner_thinger
|
376
|
+
assert_same inner_injected, inner_thinger.injected
|
377
|
+
assert_same inner_injected, sub[:inner_injected]
|
378
|
+
end
|
379
|
+
end
|
380
|
+
|
381
|
+
def test_should_not_allow_setting_of_an_object_which_has_already_been_loaded
|
382
|
+
load_context 'gnu/objects.yml'
|
383
|
+
|
384
|
+
injected = 'boom'
|
385
|
+
@diy[:injected] = injected
|
386
|
+
err = assert_raise RuntimeError do
|
387
|
+
@diy[:injected] = injected
|
388
|
+
end
|
389
|
+
assert_match(/object 'injected' already exists/i, err.message)
|
390
|
+
assert_same injected, @diy[:injected]
|
391
|
+
|
392
|
+
thinger = @diy[:thinger]
|
393
|
+
err = assert_raise RuntimeError do
|
394
|
+
@diy[:thinger] = 'sdf'
|
395
|
+
end
|
396
|
+
assert_match(/object 'thinger' already exists/i, err.message)
|
397
|
+
assert_same thinger, @diy[:thinger]
|
398
|
+
end
|
399
|
+
|
400
|
+
def test_should_be_able_to_turn_off_auto_require_for_all_objects
|
401
|
+
DIY::Context.auto_require = false
|
402
|
+
load_context 'horse/objects.yml'
|
403
|
+
|
404
|
+
exception = assert_raise(DIY::ConstructionError) { @diy['holder_thing'] }
|
405
|
+
assert_match(/uninitialized constant/, exception.message)
|
406
|
+
end
|
407
|
+
|
408
|
+
def test_should_cause_non_singletons_to_be_rebuilt_every_time_they_are_accessed
|
409
|
+
load_context 'non_singleton/objects.yml'
|
410
|
+
|
411
|
+
air = @diy['air']
|
412
|
+
assert_not_nil air, "No air"
|
413
|
+
assert_same air, @diy['air'], "Air should be a singleton"
|
414
|
+
|
415
|
+
yard = @diy['yard']
|
416
|
+
assert_not_nil yard, "No yard"
|
417
|
+
assert_same yard, @diy['yard'], "yard should be a singleton"
|
418
|
+
|
419
|
+
pig = @diy['pig']
|
420
|
+
assert_not_nil pig, "No pig"
|
421
|
+
assert_same pig, @diy['pig'], "Pig should be a singleton"
|
422
|
+
|
423
|
+
thread_spinner1 = @diy['thread_spinner']
|
424
|
+
assert_not_nil thread_spinner1, "Couldn't get thread spinner"
|
425
|
+
thread_spinner2 = @diy['thread_spinner']
|
426
|
+
assert_not_nil thread_spinner2, "Couldn't get second thread spinner"
|
427
|
+
assert thread_spinner1.object_id != thread_spinner2.object_id, "Thread spinners should be different instances"
|
428
|
+
thread_spinner3 = pig.thread_spinner
|
429
|
+
assert_not_nil thread_spinner3, "Didn't get a spinner from the pig"
|
430
|
+
assert thread_spinner2.object_id != thread_spinner3.object_id, "Thread spinner from pig should be different instance than the others"
|
431
|
+
assert thread_spinner1.object_id != thread_spinner3.object_id, "Thread spinner from pig should be different instance than the others"
|
432
|
+
|
433
|
+
assert_same air, thread_spinner1.air, "spinner 1 air should be singleton reference"
|
434
|
+
assert_same air, thread_spinner2.air, "spinner 2 air should be singleton reference"
|
435
|
+
assert_same air, thread_spinner3.air, "spinner 3 air should be singleton reference"
|
436
|
+
end
|
437
|
+
|
438
|
+
def test_should_handle_nonsingletons_in_sub_contexts
|
439
|
+
load_context 'non_singleton/objects.yml'
|
440
|
+
|
441
|
+
yard = @diy['yard']
|
442
|
+
assert_not_nil yard, "No yard"
|
443
|
+
assert_same yard, @diy['yard'], "yard should be a singleton"
|
444
|
+
|
445
|
+
thread_spinner1 = @diy['thread_spinner']
|
446
|
+
assert_not_nil thread_spinner1, "Couldn't get thread spinner"
|
447
|
+
|
448
|
+
air = @diy['air']
|
449
|
+
assert_not_nil air, "No air"
|
450
|
+
assert_same air, @diy['air'], "Air should be a singleton"
|
451
|
+
|
452
|
+
@diy.within :inner_sanctum do |sanct|
|
453
|
+
tick1 = sanct['tick']
|
454
|
+
assert_not_nil tick1, "Couldn't get tick1 from inner sanctum"
|
455
|
+
tick2 = sanct['tick']
|
456
|
+
assert_not_nil tick2, "Couldn't get tick2 from inner sanctum"
|
457
|
+
assert tick1.object_id != tick2.object_id, "Tick should not be a singleton"
|
458
|
+
|
459
|
+
cat = sanct['fat_cat']
|
460
|
+
assert_not_nil cat, "Couldn't get cat from sanctum"
|
461
|
+
assert_same cat, sanct['fat_cat'], "Cat SHOULD be singleton"
|
462
|
+
|
463
|
+
tick3 = cat.tick
|
464
|
+
assert_not_nil tick3, "Couldn't get tick from cat"
|
465
|
+
assert tick1.object_id != tick3.object_id, "tick from cat matched an earlier tick; should not be so"
|
466
|
+
|
467
|
+
assert_same yard, cat.yard, "Cat's yard should be same as other yard"
|
468
|
+
assert_not_nil cat.thread_spinner, "No thread spinner in cat?"
|
469
|
+
|
470
|
+
assert_same air, cat.thread_spinner.air, "spinner 1 air should be singleton reference"
|
471
|
+
assert thread_spinner1.object_id != cat.thread_spinner.object_id, "cat's thread spinner matched the other spinner; should not be so"
|
472
|
+
end
|
473
|
+
end
|
474
|
+
|
475
|
+
def test_should_provide_syntax_for_using_namespace
|
476
|
+
# This test exercises single and triple-level namespaces for nested
|
477
|
+
# modules, and their interaction with other namespaced-objects.
|
478
|
+
load_context "namespace/objects.yml"
|
479
|
+
|
480
|
+
%w{road sky cat bird lizard turtle}.each do |obj|
|
481
|
+
assert @diy.contains_object(obj), "Context had no object '#{obj}'"
|
482
|
+
end
|
483
|
+
|
484
|
+
road = @diy['road']
|
485
|
+
sky = @diy['sky']
|
486
|
+
cat = @diy['cat']
|
487
|
+
bird = @diy['bird']
|
488
|
+
lizard = @diy['lizard']
|
489
|
+
turtle = @diy['turtle']
|
490
|
+
|
491
|
+
assert_same road, cat.road, "Cat has wrong Road"
|
492
|
+
assert_same sky, bird.sky, "Bird has wrong Sky"
|
493
|
+
assert_same bird, lizard.bird, "Lizard has wrong Bird"
|
494
|
+
end
|
495
|
+
|
496
|
+
def test_should_combine_a_given_class_name_with_the_namespace
|
497
|
+
load_context "namespace/class_name_combine.yml"
|
498
|
+
assert_not_nil @diy['garfield'], "No garfield"
|
499
|
+
assert_kind_of Animal::Cat, @diy['garfield'], "Garfield wrong"
|
500
|
+
end
|
501
|
+
|
502
|
+
def test_should_let_you_use_namespaces_in_subcontexts
|
503
|
+
load_context "namespace/subcontext.yml"
|
504
|
+
@diy.build_everything
|
505
|
+
%w{road sky cat turtle}.each do |obj|
|
506
|
+
assert @diy.contains_object(obj), "Main context had no object '#{obj}'"
|
507
|
+
end
|
508
|
+
sky = @diy['sky']
|
509
|
+
|
510
|
+
@diy.within("aviary") do |subc|
|
511
|
+
assert subc.contains_object("bird"), "Sub context didn't have 'bird'"
|
512
|
+
assert subc.contains_object("lizard"), "Sub context didn't have 'lizard'"
|
513
|
+
bird = subc['bird']
|
514
|
+
lizard = subc['lizard']
|
515
|
+
assert_same sky, bird.sky, "Bird has wrong Sky"
|
516
|
+
assert_same bird, lizard.bird, "Lizard has wrong Bird"
|
517
|
+
end
|
518
|
+
end
|
519
|
+
|
520
|
+
def test_should_raise_for_namespace_w_no_modules_named
|
521
|
+
ex = assert_raises DIY::NamespaceError do
|
522
|
+
load_context "namespace/no_module_specified.yml"
|
523
|
+
end
|
524
|
+
assert_equal "Namespace needs to indicate a module", ex.message
|
525
|
+
end
|
526
|
+
|
527
|
+
def test_should_raise_for_namespace_whose_modules_dont_exist
|
528
|
+
load_context "namespace/bad_module_specified.yml"
|
529
|
+
ex = assert_raises DIY::ConstructionError do
|
530
|
+
@diy['bird']
|
531
|
+
end
|
532
|
+
assert_match(/failed to construct/i, ex.message)
|
533
|
+
assert_match(/no such file to load -- fuzzy_creature\/bird/, ex.message)
|
534
|
+
end
|
535
|
+
|
536
|
+
def test_should_be_able_define_and_access_bounded_methods
|
537
|
+
load_context "functions/objects.yml"
|
538
|
+
@diy.build_everything
|
539
|
+
build_thing = @diy['build_thing']
|
540
|
+
|
541
|
+
assert_not_nil build_thing, "should not be nil"
|
542
|
+
assert_kind_of(Method, build_thing)
|
543
|
+
assert_same(build_thing, @diy['build_thing'])
|
544
|
+
end
|
545
|
+
|
546
|
+
def test_bounded_method_can_be_used
|
547
|
+
load_context "functions/objects.yml"
|
548
|
+
@diy.build_everything
|
549
|
+
build_thing = @diy['build_thing']
|
550
|
+
|
551
|
+
thing = build_thing["the name", "flying"]
|
552
|
+
|
553
|
+
assert_equal("the name", thing.name)
|
554
|
+
assert_equal("flying", thing.ability)
|
555
|
+
end
|
556
|
+
|
557
|
+
def test_building_bounded_method_uses_object_in_diy_context_correctly
|
558
|
+
load_context "functions/objects.yml"
|
559
|
+
@diy.build_everything
|
560
|
+
assert_equal(@diy['build_thing'], @diy['thing_builder'].method(:build))
|
561
|
+
|
562
|
+
load_context "functions/nonsingleton_objects.yml"
|
563
|
+
@diy.build_everything
|
564
|
+
assert_not_equal(@diy['build_thing'], @diy['thing_builder'].method(:build))
|
565
|
+
end
|
566
|
+
|
567
|
+
def test_composing_bounded_methods_into_other_objects
|
568
|
+
load_context "functions/objects.yml"
|
569
|
+
@diy.build_everything
|
570
|
+
assert_same(@diy['build_thing'], @diy['things_builder'].build_thing)
|
571
|
+
end
|
572
|
+
|
573
|
+
def test_raises_construction_error_if_invalid_method_specified
|
574
|
+
load_context "functions/invalid_method.yml"
|
575
|
+
assert_raises DIY::ConstructionError do
|
576
|
+
@diy.build_everything
|
577
|
+
end
|
578
|
+
end
|
579
|
+
|
580
|
+
#
|
581
|
+
# HELPERS
|
582
|
+
#
|
583
|
+
def path_to_test_file(fname)
|
584
|
+
path_to("/files/#{fname}")
|
585
|
+
end
|
586
|
+
|
587
|
+
def load_context(file_name)
|
588
|
+
hash = YAML.load(File.read(path_to_test_file(file_name)))
|
589
|
+
load_hash(hash)
|
590
|
+
end
|
591
|
+
|
592
|
+
def load_hash(hash)
|
593
|
+
@diy = DIY::Context.new(hash)
|
594
|
+
end
|
595
|
+
|
596
|
+
def check_dog_objects(context)
|
597
|
+
assert_not_nil context, "nil context"
|
598
|
+
names = %w|dog_presenter dog_model dog_view file_resolver|
|
599
|
+
names.each do |n|
|
600
|
+
assert context.contains_object(n), "Context had no object '#{n}'"
|
601
|
+
end
|
602
|
+
end
|
603
|
+
|
604
|
+
end
|