ffi 1.0.9-x86-mingw32 → 1.0.12.pre-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of ffi might be problematic. Click here for more details.

Files changed (218) hide show
  1. data/Rakefile +16 -16
  2. data/ext/ffi_c/AbstractMemory.c +376 -14
  3. data/ext/ffi_c/AbstractMemory.h +8 -0
  4. data/ext/ffi_c/ArrayType.c +28 -0
  5. data/ext/ffi_c/Buffer.c +109 -25
  6. data/ext/ffi_c/Call.c +16 -5
  7. data/ext/ffi_c/ClosurePool.c +21 -8
  8. data/ext/ffi_c/DataConverter.c +29 -0
  9. data/ext/ffi_c/DynamicLibrary.c +71 -2
  10. data/ext/ffi_c/Function.c +122 -11
  11. data/ext/ffi_c/Function.h +6 -0
  12. data/ext/ffi_c/FunctionInfo.c +21 -1
  13. data/ext/ffi_c/LastError.c +24 -0
  14. data/ext/ffi_c/MappedType.c +22 -0
  15. data/ext/ffi_c/MemoryPointer.c +19 -1
  16. data/ext/ffi_c/MemoryPointer.h +6 -0
  17. data/ext/ffi_c/MethodHandle.c +26 -11
  18. data/ext/ffi_c/Platform.c +17 -3
  19. data/ext/ffi_c/Pointer.c +106 -0
  20. data/ext/ffi_c/Pointer.h +6 -0
  21. data/ext/ffi_c/Struct.c +10 -4
  22. data/ext/ffi_c/Struct.h +2 -1
  23. data/ext/ffi_c/StructByReference.c +8 -0
  24. data/ext/ffi_c/StructByValue.c +8 -0
  25. data/ext/ffi_c/StructLayout.c +8 -2
  26. data/ext/ffi_c/Thread.c +131 -1
  27. data/ext/ffi_c/Thread.h +6 -0
  28. data/ext/ffi_c/Type.c +111 -17
  29. data/ext/ffi_c/Types.c +9 -2
  30. data/ext/ffi_c/Types.h +4 -0
  31. data/ext/ffi_c/Variadic.c +13 -4
  32. data/ext/ffi_c/compat.h +8 -0
  33. data/ext/ffi_c/endian.h +10 -1
  34. data/ext/ffi_c/extconf.rb +51 -35
  35. data/ext/ffi_c/ffi.c +5 -0
  36. data/ext/ffi_c/libffi.darwin.mk +15 -15
  37. data/ext/ffi_c/libffi.gnu.mk +3 -3
  38. data/ext/ffi_c/libffi.mk +4 -4
  39. data/ext/ffi_c/libffi.vc.mk +26 -0
  40. data/ext/ffi_c/libffi.vc64.mk +26 -0
  41. data/ext/ffi_c/libffi/ChangeLog +541 -0
  42. data/ext/ffi_c/libffi/ChangeLog.libffi +13 -87
  43. data/ext/ffi_c/libffi/LICENSE +3 -3
  44. data/ext/ffi_c/libffi/Makefile.am +41 -32
  45. data/ext/ffi_c/libffi/Makefile.in +95 -66
  46. data/ext/ffi_c/libffi/Makefile.vc +141 -0
  47. data/ext/ffi_c/libffi/Makefile.vc64 +141 -0
  48. data/ext/ffi_c/libffi/README +40 -4
  49. data/ext/ffi_c/libffi/aclocal.m4 +729 -7854
  50. data/ext/ffi_c/libffi/build-ios.sh +67 -0
  51. data/ext/ffi_c/libffi/compile +11 -10
  52. data/ext/ffi_c/libffi/config.guess +4 -1
  53. data/ext/ffi_c/libffi/config.sub +6 -3
  54. data/ext/ffi_c/libffi/configure +6264 -6354
  55. data/ext/ffi_c/libffi/configure.ac +155 -63
  56. data/ext/ffi_c/libffi/depcomp +81 -35
  57. data/ext/ffi_c/libffi/doc/libffi.info +78 -18
  58. data/ext/ffi_c/libffi/doc/libffi.texi +64 -5
  59. data/ext/ffi_c/libffi/doc/stamp-vti +4 -4
  60. data/ext/ffi_c/libffi/doc/version.texi +4 -4
  61. data/ext/ffi_c/libffi/fficonfig.h.in +18 -0
  62. data/ext/ffi_c/libffi/fficonfig.hw +57 -0
  63. data/ext/ffi_c/libffi/include/Makefile.in +21 -3
  64. data/ext/ffi_c/libffi/include/ffi.h.in +42 -14
  65. data/ext/ffi_c/libffi/include/ffi.h.vc +427 -0
  66. data/ext/ffi_c/libffi/include/ffi.h.vc64 +427 -0
  67. data/ext/ffi_c/libffi/include/ffi_common.h +9 -5
  68. data/ext/ffi_c/libffi/install-sh +364 -167
  69. data/ext/ffi_c/libffi/ltmain.sh +2599 -1369
  70. data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +176 -0
  71. data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +195 -0
  72. data/ext/ffi_c/libffi/m4/ax_check_compiler_flags.m4 +76 -0
  73. data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +63 -0
  74. data/ext/ffi_c/libffi/m4/ax_configure_args.m4 +70 -0
  75. data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +300 -0
  76. data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +215 -0
  77. data/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 +79 -0
  78. data/ext/ffi_c/libffi/m4/libtool.m4 +1239 -768
  79. data/ext/ffi_c/libffi/m4/ltoptions.m4 +7 -6
  80. data/ext/ffi_c/libffi/m4/ltversion.m4 +6 -6
  81. data/ext/ffi_c/libffi/m4/lt~obsolete.m4 +9 -3
  82. data/ext/ffi_c/libffi/man/Makefile.in +21 -3
  83. data/ext/ffi_c/libffi/mdate-sh +0 -0
  84. data/ext/ffi_c/libffi/missing +60 -44
  85. data/ext/ffi_c/libffi/msvcc.sh +197 -0
  86. data/ext/ffi_c/libffi/src/alpha/osf.S +39 -18
  87. data/ext/ffi_c/libffi/src/arm/ffi.c +443 -24
  88. data/ext/ffi_c/libffi/src/arm/ffitarget.h +17 -1
  89. data/ext/ffi_c/libffi/src/arm/gentramp.sh +118 -0
  90. data/ext/ffi_c/libffi/src/arm/sysv.S +206 -15
  91. data/ext/ffi_c/libffi/src/arm/trampoline.S +4450 -0
  92. data/ext/ffi_c/libffi/src/avr32/ffi.c +4 -2
  93. data/ext/ffi_c/libffi/src/avr32/ffitarget.h +2 -2
  94. data/ext/ffi_c/libffi/src/closures.c +17 -35
  95. data/ext/ffi_c/libffi/src/cris/ffi.c +1 -1
  96. data/ext/ffi_c/libffi/src/cris/ffitarget.h +2 -2
  97. data/ext/ffi_c/libffi/src/dlmalloc.c +66 -4
  98. data/ext/ffi_c/libffi/src/frv/ffitarget.h +2 -6
  99. data/ext/ffi_c/libffi/src/ia64/ffi.c +7 -5
  100. data/ext/ffi_c/libffi/src/ia64/ffitarget.h +2 -2
  101. data/ext/ffi_c/libffi/src/java_raw_api.c +1 -1
  102. data/ext/ffi_c/libffi/src/m32r/ffitarget.h +2 -2
  103. data/ext/ffi_c/libffi/src/m68k/ffi.c +10 -0
  104. data/ext/ffi_c/libffi/src/m68k/ffitarget.h +2 -2
  105. data/ext/ffi_c/libffi/src/m68k/sysv.S +36 -0
  106. data/ext/ffi_c/libffi/src/mips/ffi.c +12 -5
  107. data/ext/ffi_c/libffi/src/mips/ffitarget.h +18 -11
  108. data/ext/ffi_c/libffi/src/mips/n32.S +4 -4
  109. data/ext/ffi_c/libffi/src/moxie/eabi.S +128 -0
  110. data/ext/ffi_c/libffi/src/moxie/ffi.c +276 -0
  111. data/ext/ffi_c/libffi/src/pa/ffi.c +7 -4
  112. data/ext/ffi_c/libffi/src/pa/ffitarget.h +6 -5
  113. data/ext/ffi_c/libffi/src/powerpc/aix.S +5 -1
  114. data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +2 -0
  115. data/ext/ffi_c/libffi/src/powerpc/asm.h +1 -1
  116. data/ext/ffi_c/libffi/src/powerpc/darwin.S +215 -77
  117. data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +358 -100
  118. data/ext/ffi_c/libffi/src/powerpc/ffi.c +11 -5
  119. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +603 -172
  120. data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +17 -4
  121. data/ext/ffi_c/libffi/src/prep_cif.c +16 -13
  122. data/ext/ffi_c/libffi/src/s390/ffitarget.h +4 -2
  123. data/ext/ffi_c/libffi/src/sh/ffitarget.h +2 -2
  124. data/ext/ffi_c/libffi/src/sh64/ffitarget.h +2 -2
  125. data/ext/ffi_c/libffi/src/sparc/ffi.c +55 -11
  126. data/ext/ffi_c/libffi/src/sparc/ffitarget.h +5 -3
  127. data/ext/ffi_c/libffi/src/x86/ffi.c +54 -92
  128. data/ext/ffi_c/libffi/src/x86/ffi64.c +17 -8
  129. data/ext/ffi_c/libffi/src/x86/ffitarget.h +15 -14
  130. data/ext/ffi_c/libffi/src/x86/sysv.S +40 -26
  131. data/ext/ffi_c/libffi/src/x86/unix64.S +4 -0
  132. data/ext/ffi_c/libffi/src/x86/win32.S +379 -191
  133. data/ext/ffi_c/libffi/src/x86/win64.S +15 -7
  134. data/ext/ffi_c/libffi/testsuite/Makefile.am +1 -1
  135. data/ext/ffi_c/libffi/testsuite/Makefile.in +22 -4
  136. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +350 -0
  137. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +1 -5
  138. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c +1 -1
  139. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c +1 -1
  140. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +1 -0
  141. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +1 -0
  142. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c +3 -0
  143. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c +2 -2
  144. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c +3 -0
  145. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c +1 -1
  146. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c +1 -1
  147. data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +1 -0
  148. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_abi.c +2 -3
  149. data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +2 -1
  150. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +36 -0
  151. data/ext/ffi_c/libffi/testsuite/libffi.call/huge_struct.c +17 -17
  152. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +1 -0
  153. data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c +1 -0
  154. data/ext/ffi_c/libffi/testsuite/libffi.special/ffitestcxx.h +1 -1
  155. data/ext/ffi_c/libffi/testsuite/libffi.special/special.exp +1 -3
  156. data/ext/ffi_c/win32/stdint.h +199 -0
  157. data/gen/Rakefile +18 -2
  158. data/lib/1.8/ffi_c.so +0 -0
  159. data/lib/ffi.rb +13 -9
  160. data/lib/ffi/autopointer.rb +88 -26
  161. data/lib/ffi/enum.rb +42 -0
  162. data/lib/ffi/errno.rb +6 -1
  163. data/lib/ffi/ffi.rb +1 -0
  164. data/lib/ffi/io.rb +13 -2
  165. data/lib/ffi/library.rb +219 -24
  166. data/lib/ffi/memorypointer.rb +1 -33
  167. data/lib/ffi/platform.rb +21 -7
  168. data/lib/ffi/platform/arm-linux/types.conf +102 -0
  169. data/lib/ffi/platform/i386-freebsd/types.conf +152 -0
  170. data/lib/ffi/platform/i386-netbsd/types.conf +126 -0
  171. data/lib/ffi/platform/i486-gnu/types.conf +107 -0
  172. data/lib/ffi/platform/ia64-linux/types.conf +102 -0
  173. data/lib/ffi/platform/mips-linux/types.conf +102 -0
  174. data/lib/ffi/platform/mipsel-linux/types.conf +102 -0
  175. data/lib/ffi/platform/powerpc-linux/types.conf +100 -0
  176. data/lib/ffi/platform/s390-linux/types.conf +102 -0
  177. data/lib/ffi/platform/s390x-linux/types.conf +102 -0
  178. data/lib/ffi/platform/sparc-linux/types.conf +102 -0
  179. data/lib/ffi/platform/x86_64-freebsd/types.conf +126 -0
  180. data/lib/ffi/platform/x86_64-netbsd/types.conf +126 -0
  181. data/lib/ffi/pointer.rb +44 -0
  182. data/lib/ffi/struct.rb +2 -6
  183. data/lib/ffi/struct_layout_builder.rb +2 -1
  184. data/lib/ffi/tools/const_generator.rb +78 -26
  185. data/lib/ffi/tools/types_generator.rb +8 -1
  186. data/lib/ffi/types.rb +21 -1
  187. data/spec/ffi/async_callback_spec.rb +2 -2
  188. data/spec/ffi/bool_spec.rb +6 -6
  189. data/spec/ffi/buffer_spec.rb +23 -23
  190. data/spec/ffi/callback_spec.rb +101 -102
  191. data/spec/ffi/custom_type_spec.rb +20 -24
  192. data/spec/ffi/dup_spec.rb +7 -7
  193. data/spec/ffi/enum_spec.rb +127 -127
  194. data/spec/ffi/errno_spec.rb +2 -2
  195. data/spec/ffi/ffi_spec.rb +3 -3
  196. data/spec/ffi/function_spec.rb +10 -10
  197. data/spec/ffi/library_spec.rb +30 -12
  198. data/spec/ffi/managed_struct_spec.rb +4 -4
  199. data/spec/ffi/number_spec.rb +40 -40
  200. data/spec/ffi/pointer_spec.rb +21 -24
  201. data/spec/ffi/rbx/memory_pointer_spec.rb +17 -15
  202. data/spec/ffi/rbx/struct_spec.rb +2 -2
  203. data/spec/ffi/spec_helper.rb +1 -1
  204. data/spec/ffi/string_spec.rb +9 -9
  205. data/spec/ffi/strptr_spec.rb +3 -3
  206. data/spec/ffi/struct_callback_spec.rb +7 -7
  207. data/spec/ffi/struct_initialize_spec.rb +2 -2
  208. data/spec/ffi/struct_packed_spec.rb +6 -6
  209. data/spec/ffi/struct_spec.rb +94 -84
  210. data/spec/ffi/typedef_spec.rb +15 -4
  211. data/spec/ffi/union_spec.rb +3 -3
  212. data/spec/ffi/variadic_spec.rb +17 -14
  213. data/tasks/extension.rake +0 -1
  214. data/tasks/gem.rake +0 -1
  215. data/tasks/rdoc.rake +1 -1
  216. data/tasks/yard.rake +11 -0
  217. metadata +50 -11
  218. data/lib/1.9/ffi_c.so +0 -0
