mirror of
https://github.com/ricoriedel/wipe.git
synced 2024-11-25 17:36:38 +00:00
Add finish method
This commit is contained in:
parent
e4116130d9
commit
6871f75d09
@ -6,6 +6,7 @@ use crate::Vector;
|
||||
pub trait Renderer {
|
||||
fn render(&mut self, step: f32);
|
||||
fn present(&mut self) -> Result<(), Error>;
|
||||
fn finish(&mut self) -> Result<(), Error>;
|
||||
}
|
||||
|
||||
pub struct SamplerRenderer {
|
||||
@ -39,6 +40,10 @@ impl Renderer for SamplerRenderer {
|
||||
fn present(&mut self) -> Result<(), Error> {
|
||||
self.surface.present()
|
||||
}
|
||||
|
||||
fn finish(&mut self) -> Result<(), Error> {
|
||||
self.surface.finish()
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
@ -84,4 +89,16 @@ mod test {
|
||||
|
||||
renderer.present().unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn finish() {
|
||||
let mut surface = Box::new(MockSurface::new());
|
||||
let sampler = Box::new(MockSampler::new());
|
||||
|
||||
surface.expect_finish().once().returning(|| Ok(()));
|
||||
|
||||
let mut renderer = SamplerRenderer::new(surface, sampler);
|
||||
|
||||
renderer.finish().unwrap();
|
||||
}
|
||||
}
|
@ -14,6 +14,7 @@ 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<T: Write> {
|
||||
@ -88,11 +89,10 @@ impl<T: Write> Surface for WriteSurface<T> {
|
||||
self.out.flush()?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Write> Drop for WriteSurface<T> {
|
||||
fn drop(&mut self) {
|
||||
self.out.execute(Clear(ClearType::Purge)).unwrap();
|
||||
fn finish(&mut self) -> Result<(), Error> {
|
||||
self.out.execute(Clear(ClearType::Purge))?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
@ -160,13 +160,13 @@ mod test {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn purge() {
|
||||
fn finish() {
|
||||
// Execute
|
||||
let data = Data::new();
|
||||
let mock = MockWrite::new(data.clone());
|
||||
let renderer = WriteSurface::new(mock, 4, 4);
|
||||
let mut renderer = WriteSurface::new(mock, 4, 4);
|
||||
|
||||
drop(renderer);
|
||||
renderer.finish().unwrap();
|
||||
|
||||
// Recreate expectation
|
||||
let expected = Data::new();
|
||||
|
Loading…
Reference in New Issue
Block a user