diff --git a/src/render.rs b/src/render.rs index b6b35b1..944d8d5 100644 --- a/src/render.rs +++ b/src/render.rs @@ -9,7 +9,6 @@ use mockall::automock; pub trait Renderer { fn render(&mut self, step: f32); fn present(&mut self) -> Result<(), Error>; - fn finish(&mut self) -> Result<(), Error>; } pub struct SamplerRenderer { @@ -42,10 +41,6 @@ impl Renderer for SamplerRenderer { fn present(&mut self) -> Result<(), Error> { self.surface.present() } - - fn finish(&mut self) -> Result<(), Error> { - self.surface.finish() - } } #[cfg(test)] @@ -91,16 +86,4 @@ mod test { renderer.present().unwrap(); } - - #[test] - fn finish() { - let mut surface = MockSurface::new(); - let sampler = MockSampler::new(); - - surface.expect_finish().once().returning(|| Ok(())); - - let mut renderer = SamplerRenderer::new(surface, sampler); - - renderer.finish().unwrap(); - } } \ No newline at end of file diff --git a/src/runner.rs b/src/runner.rs index 217a7cc..ce26536 100644 --- a/src/runner.rs +++ b/src/runner.rs @@ -26,7 +26,7 @@ impl Runner { self.renderer.present()?; self.timer.sleep(); } - self.renderer.finish() + Ok(()) } } @@ -59,8 +59,6 @@ mod test { renderer.expect_present().once().in_sequence(seq).returning(|| Ok(())); timer.expect_sleep().once().in_sequence(seq).return_const(()); - renderer.expect_finish().once().in_sequence(seq).returning(|| Ok(())); - let runner = Runner::new(Duration::from_secs(4), timer, renderer); runner.run().unwrap(); diff --git a/src/surface.rs b/src/surface.rs index c3f2029..0f99459 100644 --- a/src/surface.rs +++ b/src/surface.rs @@ -14,7 +14,6 @@ pub trait Surface { fn draw(&mut self, x: usize, y: usize, char: char, color: Color); fn clear(&mut self, x: usize, y: usize); fn present(&mut self) -> Result<(), Error>; - fn finish(&mut self) -> Result<(), Error>; } pub struct WriteSurface { @@ -89,10 +88,13 @@ impl Surface for WriteSurface { self.out.flush()?; Ok(()) } +} - fn finish(&mut self) -> Result<(), Error> { - self.out.execute(Clear(ClearType::Purge))?; - Ok(()) +impl Drop for WriteSurface { + fn drop(&mut self) { + if let Err(e) = self.out.execute(Clear(ClearType::Purge)) { + println!("{}", e); + } } } @@ -159,25 +161,6 @@ mod test { assert_eq!(8, renderer.height()); } - #[test] - fn finish() { - // Execute - let data = Data::new(); - let mock = MockWrite::new(data.clone()); - let mut renderer = WriteSurface::new(mock, 4, 4); - - renderer.finish().unwrap(); - - // Recreate expectation - let expected = Data::new(); - let mut stream = MockWrite::new(expected.clone()); - - stream.execute(Clear(ClearType::Purge)).unwrap(); - - // Compare - assert_eq!(expected, data); - } - #[test] fn present() { // Execute