@@ -17,37 +17,33 @@
17
17
  require File.expand_path(File.join(File.dirname(__FILE__), "spec_helper"))
18
18
 
19
19
  describe "functions with custom types" do
20
- before :each do
21
-
22
- Custom_enum = Class.new do
23
- extend FFI::DataConverter
24
- ToNativeMap= { :a => 1, :b => 2, :c => 3 }
25
- FromNativeMap = { 1 => :a, 2 => :b, 3 => :c }
20
+ class Custom_enum
21
+ extend FFI::DataConverter
22
+ ToNativeMap= { :a => 1, :b => 2, :c => 3 }
23
+ FromNativeMap = { 1 => :a, 2 => :b, 3 => :c }
26
24
 
27
- def self.native_type
28
- @native_type_called = true
29
- FFI::Type::INT32
30
- end
31
-
32
- def self.to_native(val, ctx)
33
- @to_native_called = true
34
- ToNativeMap[val]
35
- end
25
+ def self.native_type
26
+ @native_type_called = true
27
+ FFI::Type::INT32
28
+ end
36
29
 
37
- def self.from_native(val, ctx)
38
- @from_native_called = true
39
- FromNativeMap[val]
40
- end
41
- def self.native_type_called?; @native_type_called; end
42
- def self.from_native_called?; @from_native_called; end
43
- def self.to_native_called?; @to_native_called; end
30
+ def self.to_native(val, ctx)
31
+ @to_native_called = true
32
+ ToNativeMap[val]
44
33
  end
