diff options
-rw-r--r-- | src/screen.rs | 16 | ||||
-rw-r--r-- | tests/basic.rs | 4 |
2 files changed, 15 insertions, 5 deletions
diff --git a/src/screen.rs b/src/screen.rs index b448a20..5fedee1 100644 --- a/src/screen.rs +++ b/src/screen.rs @@ -1,21 +1,29 @@ use libc; enum ScreenImpl {} -pub struct Screen(*mut ScreenImpl); +pub struct Screen { + pub rows: u32, + pub cols: u32, + + screen_impl: *mut ScreenImpl, +} impl Screen { pub fn new(rows: u32, cols: u32) -> Screen { let screen_impl = unsafe { vt100_screen_new(rows as libc::c_int, cols as libc::c_int) }; - Screen(screen_impl) + Screen { + rows: rows, + cols: cols, + screen_impl: screen_impl, + } } } impl Drop for Screen { fn drop(&mut self) { - let &mut Screen(screen_impl) = self; - unsafe { vt100_screen_delete(screen_impl) }; + unsafe { vt100_screen_delete(self.screen_impl) }; } } diff --git a/tests/basic.rs b/tests/basic.rs index c52a574..68f718a 100644 --- a/tests/basic.rs +++ b/tests/basic.rs @@ -6,6 +6,8 @@ mod tests { #[test] fn object_creation() { - let _ = vt100::Screen::new(24, 80); + let screen = vt100::Screen::new(24, 80); + assert_eq!(screen.rows, 24); + assert_eq!(screen.cols, 80); } } |