Skip to content

Commit

Permalink
Move tests to tests/tests.rs
Browse files Browse the repository at this point in the history
This ensures the tests are only using the public API of the crate.
  • Loading branch information
nicholasbishop committed Mar 24, 2024
1 parent b5bb465 commit 6269c95
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 70 deletions.
70 changes: 0 additions & 70 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -192,73 +192,3 @@ pub fn decode(input: &[u16], output: &mut [u8]) -> Result<usize> {
Ok(())
})
}

#[cfg(test)]
mod tests {
use super::*;

#[test]
fn encoding() {
let input = "őэ╋";
let mut buffer = [0u16; 3];

assert_eq!(encode(input, &mut buffer), Ok(3));
assert_eq!(buffer[..], [0x0151, 0x044D, 0x254B]);

let mut buffer = [0u16; 2];
assert_eq!(encode(input, &mut buffer), Err(Error::BufferOverflow));

let input = "😎";
assert_eq!(encode(input, &mut buffer), Err(Error::MultiByte));
}

#[test]
fn decoding() {
let input = "$¢ह한";
let mut u16_buffer = [0u16; 4];
assert_eq!(encode(input, &mut u16_buffer), Ok(4));

let mut u8_buffer = [0u8; 9];
assert_eq!(decode(&u16_buffer, &mut u8_buffer), Ok(9));
assert_eq!(core::str::from_utf8(&u8_buffer[0..9]), Ok("$¢ह한"));

// `decode` has three branches that can return `BufferOverflow`,
// check each of them.
assert_eq!(
decode(&u16_buffer, &mut u8_buffer[..0]),
Err(Error::BufferOverflow)
);
assert_eq!(
decode(&u16_buffer, &mut u8_buffer[..1]),
Err(Error::BufferOverflow)
);
assert_eq!(
decode(&u16_buffer, &mut u8_buffer[..3]),
Err(Error::BufferOverflow)
);
}

#[test]
fn decoding_with() {
let input = "$¢ह한";

let mut u16_buffer = [0u16; 4];
let result = encode(input, &mut u16_buffer);
assert_eq!(result.unwrap(), 4);

let mut u8_buffer = [0u8; 9];
let mut pos = 0;

let result = decode_with(&u16_buffer, |bytes| {
for byte in bytes.into_iter() {
u8_buffer[pos] = *byte;
pos += 1;
}

Ok(())
});

assert_eq!(result.unwrap(), 9);
assert_eq!(core::str::from_utf8(&u8_buffer[0..9]), Ok("$¢ह한"));
}
}
66 changes: 66 additions & 0 deletions tests/tests.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
use ucs2::{decode, decode_with, encode, Error};

#[test]
fn encoding() {
let input = "őэ╋";
let mut buffer = [0u16; 3];

assert_eq!(encode(input, &mut buffer), Ok(3));
assert_eq!(buffer[..], [0x0151, 0x044D, 0x254B]);

let mut buffer = [0u16; 2];
assert_eq!(encode(input, &mut buffer), Err(Error::BufferOverflow));

let input = "😎";
assert_eq!(encode(input, &mut buffer), Err(Error::MultiByte));
}

#[test]
fn decoding() {
let input = "$¢ह한";
let mut u16_buffer = [0u16; 4];
assert_eq!(encode(input, &mut u16_buffer), Ok(4));

let mut u8_buffer = [0u8; 9];
assert_eq!(decode(&u16_buffer, &mut u8_buffer), Ok(9));
assert_eq!(core::str::from_utf8(&u8_buffer[0..9]), Ok("$¢ह한"));

// `decode` has three branches that can return `BufferOverflow`,
// check each of them.
assert_eq!(
decode(&u16_buffer, &mut u8_buffer[..0]),
Err(Error::BufferOverflow)
);
assert_eq!(
decode(&u16_buffer, &mut u8_buffer[..1]),
Err(Error::BufferOverflow)
);
assert_eq!(
decode(&u16_buffer, &mut u8_buffer[..3]),
Err(Error::BufferOverflow)
);
}

#[test]
fn decoding_with() {
let input = "$¢ह한";

let mut u16_buffer = [0u16; 4];
let result = encode(input, &mut u16_buffer);
assert_eq!(result.unwrap(), 4);

let mut u8_buffer = [0u8; 9];
let mut pos = 0;

let result = decode_with(&u16_buffer, |bytes| {
for byte in bytes.into_iter() {
u8_buffer[pos] = *byte;
pos += 1;
}

Ok(())
});

assert_eq!(result.unwrap(), 9);
assert_eq!(core::str::from_utf8(&u8_buffer[0..9]), Ok("$¢ह한"));
}

0 comments on commit 6269c95

Please sign in to comment.