45
34
 
35
+ def self.from_native(val, ctx)
36
+ @from_native_called = true
37
+ FromNativeMap[val]
38
+ end
39
+ def self.native_type_called?; @native_type_called; end
40
+ def self.from_native_called?; @from_native_called; end
41
+ def self.to_native_called?; @to_native_called; end
46
42
  end
47
43
 
48
44
  it "can attach with custom return type" do
49
45
  lambda do
50
- m = Module.new do
46
+ Module.new do
51
47
  extend FFI::Library
52
48
  ffi_lib TestLibrary::PATH
53
49
  attach_function :ret_s32, [ :int ], Custom_enum
@@ -86,4 +82,4 @@ describe "functions with custom types" do
86
82
  m.ret_s32(:a)
87
83
  Custom_enum.to_native_called?.should be_true
88
84
  end
89
- end
85
+ end
@@ -24,7 +24,7 @@ describe "Pointer#dup" do
24
24
  p2 = p1.dup
25
25
  p1.put_string(0, "deadbeef")
26
26
 
27
- p2.get_string(0).should == "test123"
27
+ p2.get_string(0).should eq "test123"
28
28
  end
29
29
 
30
30
  it "sliced pointer can be cloned" do
@@ -33,8 +33,8 @@ describe "Pointer#dup" do
33
33
  p2 = p1[1].dup
