Skip to content

Commit 7fdb265

Browse files
author
Jeromos Kovacs
committed
fix: organized imports, modules
1 parent 50a8268 commit 7fdb265

File tree

3 files changed

+218
-221
lines changed

3 files changed

+218
-221
lines changed

src/app.rs

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
pub use area::Area;
22
pub use cell::Cell;
3-
use ratatui::crossterm::event::{self, poll, Event, KeyEventKind};
3+
use ratatui::crossterm::event::{self, Event, KeyEventKind};
44
use ratatui::{backend::Backend, Terminal};
55
pub use shapes::HandleError;
6-
use std::io;
7-
use std::time::Duration;
6+
use std::{io, time::Duration};
87
pub use universe::Universe;
98

109
/// Default poll duration
11-
pub const DEF_DUR: Duration = Duration::from_millis(400);
10+
const DEF_DUR: Duration = Duration::from_millis(400);
1211

1312
mod area;
1413
mod cell;
@@ -144,7 +143,7 @@ impl App {
144143
terminal.draw(|f| ui::ui(f, self))?;
145144

146145
// Wait up to `poll_t` for another event
147-
if poll(self.poll_t)? {
146+
if event::poll(self.poll_t)? {
148147
if let Event::Key(key) = event::read()? {
149148
if key.kind != KeyEventKind::Press {
150149
continue;

src/app/shapes.rs

+40-216
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
use area::Area;
2-
use cell::Cell;
3-
use universe::Universe;
4-
51
use super::*;
62

73
pub const N: usize = 4;
84

5+
#[cfg(test)]
6+
mod tests;
7+
98
#[derive(Debug)]
109
pub enum HandleError {
1110
OutOfRange,
@@ -34,15 +33,43 @@ pub fn get_special(i: usize, area: Area) -> Universe {
3433
}
3534
}
3635

37-
// height: 5
38-
// width: 5
39-
// 01234
40-
// 0.....0
41-
// 1.---.1
42-
// 2.|.|.2
43-
// 3.---.3
44-
// 4.....4
45-
// 01234
36+
pub fn rand(area: Area) -> Universe {
37+
let cells = (0..area.len()).map(|_i| fastrand::bool().into()).collect();
38+
Universe { area, cells }
39+
}
40+
41+
pub fn stripes(area: Area) -> Universe {
42+
let cells = (0..area.len())
43+
.map(|i| {
44+
if i % 2 == 0 || i % 7 == 0 {
45+
Cell::Alive
46+
} else {
47+
Cell::Dead
48+
}
49+
})
50+
.collect();
51+
Universe { area, cells }
52+
}
53+
54+
pub fn empty(area: Area) -> Universe {
55+
let cells = vec![Cell::Dead; area.len()];
56+
Universe::new(area, cells)
57+
}
58+
59+
pub fn full(area: Area) -> Universe {
60+
let cells = vec![Cell::Alive; area.len()];
61+
Universe { area, cells }
62+
}
63+
64+
/// height: 5
65+
/// width: 5
66+
/// 01234
67+
/// 0.....0
68+
/// 1.---.1
69+
/// 2.|.|.2
70+
/// 3.---.3
71+
/// 4.....4
72+
/// 01234
4673
pub fn frame(area: Area) -> Universe {
4774
let mut univ = empty(area);
4875
if area.height < 3 || area.width < 3 {
@@ -63,64 +90,6 @@ pub fn frame(area: Area) -> Universe {
6390
}
6491
univ
6592
}
66-
#[test]
67-
fn frame_test00() {
68-
let area = Area::new(3, 2);
69-
let univ = Universe::from_vec_str(&["___".to_owned(), "___".to_owned()]);
70-
let frame = frame(area);
71-
print!("{frame}");
72-
assert_eq!(univ, frame);
73-
}
74-
#[test]
75-
fn frame_test0() {
76-
let area = Area::new(3, 3);
77-
let univ = Universe::from_vec_str(&["___".to_owned(), "_#_".to_owned(), "___".to_owned()]);
78-
let frame = frame(area);
79-
print!("{frame}");
80-
assert_eq!(univ, frame);
81-
}
82-
#[test]
83-
fn frame_test1() {
84-
let area = Area::new(4, 4);
85-
let univ = Universe::from_vec_str(&[
86-
"____".to_owned(),
87-
"_##_".to_owned(),
88-
"_##_".to_owned(),
89-
"____".to_owned(),
90-
]);
91-
let frame = frame(area);
92-
print!("{frame}");
93-
assert_eq!(univ, frame);
94-
}
95-
#[test]
96-
fn frame_test2() {
97-
let area = Area::new(5, 5);
98-
let univ = Universe::from_vec_str(&[
99-
"_____".to_owned(),
100-
"_###_".to_owned(),
101-
"_#_#_".to_owned(),
102-
"_###_".to_owned(),
103-
"_____".to_owned(),
104-
]);
105-
let frame = frame(area);
106-
print!("{frame}");
107-
assert_eq!(univ, frame);
108-
}
109-
#[test]
110-
fn frame_test3() {
111-
let area = Area::new(6, 6);
112-
let univ = Universe::from_vec_str(&[
113-
"______".to_owned(),
114-
"_####_".to_owned(),
115-
"_#__#_".to_owned(),
116-
"_#__#_".to_owned(),
117-
"_####_".to_owned(),
118-
"______".to_owned(),
119-
]);
120-
let frame = frame(area);
121-
print!("{frame}");
122-
assert_eq!(univ, frame);
123-
}
12493

12594
pub const COPPERHEAD: &str = "\
12695
_____#_##___
@@ -154,168 +123,23 @@ __#
154123
#_#
155124
_##";
156125

157-
#[test]
158-
fn featherweight_spaceship_test() {
159-
let area = Area::new(3, 3);
160-
let m = Universe::from_str(FEATHERWEIGTH_SPACESHIP);
161-
assert_eq!(m.area, area);
162-
dbg!(&m);
163-
let alive = [(0u8, 2u8), (1u8, 0u8), (1u8, 2u8), (2u8, 1u8), (2u8, 2u8)];
164-
for alive_cell in alive {
165-
dbg!(alive_cell);
166-
assert_eq!(m.get(alive_cell), Some(&Cell::Alive));
167-
}
168-
assert!(m.get((3u8, 3u8)).is_none());
169-
assert!(m.get((3u8, 4u8)).is_none());
170-
assert!(m.get((4u8, 3u8)).is_none());
171-
}
172-
173126
/// 8x4
174127
pub const RABBITS: &str = "\
175128
#_____#_
176129
__#___#_
177130
__#__#_#
178131
_#_#____";
179132

180-
#[test]
181-
fn rabbits_test() {
182-
let area = Area::new(8, 4);
183-
let m = Universe::from_str(RABBITS);
184-
assert_eq!(m.area, area);
185-
dbg!(&m);
186-
let alive = [
187-
(0u8, 0u8),
188-
(0u8, 6u8),
189-
(1u8, 2u8),
190-
(1u8, 6u8),
191-
(2u8, 2u8),
192-
(2u8, 5u8),
193-
(2u8, 7u8),
194-
(3u8, 1u8),
195-
(3u8, 3u8),
196-
];
197-
for alive_cell in alive {
198-
dbg!(alive_cell);
199-
assert_eq!(m.get(alive_cell), Some(&Cell::Alive));
200-
}
201-
assert!(m.get((4u8, 8u8)).is_none());
202-
assert!(m.get((8u8, 4u8)).is_none());
203-
}
204-
205133
/// 3×5
206134
pub const BONK_TIE: &str = "\
207135
##_
208136
##_
209137
__#
210138
__#
211139
__#";
212-
#[test]
213-
fn bonk_tie_test() {
214-
let area = Area::new(3, 5);
215-
let m = Universe::from_str(BONK_TIE);
216-
assert_eq!(m.area, area);
217-
dbg!(&m);
218-
let alive = [
219-
(0u8, 0u8),
220-
(0u8, 1u8),
221-
(1u8, 0u8),
222-
(1u8, 1u8),
223-
(2u8, 2u8),
224-
(3u8, 2u8),
225-
(4u8, 2u8),
226-
];
227-
for alive_cell in alive {
228-
dbg!(alive_cell);
229-
assert_eq!(m.get(alive_cell), Some(&Cell::Alive));
230-
}
231-
assert!(m.get((4u8, 3u8)).is_none());
232-
assert!(m.get((3u8, 4u8)).is_none());
233-
}
234140

235141
/// 7×3
236142
pub const ACORN: &str = "\
237143
_#_____
238144
___#___
239145
##__###";
240-
241-
#[test]
242-
fn acorn_test() {
243-
let area = Area::new(7, 3);
244-
let m = Universe::from_str(ACORN);
245-
assert_eq!(m.area, area);
246-
dbg!(&m);
247-
let alive = [
248-
(0u8, 1u8),
249-
(1u8, 3u8),
250-
(2u8, 0u8),
251-
(2u8, 1u8),
252-
(2u8, 4u8),
253-
(2u8, 5u8),
254-
(2u8, 6u8),
255-
];
256-
for alive_cell in alive {
257-
dbg!(alive_cell);
258-
assert_eq!(m.get(alive_cell), Some(&Cell::Alive));
259-
}
260-
assert!(m.get((4u8, 3u8)).is_none());
261-
assert!(m.get((3u8, 4u8)).is_none());
262-
}
263-
264-
/// `area.len()`
265-
pub fn rand(area: Area) -> Universe {
266-
let cells = (0..area.len()).map(|_i| fastrand::bool().into()).collect();
267-
Universe { area, cells }
268-
}
269-
270-
/// `area.len()`
271-
pub fn stripes(area: Area) -> Universe {
272-
let cells = (0..area.len())
273-
.map(|i| {
274-
if i % 2 == 0 || i % 7 == 0 {
275-
Cell::Alive
276-
} else {
277-
Cell::Dead
278-
}
279-
})
280-
.collect();
281-
Universe { area, cells }
282-
}
283-
#[test]
284-
fn stripes_test() {
285-
let area = Area::new(0, 0);
286-
let m = stripes(area);
287-
assert!(m.cells.is_empty());
288-
assert_eq!(m.area, area);
289-
dbg!(&m);
290-
assert!(m.get((4u8, 3u8)).is_none());
291-
assert!(m.get((3u8, 4u8)).is_none());
292-
assert!(m.get((0u8, 1u8)).is_none());
293-
assert!(m.get((1u8, 0u8)).is_none());
294-
}
295-
296-
pub fn empty(area: Area) -> Universe {
297-
let cells = vec![Cell::Dead; area.len()];
298-
Universe::new(area, cells)
299-
}
300-
301-
/// `area.len()`
302-
pub fn full(area: Area) -> Universe {
303-
let cells = vec![Cell::Alive; area.len()];
304-
Universe { area, cells }
305-
}
306-
#[test]
307-
fn full_test() {
308-
let area = Area::new(4, 3);
309-
let m = full(area);
310-
assert_eq!(m.area, area);
311-
assert!(m.cells.iter().all(|j| *j == Cell::Alive));
312-
dbg!(&m);
313-
for i in 0..m.height() - 1 {
314-
for j in 0..m.width() - 1 {
315-
dbg!((i, j));
316-
assert_eq!(m.get((i, j)), Some(&Cell::Alive));
317-
}
318-
}
319-
assert!(m.get((4u8, 3u8)).is_none());
320-
assert!(m.get((3u8, 4u8)).is_none());
321-
}

0 commit comments

Comments
 (0)