@@ -30,28 +30,6 @@ macro_rules! tests {
3030
3131tests ! {
3232
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-
5533fn control_request( dev, _out) {
5634 let mut rng = rand:: thread_rng( ) ;
5735
@@ -133,6 +111,58 @@ fn control_error(dev, _out) {
133111 }
134112}
135113
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+
136166fn bulk_loopback( dev, _out) {
137167 for len in & [ 0 , 1 , 2 , 32 , 63 , 64 , 65 , 127 , 128 , 129 ] {
138168 let data = random_data( * len) ;
0 commit comments