Skip to content

Commit 66e728f

Browse files
nicholasbishopphip1611
authored andcommitted
Improve test coverage
All reachable branches in the encoding/decoding functions are now checked.
1 parent 764f0a1 commit 66e728f

File tree

1 file changed

+24
-7
lines changed

1 file changed

+24
-7
lines changed

src/lib.rs

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -202,23 +202,40 @@ mod tests {
202202
let input = "őэ╋";
203203
let mut buffer = [0u16; 3];
204204

205-
let result = encode(input, &mut buffer);
206-
assert_eq!(result.unwrap(), 3);
207-
205+
assert_eq!(encode(input, &mut buffer), Ok(3));
208206
assert_eq!(buffer[..], [0x0151, 0x044D, 0x254B]);
207+
208+
let mut buffer = [0u16; 2];
209+
assert_eq!(encode(input, &mut buffer), Err(Error::BufferOverflow));
210+
211+
let input = "😎";
212+
assert_eq!(encode(input, &mut buffer), Err(Error::MultiByte));
209213
}
210214

211215
#[test]
212216
fn decoding() {
213217
let input = "$¢ह한";
214218
let mut u16_buffer = [0u16; 4];
215-
let result = encode(input, &mut u16_buffer);
216-
assert_eq!(result.unwrap(), 4);
219+
assert_eq!(encode(input, &mut u16_buffer), Ok(4));
217220

218221
let mut u8_buffer = [0u8; 9];
219-
let result = decode(&u16_buffer, &mut u8_buffer);
220-
assert_eq!(result.unwrap(), 9);
222+
assert_eq!(decode(&u16_buffer, &mut u8_buffer), Ok(9));
221223
assert_eq!(core::str::from_utf8(&u8_buffer[0..9]), Ok("$¢ह한"));
224+
225+
// `decode` has three branches that can return `BufferOverflow`,
226+
// check each of them.
227+
assert_eq!(
228+
decode(&u16_buffer, &mut u8_buffer[..0]),
229+
Err(Error::BufferOverflow)
230+
);
231+
assert_eq!(
232+
decode(&u16_buffer, &mut u8_buffer[..1]),
233+
Err(Error::BufferOverflow)
234+
);
235+
assert_eq!(
236+
decode(&u16_buffer, &mut u8_buffer[..3]),
237+
Err(Error::BufferOverflow)
238+
);
222239
}
223240

224241
#[test]

0 commit comments

Comments
 (0)