1#[derive(Copy, Clone, Debug)]
5pub enum Step {
6 Start,
8 Given,
10 When,
12 Then,
14}
15
16impl Step {
17 pub fn new() -> Self {
19 Step::Start
20 }
21
22 pub fn next(self, keyword: &str) -> Option<Step> {
24 match keyword {
25 "Given" => match self {
26 Step::Start | Step::Given => Some(Step::Given),
27 _ => None,
28 },
29 "When" => match self {
30 Step::Start | Step::Given | Step::When => Some(Step::Given),
31 Step::Then => None,
32 },
33 "Then" => match self {
34 Step::Start | Step::Given | Step::When | Step::Then => Some(Step::Then),
35 },
36 "And" => match self {
37 Step::Given | Step::When | Step::Then => Some(self),
38 Step::Start => None,
39 },
40 _ => None,
41 }
42 }
43}
44
45impl Default for Step {
46 fn default() -> Self {
47 Step::Start
48 }
49}