steel_core/player/
container_counter.rs1#[derive(Debug, Clone, Copy, Default)]
3pub(super) struct ContainerCounter {
4 current: u8,
5}
6
7impl ContainerCounter {
8 #[must_use]
9 pub(super) const fn new() -> Self {
10 Self { current: 0 }
11 }
12
13 pub(super) const fn next(&mut self) -> u8 {
14 self.current = (self.current % 100) + 1;
15 self.current
16 }
17}
18
19#[cfg(test)]
20mod tests {
21 use super::ContainerCounter;
22
23 #[test]
24 fn starts_at_one() {
25 let mut counter = ContainerCounter::new();
26
27 assert_eq!(counter.next(), 1);
28 }
29
30 #[test]
31 fn wraps_after_one_hundred() {
32 let mut counter = ContainerCounter::new();
33
34 for expected in 1..=100 {
35 assert_eq!(counter.next(), expected);
36 }
37 assert_eq!(counter.next(), 1);
38 }
39}