@@ -84,7 +84,7 @@ mod test {
84
84
fn test_dir_entries ( ) {
85
85
#[ derive( Debug ) ]
86
86
enum Expected {
87
- Lfn ( bool , u8 , [ char ; 13 ] ) ,
87
+ Lfn ( bool , u8 , u8 , [ u16 ; 13 ] ) ,
88
88
Short ( DirEntry ) ,
89
89
}
90
90
let raw_data = r#"
@@ -105,6 +105,7 @@ mod test {
105
105
422e0064007400620000000f0059ffffffffffffffffffffffff0000ffffffff B..d.t.b.....Y..................
106
106
01620063006d00320037000f0059300038002d0072007000690000002d006200 .b.c.m.2.7...Y0.8.-.r.p.i...-.b.
107
107
"# ;
108
+
108
109
let results = [
109
110
Expected :: Short ( DirEntry {
110
111
name : unsafe {
@@ -123,9 +124,10 @@ mod test {
123
124
Expected :: Lfn (
124
125
true ,
125
126
1 ,
127
+ 0x47 ,
126
128
[
127
- 'o' , 'v' , 'e' , 'r' , 'l' , 'a' , 'y' , 's' , '\u{0000}' , '\u{ffff}' , '\u{ffff}' ,
128
- '\u{ffff}' , '\u{ffff}' ,
129
+ 'o' as u16 , 'v' as u16 , 'e' as u16 , 'r' as u16 , 'l' as u16 , 'a' as u16 ,
130
+ 'y' as u16 , 's' as u16 , 0x0000 , 0xFFFF , 0xFFFF , 0xFFFF , 0xFFFF ,
129
131
] ,
130
132
) ,
131
133
Expected :: Short ( DirEntry {
@@ -141,16 +143,20 @@ mod test {
141
143
Expected :: Lfn (
142
144
true ,
143
145
2 ,
146
+ 0x79 ,
144
147
[
145
- '-' , 'p' , 'l' , 'u' , 's' , '.' , 'd' , 't' , 'b' , '\u{0000}' , '\u{ffff}' ,
146
- '\u{ffff}' , '\u{ffff}' ,
148
+ '-' as u16 , 'p' as u16 , 'l' as u16 , 'u' as u16 , 's' as u16 , '.' as u16 ,
149
+ 'd' as u16 , 't' as u16 , 'b' as u16 , 0x0000 , 0xFFFF , 0xFFFF , 0xFFFF ,
147
150
] ,
148
151
) ,
149
152
Expected :: Lfn (
150
153
false ,
151
154
1 ,
155
+ 0x79 ,
152
156
[
153
- 'b' , 'c' , 'm' , '2' , '7' , '0' , '8' , '-' , 'r' , 'p' , 'i' , '-' , 'b' ,
157
+ 'b' as u16 , 'c' as u16 , 'm' as u16 , '2' as u16 , '7' as u16 , '0' as u16 ,
158
+ '8' as u16 , '-' as u16 , 'r' as u16 , 'p' as u16 , 'i' as u16 , '-' as u16 ,
159
+ 'b' as u16 ,
154
160
] ,
155
161
) ,
156
162
Expected :: Short ( DirEntry {
@@ -166,8 +172,11 @@ mod test {
166
172
Expected :: Lfn (
167
173
true ,
168
174
1 ,
175
+ 0x12 ,
169
176
[
170
- 'C' , 'O' , 'P' , 'Y' , 'I' , 'N' , 'G' , '.' , 'l' , 'i' , 'n' , 'u' , 'x' ,
177
+ 'C' as u16 , 'O' as u16 , 'P' as u16 , 'Y' as u16 , 'I' as u16 , 'N' as u16 ,
178
+ 'G' as u16 , '.' as u16 , 'l' as u16 , 'i' as u16 , 'n' as u16 , 'u' as u16 ,
179
+ 'x' as u16 ,
171
180
] ,
172
181
) ,
173
182
Expected :: Short ( DirEntry {
@@ -183,16 +192,31 @@ mod test {
183
192
Expected :: Lfn (
184
193
true ,
185
194
2 ,
195
+ 0x67 ,
186
196
[
187
- 'c' , 'o' , 'm' , '\u{0}' , '\u{ffff}' , '\u{ffff}' , '\u{ffff}' , '\u{ffff}' ,
188
- '\u{ffff}' , '\u{ffff}' , '\u{ffff}' , '\u{ffff}' , '\u{ffff}' ,
197
+ 'c' as u16 ,
198
+ 'o' as u16 ,
199
+ 'm' as u16 ,
200
+ '\u{0}' as u16 ,
201
+ 0xFFFF ,
202
+ 0xFFFF ,
203
+ 0xFFFF ,
204
+ 0xFFFF ,
205
+ 0xFFFF ,
206
+ 0xFFFF ,
207
+ 0xFFFF ,
208
+ 0xFFFF ,
209
+ 0xFFFF ,
189
210
] ,
190
211
) ,
191
212
Expected :: Lfn (
192
213
false ,
193
214
1 ,
215
+ 0x67 ,
194
216
[
195
- 'L' , 'I' , 'C' , 'E' , 'N' , 'C' , 'E' , '.' , 'b' , 'r' , 'o' , 'a' , 'd' ,
217
+ 'L' as u16 , 'I' as u16 , 'C' as u16 , 'E' as u16 , 'N' as u16 , 'C' as u16 ,
218
+ 'E' as u16 , '.' as u16 , 'b' as u16 , 'r' as u16 , 'o' as u16 , 'a' as u16 ,
219
+ 'd' as u16 ,
196
220
] ,
197
221
) ,
198
222
Expected :: Short ( DirEntry {
@@ -208,16 +232,20 @@ mod test {
208
232
Expected :: Lfn (
209
233
true ,
210
234
2 ,
235
+ 0x19 ,
211
236
[
212
- '-' , 'b' , '.' , 'd' , 't' , 'b' , '\u{0000}' , '\u{ffff}' , '\u{ffff}' , '\u{ffff}' ,
213
- '\u{ffff}' , '\u{ffff}' , '\u{ffff}' ,
237
+ '-' as u16 , 'b' as u16 , '.' as u16 , 'd' as u16 , 't' as u16 , 'b' as u16 , 0x0000 ,
238
+ 0xFFFF , 0xFFFF , 0xFFFF , 0xFFFF , 0xFFFF , 0xFFFF ,
214
239
] ,
215
240
) ,
216
241
Expected :: Lfn (
217
242
false ,
218
243
1 ,
244
+ 0x19 ,
219
245
[
220
- 'b' , 'c' , 'm' , '2' , '7' , '0' , '9' , '-' , 'r' , 'p' , 'i' , '-' , '2' ,
246
+ 'b' as u16 , 'c' as u16 , 'm' as u16 , '2' as u16 , '7' as u16 , '0' as u16 ,
247
+ '9' as u16 , '-' as u16 , 'r' as u16 , 'p' as u16 , 'i' as u16 , '-' as u16 ,
248
+ '2' as u16 ,
221
249
] ,
222
250
) ,
223
251
Expected :: Short ( DirEntry {
@@ -233,16 +261,20 @@ mod test {
233
261
Expected :: Lfn (
234
262
true ,
235
263
2 ,
264
+ 0x59 ,
236
265
[
237
- '.' , 'd' , 't' , 'b' , '\u{0000}' , '\u{ffff}' , '\u{ffff}' , '\u{ffff}' , '\u{ffff}' ,
238
- '\u{ffff}' , '\u{ffff}' , '\u{ffff}' , '\u{ffff}' ,
266
+ '.' as u16 , 'd' as u16 , 't' as u16 , 'b' as u16 , 0x0000 , 0xFFFF , 0xFFFF , 0xFFFF ,
267
+ 0xFFFF , 0xFFFF , 0xFFFF , 0xFFFF , 0xFFFF ,
239
268
] ,
240
269
) ,
241
270
Expected :: Lfn (
242
271
false ,
243
272
1 ,
273
+ 0x59 ,
244
274
[
245
- 'b' , 'c' , 'm' , '2' , '7' , '0' , '8' , '-' , 'r' , 'p' , 'i' , '-' , 'b' ,
275
+ 'b' as u16 , 'c' as u16 , 'm' as u16 , '2' as u16 , '7' as u16 , '0' as u16 ,
276
+ '8' as u16 , '-' as u16 , 'r' as u16 , 'p' as u16 , 'i' as u16 , '-' as u16 ,
277
+ 'b' as u16 ,
246
278
] ,
247
279
) ,
248
280
] ;
@@ -251,12 +283,13 @@ mod test {
251
283
for ( part, expected) in data. chunks ( OnDiskDirEntry :: LEN ) . zip ( results. iter ( ) ) {
252
284
let on_disk_entry = OnDiskDirEntry :: new ( part) ;
253
285
match expected {
254
- Expected :: Lfn ( start, index, contents) if on_disk_entry. is_lfn ( ) => {
255
- let ( calc_start, calc_index, calc_contents) =
286
+ Expected :: Lfn ( start, index, csum , contents) if on_disk_entry. is_lfn ( ) => {
287
+ let ( calc_start, calc_index, calc_csum , calc_contents) =
256
288
on_disk_entry. lfn_contents ( ) . unwrap ( ) ;
257
289
assert_eq ! ( * start, calc_start) ;
258
290
assert_eq ! ( * index, calc_index) ;
259
291
assert_eq ! ( * contents, calc_contents) ;
292
+ assert_eq ! ( * csum, calc_csum) ;
260
293
}
261
294
Expected :: Short ( expected_entry) if !on_disk_entry. is_lfn ( ) => {
262
295
let parsed_entry = on_disk_entry. get_entry ( FatType :: Fat32 , BlockIdx ( 0 ) , 0 ) ;
0 commit comments