34
34
 
35
35
  # first char will be excised
36
- p2.get_string(0).should == "est123"
37
- p1.get_string(0).should == "test123"
36
+ p2.get_string(0).should eq "est123"
37
+ p1.get_string(0).should eq "test123"
38
38
  end
39
39
 
40
40
  it "sliced pointer when cloned is independent" do
@@ -44,7 +44,7 @@ describe "Pointer#dup" do
44
44
 
45
45
  p1.put_string(0, "deadbeef")
46
46
  # first char will be excised
47
- p2.get_string(0).should == "est123"
47
+ p2.get_string(0).should eq "est123"
48
48
  end
49
49
  end
50
50
 
@@ -58,8 +58,8 @@ describe "Struct#dup" do
58
58
  s1[:i] = 0x12345
59
59
  s2 = s1.dup
60
60
  s1[:i] = 0x98765
61
- s2[:i].should == 0x12345
62
- s1[:i].should == 0x98765
61
+ s2[:i].should eq 0x12345
62
+ s1[:i].should eq 0x98765
63
63
  end
64
64
 
65
- end
65
+ end
@@ -49,179 +49,179 @@ end
49
49
 
50
50
  describe "A library with no enum defined" do
51
51
  it "returns nil when asked for an enum" do
52
- TestEnum0.enum_type(:foo).should == nil
52
+ TestEnum0.enum_type(:foo).should eq nil
53
53
  end
54
54
  end
55
55
 
56
56
  describe "An untagged enum" do
57
57
  it "constants can be used as function parameters and return value" do
