File: weekday.rs

package info (click to toggle)
rust-time 0.3.47-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,972 kB
  • sloc: makefile: 2
file content (145 lines) | stat: -rw-r--r-- 3,889 bytes parent folder | download
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);
}