@@ -12,61 +12,88 @@ class TestCParser < TestCase
1212
1313 def test_char_ctype
1414 assert_equal ( TYPE_CHAR , parse_ctype ( 'char' ) )
15+ assert_equal ( TYPE_CHAR , parse_ctype ( 'const char' ) )
1516 assert_equal ( TYPE_CHAR , parse_ctype ( 'signed char' ) )
17+ assert_equal ( TYPE_CHAR , parse_ctype ( 'const signed char' ) )
1618 assert_equal ( -TYPE_CHAR , parse_ctype ( 'unsigned char' ) )
19+ assert_equal ( -TYPE_CHAR , parse_ctype ( 'const unsigned char' ) )
1720 end
1821
1922 def test_short_ctype
2023 assert_equal ( TYPE_SHORT , parse_ctype ( 'short' ) )
24+ assert_equal ( TYPE_SHORT , parse_ctype ( 'const short' ) )
2125 assert_equal ( TYPE_SHORT , parse_ctype ( 'short int' ) )
26+ assert_equal ( TYPE_SHORT , parse_ctype ( 'const short int' ) )
2227 assert_equal ( TYPE_SHORT , parse_ctype ( 'signed short' ) )
28+ assert_equal ( TYPE_SHORT , parse_ctype ( 'const signed short' ) )
2329 assert_equal ( TYPE_SHORT , parse_ctype ( 'signed short int' ) )
30+ assert_equal ( TYPE_SHORT , parse_ctype ( 'const signed short int' ) )
2431 assert_equal ( -TYPE_SHORT , parse_ctype ( 'unsigned short' ) )
32+ assert_equal ( -TYPE_SHORT , parse_ctype ( 'const unsigned short' ) )
2533 assert_equal ( -TYPE_SHORT , parse_ctype ( 'unsigned short int' ) )
34+ assert_equal ( -TYPE_SHORT , parse_ctype ( 'const unsigned short int' ) )
2635 end
2736
2837 def test_int_ctype
2938 assert_equal ( TYPE_INT , parse_ctype ( 'int' ) )
39+ assert_equal ( TYPE_INT , parse_ctype ( 'const int' ) )
3040 assert_equal ( TYPE_INT , parse_ctype ( 'signed int' ) )
41+ assert_equal ( TYPE_INT , parse_ctype ( 'const signed int' ) )
3142 assert_equal ( -TYPE_INT , parse_ctype ( 'uint' ) )
43+ assert_equal ( -TYPE_INT , parse_ctype ( 'const uint' ) )
3244 assert_equal ( -TYPE_INT , parse_ctype ( 'unsigned int' ) )
45+ assert_equal ( -TYPE_INT , parse_ctype ( 'const unsigned int' ) )
3346 end
3447
3548 def test_long_ctype
3649 assert_equal ( TYPE_LONG , parse_ctype ( 'long' ) )
50+ assert_equal ( TYPE_LONG , parse_ctype ( 'const long' ) )
3751 assert_equal ( TYPE_LONG , parse_ctype ( 'long int' ) )
52+ assert_equal ( TYPE_LONG , parse_ctype ( 'const long int' ) )
3853 assert_equal ( TYPE_LONG , parse_ctype ( 'signed long' ) )
54+ assert_equal ( TYPE_LONG , parse_ctype ( 'const signed long' ) )
3955 assert_equal ( TYPE_LONG , parse_ctype ( 'signed long int' ) )
56+ assert_equal ( TYPE_LONG , parse_ctype ( 'const signed long int' ) )
4057 assert_equal ( -TYPE_LONG , parse_ctype ( 'unsigned long' ) )
58+ assert_equal ( -TYPE_LONG , parse_ctype ( 'const unsigned long' ) )
4159 assert_equal ( -TYPE_LONG , parse_ctype ( 'unsigned long int' ) )
60+ assert_equal ( -TYPE_LONG , parse_ctype ( 'const unsigned long int' ) )
4261 end
4362
4463 def test_size_t_ctype
4564 assert_equal ( TYPE_SIZE_T , parse_ctype ( "size_t" ) )
65+ assert_equal ( TYPE_SIZE_T , parse_ctype ( "const size_t" ) )
4666 end
4767
4868 def test_ssize_t_ctype
4969 assert_equal ( TYPE_SSIZE_T , parse_ctype ( "ssize_t" ) )
70+ assert_equal ( TYPE_SSIZE_T , parse_ctype ( "const ssize_t" ) )
5071 end
5172
5273 def test_ptrdiff_t_ctype
5374 assert_equal ( TYPE_PTRDIFF_T , parse_ctype ( "ptrdiff_t" ) )
75+ assert_equal ( TYPE_PTRDIFF_T , parse_ctype ( "const ptrdiff_t" ) )
5476 end
5577
5678 def test_intptr_t_ctype
5779 assert_equal ( TYPE_INTPTR_T , parse_ctype ( "intptr_t" ) )
80+ assert_equal ( TYPE_INTPTR_T , parse_ctype ( "const intptr_t" ) )
5881 end
5982
6083 def test_uintptr_t_ctype
6184 assert_equal ( TYPE_UINTPTR_T , parse_ctype ( "uintptr_t" ) )
85+ assert_equal ( TYPE_UINTPTR_T , parse_ctype ( "const uintptr_t" ) )
6286 end
6387
6488 def test_undefined_ctype
6589 assert_raise ( DLError ) { parse_ctype ( 'DWORD' ) }
6690 end
6791
6892 def test_undefined_ctype_with_type_alias
69- assert_equal ( -TYPE_LONG , parse_ctype ( 'DWORD' , { "DWORD" => "unsigned long" } ) )
93+ assert_equal ( -TYPE_LONG ,
94+ parse_ctype ( 'DWORD' , { "DWORD" => "unsigned long" } ) )
95+ assert_equal ( -TYPE_LONG ,
96+ parse_ctype ( 'const DWORD' , { "DWORD" => "unsigned long" } ) )
7097 end
7198
7299 def expand_struct_types ( types )
@@ -83,11 +110,21 @@ def expand_struct_types(types)
83110 end
84111
85112 def test_struct_basic
86- assert_equal [ [ TYPE_INT , TYPE_CHAR ] , [ 'i' , 'c' ] ] , parse_struct_signature ( [ 'int i' , 'char c' ] )
113+ assert_equal ( [ [ TYPE_INT , TYPE_CHAR ] , [ 'i' , 'c' ] ] ,
114+ parse_struct_signature ( [ 'int i' , 'char c' ] ) )
115+ assert_equal ( [ [ TYPE_INT , TYPE_CHAR ] , [ 'i' , 'c' ] ] ,
116+ parse_struct_signature ( [ 'const int i' , 'const char c' ] ) )
87117 end
88118
89119 def test_struct_array
90- assert_equal [ [ [ TYPE_CHAR , 80 ] , [ TYPE_INT , 5 ] ] , [ 'buffer' , 'x' ] ] , parse_struct_signature ( [ 'char buffer[80]' , 'int[5] x' ] )
120+ assert_equal ( [ [ [ TYPE_CHAR , 80 ] , [ TYPE_INT , 5 ] ] ,
121+ [ 'buffer' , 'x' ] ] ,
122+ parse_struct_signature ( [ 'char buffer[80]' ,
123+ 'int[5] x' ] ) )
124+ assert_equal ( [ [ [ TYPE_CHAR , 80 ] , [ TYPE_INT , 5 ] ] ,
125+ [ 'buffer' , 'x' ] ] ,
126+ parse_struct_signature ( [ 'const char buffer[80]' ,
127+ 'const int[5] x' ] ) )
91128 end
92129
93130 def test_struct_nested_struct
@@ -178,15 +215,22 @@ def test_struct_double_nested_struct_outer_array
178215 end
179216
180217 def test_struct_array_str
181- assert_equal [ [ [ TYPE_CHAR , 80 ] , [ TYPE_INT , 5 ] ] , [ 'buffer' , 'x' ] ] , parse_struct_signature ( 'char buffer[80], int[5] x' )
218+ assert_equal ( [ [ [ TYPE_CHAR , 80 ] , [ TYPE_INT , 5 ] ] ,
219+ [ 'buffer' , 'x' ] ] ,
220+ parse_struct_signature ( 'char buffer[80], int[5] x' ) )
221+ assert_equal ( [ [ [ TYPE_CHAR , 80 ] , [ TYPE_INT , 5 ] ] ,
222+ [ 'buffer' , 'x' ] ] ,
223+ parse_struct_signature ( 'const char buffer[80], const int[5] x' ) )
182224 end
183225
184226 def test_struct_function_pointer
185- assert_equal [ [ TYPE_VOIDP ] , [ 'cb' ] ] , parse_struct_signature ( [ 'void (*cb)(const char*)' ] )
227+ assert_equal ( [ [ TYPE_VOIDP ] , [ 'cb' ] ] ,
228+ parse_struct_signature ( [ 'void (*cb)(const char*)' ] ) )
186229 end
187230
188231 def test_struct_function_pointer_str
189- assert_equal [ [ TYPE_VOIDP , TYPE_VOIDP ] , [ 'cb' , 'data' ] ] , parse_struct_signature ( 'void (*cb)(const char*), const char* data' )
232+ assert_equal ( [ [ TYPE_VOIDP , TYPE_VOIDP ] , [ 'cb' , 'data' ] ] ,
233+ parse_struct_signature ( 'void (*cb)(const char*), const char* data' ) )
190234 end
191235
192236 def test_struct_string
0 commit comments