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 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
|
use rstest::rstest;
use time::Weekday::{self, *};
#[rstest]
#[case(Sunday, Saturday)]
#[case(Monday, Sunday)]
#[case(Tuesday, Monday)]
#[case(Wednesday, Tuesday)]
#[case(Thursday, Wednesday)]
#[case(Friday, Thursday)]
#[case(Saturday, Friday)]
fn previous(#[case] current: Weekday, #[case] expected: Weekday) {
assert_eq!(current.previous(), expected);
}
#[rstest]
#[case(Sunday, Monday)]
#[case(Monday, Tuesday)]
#[case(Tuesday, Wednesday)]
#[case(Wednesday, Thursday)]
#[case(Thursday, Friday)]
#[case(Friday, Saturday)]
#[case(Saturday, Sunday)]
fn next(#[case] current: Weekday, #[case] expected: Weekday) {
assert_eq!(current.next(), expected);
}
#[rstest]
#[case(Sunday, 0, Sunday)]
#[case(Sunday, 1, Monday)]
#[case(Sunday, 2, Tuesday)]
#[case(Sunday, 3, Wednesday)]
#[case(Sunday, 4, Thursday)]
#[case(Sunday, 5, Friday)]
#[case(Sunday, 6, Saturday)]
#[case(Monday, 0, Monday)]
#[case(Monday, 1, Tuesday)]
#[case(Monday, 2, Wednesday)]
#[case(Monday, 3, Thursday)]
#[case(Monday, 4, Friday)]
#[case(Monday, 5, Saturday)]
#[case(Monday, 6, Sunday)]
#[case(Sunday, 7, Sunday)]
#[case(Sunday, u8::MAX, Wednesday)]
#[case(Monday, 7, Monday)]
#[case(Monday, u8::MAX, Thursday)]
fn nth_next(#[case] current: Weekday, #[case] n: u8, #[case] expected: Weekday) {
assert_eq!(current.nth_next(n), expected);
}
#[rstest]
#[case(Sunday, 0, Sunday)]
#[case(Sunday, 1, Saturday)]
#[case(Sunday, 2, Friday)]
#[case(Sunday, 3, Thursday)]
#[case(Sunday, 4, Wednesday)]
#[case(Sunday, 5, Tuesday)]
#[case(Sunday, 6, Monday)]
#[case(Monday, 0, Monday)]
#[case(Monday, 1, Sunday)]
#[case(Monday, 2, Saturday)]
#[case(Monday, 3, Friday)]
#[case(Monday, 4, Thursday)]
#[case(Monday, 5, Wednesday)]
#[case(Monday, 6, Tuesday)]
#[case(Sunday, 7, Sunday)]
#[case(Sunday, u8::MAX, Thursday)]
#[case(Monday, 7, Monday)]
#[case(Monday, u8::MAX, Friday)]
fn nth_prev(#[case] current: Weekday, #[case] n: u8, #[case] expected: Weekday) {
assert_eq!(current.nth_prev(n), expected);
}
#[rstest]
#[case(Monday, 1)]
#[case(Tuesday, 2)]
#[case(Wednesday, 3)]
#[case(Thursday, 4)]
#[case(Friday, 5)]
#[case(Saturday, 6)]
#[case(Sunday, 7)]
fn number_from_monday(#[case] weekday: Weekday, #[case] expected: u8) {
assert_eq!(weekday.number_from_monday(), expected);
}
#[rstest]
#[case(Sunday, 1)]
#[case(Monday, 2)]
#[case(Tuesday, 3)]
#[case(Wednesday, 4)]
#[case(Thursday, 5)]
#[case(Friday, 6)]
#[case(Saturday, 7)]
fn number_from_sunday(#[case] weekday: Weekday, #[case] expected: u8) {
assert_eq!(weekday.number_from_sunday(), expected);
}
#[rstest]
#[case(Monday, 0)]
#[case(Tuesday, 1)]
#[case(Wednesday, 2)]
#[case(Thursday, 3)]
#[case(Friday, 4)]
#[case(Saturday, 5)]
#[case(Sunday, 6)]
fn number_days_from_monday(#[case] weekday: Weekday, #[case] expected: u8) {
assert_eq!(weekday.number_days_from_monday(), expected);
}
#[rstest]
#[case(Sunday, 0)]
#[case(Monday, 1)]
#[case(Tuesday, 2)]
#[case(Wednesday, 3)]
#[case(Thursday, 4)]
#[case(Friday, 5)]
#[case(Saturday, 6)]
fn number_days_from_sunday(#[case] weekday: Weekday, #[case] expected: u8) {
assert_eq!(weekday.number_days_from_sunday(), expected);
}
#[rstest]
#[case(Monday, "Monday")]
#[case(Tuesday, "Tuesday")]
#[case(Wednesday, "Wednesday")]
#[case(Thursday, "Thursday")]
#[case(Friday, "Friday")]
#[case(Saturday, "Saturday")]
#[case(Sunday, "Sunday")]
fn display(#[case] weekday: Weekday, #[case] expected: &str) {
assert_eq!(weekday.to_string(), expected);
}
#[rstest]
#[case("Monday", Ok(Monday))]
#[case("Tuesday", Ok(Tuesday))]
#[case("Wednesday", Ok(Wednesday))]
#[case("Thursday", Ok(Thursday))]
#[case("Friday", Ok(Friday))]
#[case("Saturday", Ok(Saturday))]
#[case("Sunday", Ok(Sunday))]
#[case("foo", Err(time::error::InvalidVariant))]
fn from_str(#[case] input: &str, #[case] expected: Result<Weekday, time::error::InvalidVariant>) {
assert_eq!(input.parse::<Weekday>(), expected);
}
|