Skip to content

Commit 7cef0df

Browse files
nicholasbishopphip1611
authored andcommitted
Move tests to tests/tests.rs
This ensures the tests are only using the public API of the crate.
1 parent 66e728f commit 7cef0df

File tree

2 files changed

+66
-70
lines changed

2 files changed

+66
-70
lines changed

src/lib.rs

-70
Original file line numberDiff line numberDiff line change
@@ -192,73 +192,3 @@ pub fn decode(input: &[u16], output: &mut [u8]) -> Result<usize> {
192192
Ok(())
193193
})
194194
}
195-
196-
#[cfg(test)]
197-
mod tests {
198-
use super::*;
199-
200-
#[test]
201-
fn encoding() {
202-
let input = "őэ╋";
203-
let mut buffer = [0u16; 3];
204-
205-
assert_eq!(encode(input, &mut buffer), Ok(3));
206-
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));
213-
}
214-
215-
#[test]
216-
fn decoding() {
217-
let input = "$¢ह한";
218-
let mut u16_buffer = [0u16; 4];
219-
assert_eq!(encode(input, &mut u16_buffer), Ok(4));
220-
221-
let mut u8_buffer = [0u8; 9];
222-
assert_eq!(decode(&u16_buffer, &mut u8_buffer), Ok(9));
223-
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-
);
239-
}
240-
241-
#[test]
242-
fn decoding_with() {
243-
let input = "$¢ह한";
244-
245-
let mut u16_buffer = [0u16; 4];
246-
let result = encode(input, &mut u16_buffer);
247-
assert_eq!(result.unwrap(), 4);
248-
249-
let mut u8_buffer = [0u8; 9];
250-
let mut pos = 0;
251-
252-
let result = decode_with(&u16_buffer, |bytes| {
253-
for byte in bytes.into_iter() {
254-
u8_buffer[pos] = *byte;
255-
pos += 1;
256-
}
257-
258-
Ok(())
259-
});
260-
261-
assert_eq!(result.unwrap(), 9);
262-
assert_eq!(core::str::from_utf8(&u8_buffer[0..9]), Ok("$¢ह한"));
263-
}
264-
}

tests/tests.rs

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
use ucs2::{decode, decode_with, encode, Error};
2+
3+
#[test]
4+
fn encoding() {
5+
let input = "őэ╋";
6+
let mut buffer = [0u16; 3];
7+
8+
assert_eq!(encode(input, &mut buffer), Ok(3));
9+
assert_eq!(buffer[..], [0x0151, 0x044D, 0x254B]);
10+
11+
let mut buffer = [0u16; 2];
12+
assert_eq!(encode(input, &mut buffer), Err(Error::BufferOverflow));
13+
14+
let input = "😎";
15+
assert_eq!(encode(input, &mut buffer), Err(Error::MultiByte));
16+
}
17+
18+
#[test]
19+
fn decoding() {
20+
let input = "$¢ह한";
21+
let mut u16_buffer = [0u16; 4];
22+
assert_eq!(encode(input, &mut u16_buffer), Ok(4));
23+
24+
let mut u8_buffer = [0u8; 9];
25+
assert_eq!(decode(&u16_buffer, &mut u8_buffer), Ok(9));
26+
assert_eq!(core::str::from_utf8(&u8_buffer[0..9]), Ok("$¢ह한"));
27+
28+
// `decode` has three branches that can return `BufferOverflow`,
29+
// check each of them.
30+
assert_eq!(
31+
decode(&u16_buffer, &mut u8_buffer[..0]),
32+
Err(Error::BufferOverflow)
33+
);
34+
assert_eq!(
35+
decode(&u16_buffer, &mut u8_buffer[..1]),
36+
Err(Error::BufferOverflow)
37+
);
38+
assert_eq!(
39+
decode(&u16_buffer, &mut u8_buffer[..3]),
40+
Err(Error::BufferOverflow)
41+
);
42+
}
43+
44+
#[test]
45+
fn decoding_with() {
46+
let input = "$¢ह한";
47+
48+
let mut u16_buffer = [0u16; 4];
49+
let result = encode(input, &mut u16_buffer);
50+
assert_eq!(result.unwrap(), 4);
51+
52+
let mut u8_buffer = [0u8; 9];
53+
let mut pos = 0;
54+
55+
let result = decode_with(&u16_buffer, |bytes| {
56+
for byte in bytes.into_iter() {
57+
u8_buffer[pos] = *byte;
58+
pos += 1;
59+
}
60+
61+
Ok(())
62+
});
63+
64+
assert_eq!(result.unwrap(), 9);
65+
assert_eq!(core::str::from_utf8(&u8_buffer[0..9]), Ok("$¢ह한"));
66+
}

0 commit comments

Comments
 (0)