58
- TestEnum1.test_untagged_enum(:c1).should == 0
59
- TestEnum1.test_untagged_enum(:c2).should == 1
60
- TestEnum1.test_untagged_enum(:c3).should == 2
61
- TestEnum1.test_untagged_enum(:c4).should == 3
62
- TestEnum1.test_untagged_enum(:c5).should == 42
63
- TestEnum1.test_untagged_enum(:c6).should == 43
64
- TestEnum1.test_untagged_enum(:c7).should == 44
65
- TestEnum1.test_untagged_enum(:c8).should == 45
66
- TestEnum1.test_untagged_enum(:c9).should == 42
67
- TestEnum1.test_untagged_enum(:c10).should == 43
68
- TestEnum1.test_untagged_enum(:c11).should == 4242
69
- TestEnum1.test_untagged_enum(:c12).should == 4243
70
- TestEnum1.test_untagged_enum(:c13).should == 42
71
- TestEnum1.test_untagged_enum(:c14).should == 4242
72
- TestEnum1.test_untagged_enum(:c15).should == 424242
73
- TestEnum1.test_untagged_enum(:c16).should == 42424242
58
+ TestEnum1.test_untagged_enum(:c1).should eq 0
59
+ TestEnum1.test_untagged_enum(:c2).should eq 1
60
+ TestEnum1.test_untagged_enum(:c3).should eq 2
61
+ TestEnum1.test_untagged_enum(:c4).should eq 3
62
+ TestEnum1.test_untagged_enum(:c5).should eq 42
63
+ TestEnum1.test_untagged_enum(:c6).should eq 43
64
+ TestEnum1.test_untagged_enum(:c7).should eq 44
65
+ TestEnum1.test_untagged_enum(:c8).should eq 45
66
+ TestEnum1.test_untagged_enum(:c9).should eq 42
67
+ TestEnum1.test_untagged_enum(:c10).should eq 43
68
+ TestEnum1.test_untagged_enum(:c11).should eq 4242
69
+ TestEnum1.test_untagged_enum(:c12).should eq 4243
70
+ TestEnum1.test_untagged_enum(:c13).should eq 42
71
+ TestEnum1.test_untagged_enum(:c14).should eq 4242
72
+ TestEnum1.test_untagged_enum(:c15).should eq 424242
73
+ TestEnum1.test_untagged_enum(:c16).should eq 42424242
74
74
  end
75
75
  end
76
76
 
77
77
  describe "A tagged typedef enum" do
78
78
  it "is accessible through its tag" do
79
- TestEnum3.enum_type(:enum_type1).should_not == nil
80
- TestEnum3.enum_type(:enum_type2).should_not == nil
81
- TestEnum3.enum_type(:enum_type3).should_not == nil
82
- TestEnum3.enum_type(:enum_type4).should_not == nil
79
+ TestEnum3.enum_type(:enum_type1).should_not eq nil
80
+ TestEnum3.enum_type(:enum_type2).should_not eq nil
81
+ TestEnum3.enum_type(:enum_type3).should_not eq nil
82
+ TestEnum3.enum_type(:enum_type4).should_not eq nil
83
83
  end
84
84
  it "contains enum constants" do
85
- TestEnum3.enum_type(:enum_type1).symbols.length.should == 4
86
- TestEnum3.enum_type(:enum_type2).symbols.length.should == 4
87
- TestEnum3.enum_type(:enum_type3).symbols.length.should == 4
88
- TestEnum3.enum_type(:enum_type4).symbols.length.should == 4
85
+ TestEnum3.enum_type(:enum_type1).symbols.length.should eq 4
86
+ TestEnum3.enum_type(:enum_type2).symbols.length.should eq 4
87
+ TestEnum3.enum_type(:enum_type3).symbols.length.should eq 4
88
+ TestEnum3.enum_type(:enum_type4).symbols.length.should eq 4
89
89
  end
90
90
  it "constants can be used as function parameters and return value" do
91
- TestEnum3.test_tagged_typedef_enum1(:c1).should == :c1
92
- TestEnum3.test_tagged_typedef_enum1(:c2).should == :c2
93
- TestEnum3.test_tagged_typedef_enum1(:c3).should == :c3
94
- TestEnum3.test_tagged_typedef_enum1(:c4).should == :c4
95
- TestEnum3.test_tagged_typedef_enum2(:c5).should == :c5
96
- TestEnum3.test_tagged_typedef_enum2(:c6).should == :c6
97
- TestEnum3.test_tagged_typedef_enum2(:c7).should == :c7
98
- TestEnum3.test_tagged_typedef_enum2(:c8).should == :c8
99
- TestEnum3.test_tagged_typedef_enum3(:c9).should == :c9
100
- TestEnum3.test_tagged_typedef_enum3(:c10).should == :c10
101
- TestEnum3.test_tagged_typedef_enum3(:c11).should == :c11
102
- TestEnum3.test_tagged_typedef_enum3(:c12).should == :c12
103
- TestEnum3.test_tagged_typedef_enum4(:c13).should == :c13
104
- TestEnum3.test_tagged_typedef_enum4(:c14).should == :c14
105
- TestEnum3.test_tagged_typedef_enum4(:c15).should == :c15
106
- TestEnum3.test_tagged_typedef_enum4(:c16).should == :c16
91
+ TestEnum3.test_tagged_typedef_enum1(:c1).should eq :c1
92
+ TestEnum3.test_tagged_typedef_enum1(:c2).should eq :c2
93
+ TestEnum3.test_tagged_typedef_enum1(:c3).should eq :c3
94
+ TestEnum3.test_tagged_typedef_enum1(:c4).should eq :c4
95
+ TestEnum3.test_tagged_typedef_enum2(:c5).should eq :c5
96
+ TestEnum3.test_tagged_typedef_enum2(:c6).should eq :c6
97
+ TestEnum3.test_tagged_typedef_enum2(:c7).should eq :c7
98
+ TestEnum3.test_tagged_typedef_enum2(:c8).should eq :c8
99
+ TestEnum3.test_tagged_typedef_enum3(:c9).should eq :c9
100
+ TestEnum3.test_tagged_typedef_enum3(:c10).should eq :c10
101
+ TestEnum3.test_tagged_typedef_enum3(:c11).should eq :c11
102
+ TestEnum3.test_tagged_typedef_enum3(:c12).should eq :c12
103
+ TestEnum3.test_tagged_typedef_enum4(:c13).should eq :c13
104
+ TestEnum3.test_tagged_typedef_enum4(:c14).should eq :c14
105
+ TestEnum3.test_tagged_typedef_enum4(:c15).should eq :c15
106
+ TestEnum3.test_tagged_typedef_enum4(:c16).should eq :c16
107
107
  end
