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 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
use super::util;
#[derive(Debug, garde::Validate)]
struct Inner<'a> {
// Double `inner`
#[garde(inner(inner(alphanumeric)))]
inner: &'a [&'a [&'a str]],
}
#[test]
fn alphanumeric_valid() {
util::check_ok(
&[Inner {
inner: &[&["abcd0123"]],
}],
&(),
)
}
#[test]
fn alphanumeric_invalid() {
util::check_fail!(
&[Inner {
inner: &[&["!!!!"]]
}],
&()
)
}
#[derive(Debug, garde::Validate)]
struct NotNestedOption<'a> {
#[garde(inner(alphanumeric))]
inner: Option<&'a str>,
}
#[derive(Debug, garde::Validate)]
struct NestedSliceInsideOption<'a> {
#[garde(inner(inner(alphanumeric)))]
inner: Option<&'a [&'a str]>,
}
#[derive(Debug, garde::Validate)]
struct DoubleNestedSliceInsideOption<'a> {
#[garde(inner(inner(inner(alphanumeric))))]
inner: Option<&'a [&'a [&'a str]]>,
}
#[derive(Debug, garde::Validate)]
struct OptionInsideSlice<'a> {
#[garde(inner(inner(alphanumeric)))]
inner: &'a [Option<&'a str>],
}
#[test]
fn alphanumeric_some_valid() {
util::check_ok(
&[NotNestedOption {
inner: Some("abcd0123"),
}],
&(),
);
util::check_ok(
&[NestedSliceInsideOption {
inner: Some(&["abcd0123"]),
}],
&(),
);
util::check_ok(
&[DoubleNestedSliceInsideOption {
inner: Some(&[&["abcd0123"]]),
}],
&(),
);
util::check_ok(
&[OptionInsideSlice {
inner: &[Some("abcd0123")],
}],
&(),
)
}
#[test]
fn alphanumeric_some_invalid() {
util::check_fail!(
&[NotNestedOption {
inner: Some("!!!!"),
}],
&(),
);
util::check_fail!(
&[NestedSliceInsideOption {
inner: Some(&["!!!!"]),
}],
&(),
);
util::check_fail!(
&[DoubleNestedSliceInsideOption {
inner: Some(&[&["!!!!"]]),
}],
&(),
);
util::check_fail!(
&[OptionInsideSlice {
inner: &[Some("!!!!")],
}],
&(),
)
}
#[test]
fn alphanumeric_none_valid() {
util::check_ok(&[NotNestedOption { inner: None }], &());
util::check_ok(&[NestedSliceInsideOption { inner: None }], &());
util::check_ok(&[DoubleNestedSliceInsideOption { inner: None }], &());
util::check_ok(
&[OptionInsideSlice {
inner: &[None, None],
}],
&(),
)
}
|