You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
1.3 KiB
78 lines
1.3 KiB
use paste::paste;
|
|
|
|
#[test]
|
|
fn test_paste_doc() {
|
|
macro_rules! m {
|
|
($ret:ident) => {
|
|
paste! {
|
|
#[doc = "Create a new [`" $ret "`] object."]
|
|
fn new() -> $ret { todo!() }
|
|
}
|
|
};
|
|
}
|
|
|
|
struct Paste;
|
|
m!(Paste);
|
|
|
|
let _ = new;
|
|
}
|
|
|
|
macro_rules! get_doc {
|
|
(#[doc = $literal:tt]) => {
|
|
$literal
|
|
};
|
|
}
|
|
|
|
#[test]
|
|
fn test_escaping() {
|
|
let doc = paste! {
|
|
get_doc!(#[doc = "s\"" r#"r#""#])
|
|
};
|
|
|
|
let expected = "s\"r#\"";
|
|
assert_eq!(doc, expected);
|
|
}
|
|
|
|
#[test]
|
|
fn test_literals() {
|
|
let doc = paste! {
|
|
get_doc!(#[doc = "int=" 0x1 " bool=" true " float=" 0.01])
|
|
};
|
|
|
|
let expected = "int=0x1 bool=true float=0.01";
|
|
assert_eq!(doc, expected);
|
|
}
|
|
|
|
#[test]
|
|
fn test_case() {
|
|
let doc = paste! {
|
|
get_doc!(#[doc = "HTTP " get:upper "!"])
|
|
};
|
|
|
|
let expected = "HTTP GET!";
|
|
assert_eq!(doc, expected);
|
|
}
|
|
|
|
// https://github.com/dtolnay/paste/issues/63
|
|
#[test]
|
|
fn test_stringify() {
|
|
macro_rules! create {
|
|
($doc:expr) => {
|
|
paste! {
|
|
#[doc = $doc]
|
|
pub struct Struct;
|
|
}
|
|
};
|
|
}
|
|
|
|
macro_rules! forward {
|
|
($name:ident) => {
|
|
create!(stringify!($name));
|
|
};
|
|
}
|
|
|
|
forward!(documentation);
|
|
|
|
let _ = Struct;
|
|
}
|