xref: /third_party/rust/crates/os_str_bytes/tests/integration.rs (revision cdb3e2c8)
  • Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
  • only in /third_party/rust/crates/os_str_bytes/tests/
1#![cfg(feature = "checked_conversions")]
2
3use std::str;
4
5mod common;
6use common::Result;
7use common::WTF8_STRING;
8
9fn assert_string_is_invalid_utf8(string: &[u8]) {
10    assert!(str::from_utf8(string).is_err());
11}
12
13fn assert_invalid_result(result: &Result<()>) {
14    if cfg!(windows) {
15        assert!(result.is_err());
16    } else {
17        assert_eq!(&Ok(()), result);
18    }
19}
20
21#[test]
22fn test_empty() {
23    common::test_utf8_bytes("");
24    common::test_utf8_vec("");
25}
26
27#[test]
28fn test_nonempty_utf8() {
29    const UTF8_STRING: &str = "string";
30
31    common::test_utf8_bytes(UTF8_STRING);
32    common::test_utf8_vec(UTF8_STRING);
33}
34
35#[test]
36fn test_invalid() {
37    const INVALID_STRING: &[u8] = b"\xF1foo\xF1\x80bar\xF1\x80\x80baz";
38    assert_string_is_invalid_utf8(INVALID_STRING);
39
40    assert_invalid_result(&common::test_bytes(INVALID_STRING));
41    assert_invalid_result(&common::test_vec(INVALID_STRING));
42}
43
44#[test]
45fn test_wtf8() {
46    const HIGH_SURROGATE: &[u8] = b"\xED\xA0\x80";
47    const LOW_SURROGATE: &[u8] = b"\xED\xB0\x80";
48
49    for string in [WTF8_STRING, HIGH_SURROGATE, LOW_SURROGATE] {
50        assert_string_is_invalid_utf8(string);
51
52        assert_eq!(Ok(()), common::test_bytes(string));
53        assert_eq!(Ok(()), common::test_vec(string));
54    }
55}
56

Indexes created Thu Nov 07 10:32:03 CST 2024