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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
//! Serde test.
#![cfg(feature = "serde")]
use serde_test::{assert_tokens, Token};
use iri_string::types::*;
mod utils;
macro_rules! define_tests {
($positive:ident, $negative:ident, ($spec:ident, $kind:ident), $slice:ty, $owned:ty,) => {
define_tests! {
@positive,
$positive,
($spec, $kind),
$slice,
$owned,
}
};
(@positive, $name:ident, ($spec:ident, $kind:ident), $slice:ty, $owned:ty,) => {
#[test]
fn $name() {
for raw in utils::positive(utils::Spec::$spec, utils::Kind::$kind) {
let s = <$slice>::new(raw).expect("Should not fail: valid string");
assert_tokens(&s, &[Token::BorrowedStr(raw)]);
#[cfg(any(feature = "serde-alloc", feature = "serde-std"))]
{
let s = s.to_owned();
assert_tokens(&s, &[Token::BorrowedStr(raw)]);
}
}
}
};
}
define_tests! {
uri,
not_uri,
(Uri, Normal),
UriStr,
UriString,
}
define_tests! {
uri_absolute,
not_uri_absolute,
(Uri, Absolute),
UriAbsoluteStr,
UriAbsoluteString,
}
define_tests! {
uri_reference,
not_uri_reference,
(Uri, Reference),
UriReferenceStr,
UriReferenceString,
}
define_tests! {
uri_relative,
not_uri_relative,
(Uri, Relative),
UriRelativeStr,
UriRelativeString,
}
define_tests! {
iri,
not_iri,
(Iri, Normal),
IriStr,
IriString,
}
define_tests! {
iri_absolute,
not_iri_absolute,
(Iri, Absolute),
IriAbsoluteStr,
IriAbsoluteString,
}
define_tests! {
iri_reference,
not_iri_reference,
(Iri, Reference),
IriReferenceStr,
IriReferenceString,
}
define_tests! {
iri_relative,
not_iri_relative,
(Iri, Relative),
IriRelativeStr,
IriRelativeString,
}
|