@@ -30,28 +30,6 @@ macro_rules! tests {
30
30
31
31
tests ! {
32
32
33
- fn string_descriptors( dev, _out) {
34
- assert_eq!(
35
- dev. read_product_string( dev. en_us, & dev. device_descriptor, TIMEOUT )
36
- . expect( "read product string" ) ,
37
- test_class:: PRODUCT ) ;
38
-
39
- assert_eq!(
40
- dev. read_manufacturer_string( dev. en_us, & dev. device_descriptor, TIMEOUT )
41
- . expect( "read manufacturer string" ) ,
42
- test_class:: MANUFACTURER ) ;
43
-
44
- assert_eq!(
45
- dev. read_serial_number_string( dev. en_us, & dev. device_descriptor, TIMEOUT )
46
- . expect( "read serial number string" ) ,
47
- test_class:: SERIAL_NUMBER ) ;
48
-
49
- assert_eq!(
50
- dev. read_string_descriptor( dev. en_us, 4 , TIMEOUT )
51
- . expect( "read custom string" ) ,
52
- test_class:: CUSTOM_STRING ) ;
53
- }
54
-
55
33
fn control_request( dev, _out) {
56
34
let mut rng = rand:: thread_rng( ) ;
57
35
@@ -133,6 +111,58 @@ fn control_error(dev, _out) {
133
111
}
134
112
}
135
113
114
+ fn string_descriptors( dev, _out) {
115
+ assert_eq!(
116
+ dev. read_product_string( dev. en_us, & dev. device_descriptor, TIMEOUT )
117
+ . expect( "read product string" ) ,
118
+ test_class:: PRODUCT ) ;
119
+
120
+ assert_eq!(
121
+ dev. read_manufacturer_string( dev. en_us, & dev. device_descriptor, TIMEOUT )
122
+ . expect( "read manufacturer string" ) ,
123
+ test_class:: MANUFACTURER ) ;
124
+
125
+ assert_eq!(
126
+ dev. read_serial_number_string( dev. en_us, & dev. device_descriptor, TIMEOUT )
127
+ . expect( "read serial number string" ) ,
128
+ test_class:: SERIAL_NUMBER ) ;
129
+
130
+ assert_eq!(
131
+ dev. read_string_descriptor( dev. en_us, 4 , TIMEOUT )
132
+ . expect( "read custom string" ) ,
133
+ test_class:: CUSTOM_STRING ) ;
134
+ }
135
+
136
+ fn interface_descriptor( dev, _out) {
137
+ let iface = dev. config_descriptor
138
+ . interfaces( )
139
+ . find( |i| i. number( ) == 0 )
140
+ . expect( "interface not found" ) ;
141
+
142
+ let default_alt_setting = iface. descriptors( )
143
+ . find( |i| i. setting_number( ) == 0 )
144
+ . expect( "default alt setting not found" ) ;
145
+
146
+ assert_eq!( default_alt_setting. description_string_index( ) , None ) ;
147
+ assert_eq!( default_alt_setting. class_code( ) , 0xff ) ;
148
+ assert_eq!( default_alt_setting. sub_class_code( ) , 0x00 ) ;
149
+
150
+ let second_alt_setting = iface. descriptors( )
151
+ . find( |i| i. setting_number( ) == 1 )
152
+ . expect( "second alt setting not found" ) ;
153
+
154
+ assert_eq!( second_alt_setting. class_code( ) , 0xff ) ;
155
+ assert_eq!( second_alt_setting. sub_class_code( ) , 0x01 ) ;
156
+
157
+ let string_index = second_alt_setting. description_string_index( )
158
+ . expect( "second alt setting string is undefined" ) ;
159
+
160
+ assert_eq!(
161
+ dev. read_string_descriptor( dev. en_us, string_index, TIMEOUT )
162
+ . expect( "read interface string" ) ,
163
+ test_class:: INTERFACE_STRING ) ;
164
+ }
165
+
136
166
fn bulk_loopback( dev, _out) {
137
167
for len in & [ 0 , 1 , 2 , 32 , 63 , 64 , 65 , 127 , 128 , 129 ] {
138
168
let data = random_data( * len) ;
0 commit comments