108
108
 
109
109
  it "integers can be used instead of constants" do
110
- TestEnum3.test_tagged_typedef_enum1(0).should == :c1
111
- TestEnum3.test_tagged_typedef_enum1(1).should == :c2
112
- TestEnum3.test_tagged_typedef_enum1(2).should == :c3
113
- TestEnum3.test_tagged_typedef_enum1(3).should == :c4
114
- TestEnum3.test_tagged_typedef_enum2(42).should == :c5
115
- TestEnum3.test_tagged_typedef_enum2(43).should == :c6
116
- TestEnum3.test_tagged_typedef_enum2(44).should == :c7
117
- TestEnum3.test_tagged_typedef_enum2(45).should == :c8
118
- TestEnum3.test_tagged_typedef_enum3(42).should == :c9
119
- TestEnum3.test_tagged_typedef_enum3(43).should == :c10
120
- TestEnum3.test_tagged_typedef_enum3(4242).should == :c11
121
- TestEnum3.test_tagged_typedef_enum3(4243).should == :c12
122
- TestEnum3.test_tagged_typedef_enum4(42).should == :c13
123
- TestEnum3.test_tagged_typedef_enum4(4242).should == :c14
124
- TestEnum3.test_tagged_typedef_enum4(424242).should == :c15
125
- TestEnum3.test_tagged_typedef_enum4(42424242).should == :c16
110
+ TestEnum3.test_tagged_typedef_enum1(0).should eq :c1
111
+ TestEnum3.test_tagged_typedef_enum1(1).should eq :c2
112
+ TestEnum3.test_tagged_typedef_enum1(2).should eq :c3
113
+ TestEnum3.test_tagged_typedef_enum1(3).should eq :c4
114
+ TestEnum3.test_tagged_typedef_enum2(42).should eq :c5
115
+ TestEnum3.test_tagged_typedef_enum2(43).should eq :c6
116
+ TestEnum3.test_tagged_typedef_enum2(44).should eq :c7
117
+ TestEnum3.test_tagged_typedef_enum2(45).should eq :c8
118
+ TestEnum3.test_tagged_typedef_enum3(42).should eq :c9
119
+ TestEnum3.test_tagged_typedef_enum3(43).should eq :c10
120
+ TestEnum3.test_tagged_typedef_enum3(4242).should eq :c11
121
+ TestEnum3.test_tagged_typedef_enum3(4243).should eq :c12
122
+ TestEnum3.test_tagged_typedef_enum4(42).should eq :c13
123
+ TestEnum3.test_tagged_typedef_enum4(4242).should eq :c14
124
+ TestEnum3.test_tagged_typedef_enum4(424242).should eq :c15
125
+ TestEnum3.test_tagged_typedef_enum4(42424242).should eq :c16
126
126
  end
127
127
  end
128
128
 
129
129
  describe "All enums" do
130
130
  it "have autonumbered constants when defined with names only" do
131
- TestEnum1.enum_value(:c1).should == 0
132
- TestEnum1.enum_value(:c2).should == 1
133
- TestEnum1.enum_value(:c3).should == 2
134
- TestEnum1.enum_value(:c4).should == 3
135
-
136
- TestEnum3.enum_value(:c1).should == 0
137
- TestEnum3.enum_value(:c2).should == 1
138
- TestEnum3.enum_value(:c3).should == 2
139
- TestEnum3.enum_value(:c4).should == 3
131
+ TestEnum1.enum_value(:c1).should eq 0
132
+ TestEnum1.enum_value(:c2).should eq 1
133
+ TestEnum1.enum_value(:c3).should eq 2
134
+ TestEnum1.enum_value(:c4).should eq 3
135
+
136
+ TestEnum3.enum_value(:c1).should eq 0
137
+ TestEnum3.enum_value(:c2).should eq 1
138
+ TestEnum3.enum_value(:c3).should eq 2
139
+ TestEnum3.enum_value(:c4).should eq 3
140
140
  end
141
141
  it "can have an explicit first constant and autonumbered subsequent constants" do
142
- TestEnum1.enum_value(:c5).should == 42
143
- TestEnum1.enum_value(:c6).should == 43
144
- TestEnum1.enum_value(:c7).should == 44
145
- TestEnum1.enum_value(:c8).should == 45
146
-
147
- TestEnum3.enum_value(:c5).should == 42
148
- TestEnum3.enum_value(:c6).should == 43
149
- TestEnum3.enum_value(:c7).should == 44
150
- TestEnum3.enum_value(:c8).should == 45
142
+ TestEnum1.enum_value(:c5).should eq 42
143
+ TestEnum1.enum_value(:c6).should eq 43
144
+ TestEnum1.enum_value(:c7).should eq 44
145
+ TestEnum1.enum_value(:c8).should eq 45
146
+
147
+ TestEnum3.enum_value(:c5).should eq 42
148
+ TestEnum3.enum_value(:c6).should eq 43
149
+ TestEnum3.enum_value(:c7).should eq 44
150
+ TestEnum3.enum_value(:c8).should eq 45
151
151
  end
