summaryrefslogtreecommitdiffstats
path: root/third_party/rust/camino/src/tests.rs
blob: 305b76091079eac7c28fcaed261857469ddc8a6b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Copyright (c) The camino Contributors
// SPDX-License-Identifier: MIT OR Apache-2.0

// Test that all required impls exist.

use crate::{Utf8Path, Utf8PathBuf};
use std::{
    borrow::Cow,
    path::{Path, PathBuf},
    rc::Rc,
    sync::Arc,
};

macro_rules! all_into {
    ($t:ty, $x:ident) => {
        test_into::<$t, Utf8PathBuf>($x.clone());
        test_into::<$t, Box<Utf8Path>>($x.clone());
        test_into::<$t, Arc<Utf8Path>>($x.clone());
        test_into::<$t, Rc<Utf8Path>>($x.clone());
        test_into::<$t, Cow<'_, Utf8Path>>($x.clone());
        test_into::<$t, PathBuf>($x.clone());
        test_into::<$t, Box<Path>>($x.clone());
        test_into::<$t, Arc<Path>>($x.clone());
        test_into::<$t, Rc<Path>>($x.clone());
        test_into::<$t, Cow<'_, Path>>($x.clone());
    };
}

#[test]
fn test_borrowed_into() {
    let utf8_path = Utf8Path::new("test/path");
    all_into!(&Utf8Path, utf8_path);
}

#[test]
fn test_owned_into() {
    let utf8_path_buf = Utf8PathBuf::from("test/path");
    all_into!(Utf8PathBuf, utf8_path_buf);
}

fn test_into<T, U>(orig: T)
where
    T: Into<U>,
{
    let _ = orig.into();
}