X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=test%2Flogger_test.rs;h=bbf8dd56b2254448275e030b613b5d49b932a86d;hb=4b82362597c3908db091615b403663b8f39b67fa;hp=93568bb3f85ea00f7fe7bbfd4b032d448bbd27b0;hpb=7ec91a770baf0bf3514cef995d310890630a7869;p=gps-watch.git diff --git a/test/logger_test.rs b/test/logger_test.rs index 93568bb..bbf8dd5 100644 --- a/test/logger_test.rs +++ b/test/logger_test.rs @@ -80,10 +80,12 @@ impl Pipe { unsafe { extern { - fn pipe(pipefd: *mut i32) -> i32; + fn pipe2(pipefd: *mut i32, flags: i32) -> i32; } - pipe(pipe_fd.as_mut_ptr()); + const O_NONBLOCK : i32 = 0x800; + + pipe2(pipe_fd.as_mut_ptr(), O_NONBLOCK); } Pipe { @@ -349,6 +351,39 @@ fn get_recording_valid() { assert!(logger.get_recording(1, &mut yenc_buffer).is_ok()); } +// Verifies that Logger::list_recordings() shows an empty listing +// if there are no recordings. +#[test] +fn list_recordings0() { + let pipe = Pipe::new(); + + let mut file = unsafe { std::fs::File::from_raw_fd(pipe.write_fd()) }; + + let mut ls_buffer_space = [0u8; 4096]; + let mut ls_buffer = Buffer::alloc(); + + let user_data = (&mut file as *mut std::fs::File) as *mut BufferUserData; + + ls_buffer.init(ls_buffer_space.as_mut_ptr(), + ls_buffer_space.len(), + flush_write_buffer, + user_data); + + let mut fake_storage = FakeStorage::new(); + + let mut logger = Logger::new(&mut fake_storage); + logger.init(); + + logger.list_recordings(&mut ls_buffer); + + let mut file = unsafe { std::fs::File::from_raw_fd(pipe.read_fd()) }; + + let mut listing_raw = [0u8; 256]; + + // There are no recordings, so there's no data in the pipe either. + assert!(file.read(&mut listing_raw).is_err()); +} + // Verifies that Logger::list_recordings() shows a listing // of a single recording in the very first sector. #[test]