1cdb3e2c8Sopenharmony_ci#![cfg(feature = "raw_os_str")]
2cdb3e2c8Sopenharmony_ci
3cdb3e2c8Sopenharmony_ciuse os_str_bytes::RawOsStr;
4cdb3e2c8Sopenharmony_ci
5cdb3e2c8Sopenharmony_cimod raw_common;
6cdb3e2c8Sopenharmony_ciuse raw_common::RAW_WTF8_STRING;
7cdb3e2c8Sopenharmony_ci
8cdb3e2c8Sopenharmony_cifn test(result: &str, string: &RawOsStr) {
9cdb3e2c8Sopenharmony_ci    assert_eq!(format!("RawOsStr({})", result), format!("{:?}", string));
10cdb3e2c8Sopenharmony_ci    assert_eq!(
11cdb3e2c8Sopenharmony_ci        format!("RawOsString({})", result),
12cdb3e2c8Sopenharmony_ci        format!("{:?}", string.to_owned()),
13cdb3e2c8Sopenharmony_ci    );
14cdb3e2c8Sopenharmony_ci}
15cdb3e2c8Sopenharmony_ci
16cdb3e2c8Sopenharmony_ci#[test]
17cdb3e2c8Sopenharmony_cifn test_empty() {
18cdb3e2c8Sopenharmony_ci    test("\"\"", RawOsStr::from_str(""));
19cdb3e2c8Sopenharmony_ci}
20cdb3e2c8Sopenharmony_ci
21cdb3e2c8Sopenharmony_ci#[test]
22cdb3e2c8Sopenharmony_cifn test_wft8() {
23cdb3e2c8Sopenharmony_ci    let wchar = if cfg!(unix) {
24cdb3e2c8Sopenharmony_ci        "\\xED\\xA0\\xBD"
25cdb3e2c8Sopenharmony_ci    } else {
26cdb3e2c8Sopenharmony_ci        "\\u{D83D}"
27cdb3e2c8Sopenharmony_ci    };
28cdb3e2c8Sopenharmony_ci    test(&format!("\"foo{}\u{1F4A9}bar\"", wchar), RAW_WTF8_STRING);
29cdb3e2c8Sopenharmony_ci}
30cdb3e2c8Sopenharmony_ci
31cdb3e2c8Sopenharmony_ci#[test]
32cdb3e2c8Sopenharmony_cifn test_quote() {
33cdb3e2c8Sopenharmony_ci    test("\"foo\\\"bar\"", RawOsStr::from_str("foo\"bar"));
34cdb3e2c8Sopenharmony_ci}
35