File tree Expand file tree Collapse file tree 2 files changed +45
-7
lines changed Expand file tree Collapse file tree 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
1818 }
1919
2020 PACK_MAP = {
21- TYPE_VOIDP => "l !" ,
21+ TYPE_VOIDP => "L !" ,
2222 TYPE_CHAR => "c" ,
2323 TYPE_SHORT => "s!" ,
2424 TYPE_INT => "i!" ,
2525 TYPE_LONG => "l!" ,
2626 TYPE_FLOAT => "f" ,
2727 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 !" ,
3232 }
3333
3434 SIZE_MAP = {
@@ -46,9 +46,10 @@ module PackInfo # :nodoc: all
4646 }
4747 if defined? ( TYPE_LONG_LONG )
4848 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"
5051 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
5253 end
5354
5455 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