152
152
  it "can have a mix of explicit and autonumbered constants" do
153
- TestEnum1.enum_value(:c9).should == 42
154
- TestEnum1.enum_value(:c10).should == 43
155
- TestEnum1.enum_value(:c11).should == 4242
156
- TestEnum1.enum_value(:c12).should == 4243
157
-
158
- TestEnum3.enum_value(:c9).should == 42
159
- TestEnum3.enum_value(:c10).should == 43
160
- TestEnum3.enum_value(:c11).should == 4242
161
- TestEnum3.enum_value(:c12).should == 4243
153
+ TestEnum1.enum_value(:c9).should eq 42
154
+ TestEnum1.enum_value(:c10).should eq 43
155
+ TestEnum1.enum_value(:c11).should eq 4242
156
+ TestEnum1.enum_value(:c12).should eq 4243
157
+
158
+ TestEnum3.enum_value(:c9).should eq 42
159
+ TestEnum3.enum_value(:c10).should eq 43
160
+ TestEnum3.enum_value(:c11).should eq 4242
161
+ TestEnum3.enum_value(:c12).should eq 4243
162
162
  end
163
163
  it "can have all its constants explicitely valued" do
164
- TestEnum1.enum_value(:c13).should == 42
165
- TestEnum1.enum_value(:c14).should == 4242
166
- TestEnum1.enum_value(:c15).should == 424242
167
- TestEnum1.enum_value(:c16).should == 42424242
164
+ TestEnum1.enum_value(:c13).should eq 42
165
+ TestEnum1.enum_value(:c14).should eq 4242
166
+ TestEnum1.enum_value(:c15).should eq 424242
167
+ TestEnum1.enum_value(:c16).should eq 42424242
168
168
 
169
- TestEnum3.enum_value(:c13).should == 42
170
- TestEnum3.enum_value(:c14).should == 4242
171
- TestEnum3.enum_value(:c15).should == 424242
172
- TestEnum3.enum_value(:c16).should == 42424242
169
+ TestEnum3.enum_value(:c13).should eq 42
170
+ TestEnum3.enum_value(:c14).should eq 4242
171
+ TestEnum3.enum_value(:c15).should eq 424242
172
+ TestEnum3.enum_value(:c16).should eq 42424242
173
173
  end
174
174
  it "return the constant corresponding to a specific value" do
175
175
  enum = TestEnum3.enum_type(:enum_type1)
176
- enum[0].should == :c1
177
- enum[1].should == :c2
178
- enum[2].should == :c3
179
- enum[3].should == :c4
176
+ enum[0].should eq :c1
177
+ enum[1].should eq :c2
178
+ enum[2].should eq :c3
179
+ enum[3].should eq :c4
180
180
 
181
181
  enum = TestEnum3.enum_type(:enum_type2)
182
- enum[42].should == :c5
183
- enum[43].should == :c6
184
- enum[44].should == :c7
185
- enum[45].should == :c8
182
+ enum[42].should eq :c5
183
+ enum[43].should eq :c6
184
+ enum[44].should eq :c7
185
+ enum[45].should eq :c8
186
186
 
187
187
  enum = TestEnum3.enum_type(:enum_type3)
188
- enum[42].should == :c9
189
- enum[43].should == :c10
190
- enum[4242].should == :c11
191
- enum[4243].should == :c12
188
+ enum[42].should eq :c9
189
+ enum[43].should eq :c10
190
+ enum[4242].should eq :c11
191
+ enum[4243].should eq :c12
192
192
 
193
193
  enum = TestEnum3.enum_type(:enum_type4)
194
- enum[42].should == :c13
195
- enum[4242].should == :c14
196
- enum[424242].should == :c15
197
- enum[42424242].should == :c16
194
+ enum[42].should eq :c13
195
+ enum[4242].should eq :c14
196
+ enum[424242].should eq :c15
197
+ enum[42424242].should eq :c16
198
198
  end
199
199
  it "return nil for values that don't have a symbol" do
200
200
  enum = TestEnum3.enum_type(:enum_type1)
201
- enum[-1].should == nil
202
- enum[4].should == nil
201
+ enum[-1].should eq nil
202
+ enum[4].should eq nil
203
203
 
204
204
  enum = TestEnum3.enum_type(:enum_type2)
205
- enum[0].should == nil
206
- enum[41].should == nil
207
- enum[46].should == nil
205
+ enum[0].should eq nil
206
+ enum[41].should eq nil
207
+ enum[46].should eq nil
208
208
 
209
209
  enum = TestEnum3.enum_type(:enum_type3)
210
- enum[0].should == nil
211
- enum[41].should == nil
212
- enum[44].should == nil
213
- enum[4241].should == nil
214
- enum[4244].should == nil
210
+ enum[0].should eq nil
211
+ enum[41].should eq nil
212
+ enum[44].should eq nil
213
+ enum[4241].should eq nil
214
+ enum[4244].should eq nil
215
215
 
216
216
  enum = TestEnum3.enum_type(:enum_type4)
