File tree 2 files changed +45
-7
lines changed 2 files changed +45
-7
lines changed Original file line number Diff line number Diff line change @@ -18,17 +18,17 @@ module PackInfo # :nodoc: all
18
18
}
19
19
20
20
PACK_MAP = {
21
- TYPE_VOIDP => "l !" ,
21
+ TYPE_VOIDP => "L !" ,
22
22
TYPE_CHAR => "c" ,
23
23
TYPE_SHORT => "s!" ,
24
24
TYPE_INT => "i!" ,
25
25
TYPE_LONG => "l!" ,
26
26
TYPE_FLOAT => "f" ,
27
27
TYPE_DOUBLE => "d" ,
28
- -TYPE_CHAR => "c " ,
29
- -TYPE_SHORT => "s !" ,
30
- -TYPE_INT => "i !" ,
31
- -TYPE_LONG => "l !" ,
28
+ -TYPE_CHAR => "C " ,
29
+ -TYPE_SHORT => "S !" ,
30
+ -TYPE_INT => "I !" ,
31
+ -TYPE_LONG => "L !" ,
32
32
}
33
33
34
34
SIZE_MAP = {
@@ -46,9 +46,10 @@ module PackInfo # :nodoc: all
46
46
}
47
47
if defined? ( TYPE_LONG_LONG )
48
48
ALIGN_MAP [ TYPE_LONG_LONG ] = ALIGN_MAP [ -TYPE_LONG_LONG ] = ALIGN_LONG_LONG
49
- PACK_MAP [ TYPE_LONG_LONG ] = PACK_MAP [ -TYPE_LONG_LONG ] = "q"
49
+ PACK_MAP [ TYPE_LONG_LONG ] = "q"
50
+ PACK_MAP [ -TYPE_LONG_LONG ] = "Q"
50
51
SIZE_MAP [ TYPE_LONG_LONG ] = SIZE_MAP [ -TYPE_LONG_LONG ] = SIZEOF_LONG_LONG
51
- PACK_MAP [ TYPE_VOIDP ] = "q " if SIZEOF_LONG_LONG == SIZEOF_VOIDP
52
+ PACK_MAP [ TYPE_VOIDP ] = "Q " if SIZEOF_LONG_LONG == SIZEOF_VOIDP
52
53
end
53
54
54
55
def align ( addr , align )
Original file line number Diff line number Diff line change
1
+ begin
2
+ require_relative 'helper'
3
+ require 'fiddle/pack'
4
+ rescue LoadError
5
+ return
6
+ end
7
+
8
+ module Fiddle
9
+ class TestPack < TestCase
10
+ def test_pack_map
11
+ if defined? ( TYPE_LONG_LONG )
12
+ assert_equal [ 0xffff_ffff_ffff_ffff ] , [ 0xffff_ffff_ffff_ffff ] . pack ( PackInfo ::PACK_MAP [ -TYPE_LONG_LONG ] ) . unpack ( PackInfo ::PACK_MAP [ -TYPE_LONG_LONG ] )
13
+ end
14
+
15
+ case Fiddle ::SIZEOF_VOIDP
16
+ when 8
17
+ assert_equal [ 0xffff_ffff_ffff_ffff ] , [ 0xffff_ffff_ffff_ffff ] . pack ( PackInfo ::PACK_MAP [ TYPE_VOIDP ] ) . unpack ( PackInfo ::PACK_MAP [ TYPE_VOIDP ] )
18
+ when 4
19
+ assert_equal [ 0xffff_ffff ] , [ 0xffff_ffff ] . pack ( PackInfo ::PACK_MAP [ TYPE_VOIDP ] ) . unpack ( PackInfo ::PACK_MAP [ TYPE_VOIDP ] )
20
+ end
21
+
22
+ case Fiddle ::SIZEOF_LONG
23
+ when 8
24
+ assert_equal [ 0xffff_ffff_ffff_ffff ] , [ 0xffff_ffff_ffff_ffff ] . pack ( PackInfo ::PACK_MAP [ -TYPE_LONG ] ) . unpack ( PackInfo ::PACK_MAP [ -TYPE_LONG ] )
25
+ when 4
26
+ assert_equal [ 0xffff_ffff ] , [ 0xffff_ffff ] . pack ( PackInfo ::PACK_MAP [ -TYPE_LONG ] ) . unpack ( PackInfo ::PACK_MAP [ -TYPE_LONG ] )
27
+ end
28
+
29
+ if Fiddle ::SIZEOF_INT == 4
30
+ assert_equal [ 0xffff_ffff ] , [ 0xffff_ffff ] . pack ( PackInfo ::PACK_MAP [ -TYPE_INT ] ) . unpack ( PackInfo ::PACK_MAP [ -TYPE_INT ] )
31
+ end
32
+
33
+ assert_equal [ 0xffff ] , [ 0xffff ] . pack ( PackInfo ::PACK_MAP [ -TYPE_SHORT ] ) . unpack ( PackInfo ::PACK_MAP [ -TYPE_SHORT ] )
34
+ assert_equal [ 0xff ] , [ 0xff ] . pack ( PackInfo ::PACK_MAP [ -TYPE_CHAR ] ) . unpack ( PackInfo ::PACK_MAP [ -TYPE_CHAR ] )
35
+ end
36
+ end
37
+ end
You can’t perform that action at this time.
0 commit comments