217
- enum[0].should == nil
218
- enum[41].should == nil
219
- enum[43].should == nil
220
- enum[4241].should == nil
221
- enum[4243].should == nil
222
- enum[424241].should == nil
223
- enum[424243].should == nil
224
- enum[42424241].should == nil
225
- enum[42424243].should == nil
217
+ enum[0].should eq nil
218
+ enum[41].should eq nil
219
+ enum[43].should eq nil
220
+ enum[4241].should eq nil
221
+ enum[4243].should eq nil
222
+ enum[424241].should eq nil
223
+ enum[424243].should eq nil
224
+ enum[42424241].should eq nil
225
+ enum[42424243].should eq nil
226
226
  end
227
227
  end
@@ -24,6 +24,6 @@ describe "FFI.errno" do
24
24
  it "FFI.errno contains errno from last function" do
25
25
  LibTest.setLastError(0)
26
26
  LibTest.setLastError(0x12345678)
27
- FFI.errno.should == 0x12345678
27
+ FFI.errno.should eq 0x12345678
28
28
  end
29
- end
29
+ end
@@ -24,15 +24,15 @@ describe "FFI" do
24
24
  let(:suffix) { FFI::Platform::LIBSUFFIX }
25
25
 
26
26
  it "should add platform library extension if not present" do
27
- FFI.map_library_name("#{prefix}dummy").should == "#{prefix}dummy.#{suffix}"
27
+ FFI.map_library_name("#{prefix}dummy").should eq "#{prefix}dummy.#{suffix}"
28
28
  end
29
29
 
30
30
  it "should add platform library extension even if lib suffix is present in name" do
31
- FFI.map_library_name("#{prefix}dummy_with_#{suffix}").should == "#{prefix}dummy_with_#{suffix}.#{suffix}"
31
+ FFI.map_library_name("#{prefix}dummy_with_#{suffix}").should eq "#{prefix}dummy_with_#{suffix}.#{suffix}"
32
32
  end
33
33
 
34
34
  it "should return Platform::LIBC when called with 'c'" do
35
- FFI.map_library_name('c').should == FFI::Library::LIBC
35
+ FFI.map_library_name('c').should eq FFI::Library::LIBC
36
36
  end
37
37
 
38
38
  end
@@ -17,12 +17,12 @@
17
17
  require File.expand_path(File.join(File.dirname(__FILE__), "spec_helper"))
18
18
 
19
19
  describe FFI::Function do
20
+ module LibTest
21
+ extend FFI::Library
22
+ ffi_lib TestLibrary::PATH
23
+ attach_function :testFunctionAdd, [:int, :int, :pointer], :int
24
+ end
20
25
  before do
21
- module LibTest
22
- extend FFI::Library
23
- ffi_lib TestLibrary::PATH
24
- attach_function :testFunctionAdd, [:int, :int, :pointer], :int
25
- end
26
26
  @libtest = FFI::DynamicLibrary.open(TestLibrary::PATH,
27
27
  FFI::DynamicLibrary::RTLD_LAZY | FFI::DynamicLibrary::RTLD_GLOBAL)
28
28
  end
@@ -37,20 +37,20 @@ describe FFI::Function do
37
37
  end
38
38
  it 'can be used as callback from C passing to it a block' do
39
39
  function_add = FFI::Function.new(:int, [:int, :int]) { |a, b| a + b }
40
- LibTest.testFunctionAdd(10, 10, function_add).should == 20
40
+ LibTest.testFunctionAdd(10, 10, function_add).should eq 20
41
41
  end
42
42
  it 'can be used as callback from C passing to it a Proc object' do
43
43
  function_add = FFI::Function.new(:int, [:int, :int], Proc.new { |a, b| a + b })
44
- LibTest.testFunctionAdd(10, 10, function_add).should == 20
44
+ LibTest.testFunctionAdd(10, 10, function_add).should eq 20
45
45
  end
46
46
  it 'can be used to wrap an existing function pointer' do
47
- FFI::Function.new(:int, [:int, :int], @libtest.find_function('testAdd')).call(10, 10).should == 20
47
+ FFI::Function.new(:int, [:int, :int], @libtest.find_function('testAdd')).call(10, 10).should eq 20
48
48
  end
49
49
  it 'can be attached to a module' do
50
50
  module Foo; end
51
51
  fp = FFI::Function.new(:int, [:int, :int], @libtest.find_function('testAdd'))
52
52
  fp.attach(Foo, 'add')
53
- Foo.add(10, 10).should == 20
53
+ Foo.add(10, 10).should eq 20
54
54
  end
55
55
  it 'can be used to extend an object' do
56
56
  fp = FFI::Function.new(:int, [:int, :int], @libtest.find_function('testAdd'))
@@ -61,7 +61,7 @@ describe FFI::Function do
61
61
  end
62
62
  end
63
63
  fp.attach(foo.singleton_class, 'add')
64
- foo.add(10, 10).should == 20
64
+ foo.add(10, 10).should eq 20
65
65
  end
66
66
  it 'can wrap a blocking function' do
67
67
  fp = FFI::Function.new(:void, [ :int ], @libtest.find_function('testBlocking'), :blocking => true)