1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4
5include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
6
7#[cfg(test)]
8mod tests {
9 use std::ffi::CStr;
10 use std::ffi::CString;
11 use std::ptr;
12
13 use super::*;
14
15 #[test]
16 fn basic() {
17 let mut fp: *mut MS3FileParam = ptr::null_mut();
18 let mut msr: *mut MS3Record = unsafe { msr3_init(ptr::null_mut()) };
19
20 let flags: u32 = MSF_UNPACKDATA;
21 let verbose: i8 = 0;
22 let mspath = CString::new("tests/multiple.seed").unwrap();
23
24 let rv = unsafe {
25 ms3_readmsr_r(
26 (&mut fp) as *mut *mut MS3FileParam,
27 (&mut msr) as *mut *mut MS3Record,
28 mspath.as_ptr(),
29 flags,
30 verbose,
31 )
32 };
33 assert_eq!(rv, MS_NOERROR as i32);
34 let ms = unsafe { *msr };
35 assert_eq!(ms.reclen, 512);
36 let sid = unsafe { CStr::from_ptr(ms.sid.as_ptr()) }.to_str().unwrap();
37 assert_eq!(sid, "FDSN:IU_ANMO_00_B_H_Z");
38 assert_eq!(ms.starttime, 1267252200019538000);
39 assert_eq!(ms.samprate, 20.0);
40 assert_eq!(ms.encoding, DE_STEIM2 as i16);
41 assert_eq!(ms.pubversion, 4);
42 assert_eq!(ms.samplecnt, 419);
43 assert_eq!(ms.crc, 0);
44 assert_eq!(ms.extralength, 33);
45 assert_eq!(ms.datalength, 448);
46 assert!(!ms.extra.is_null());
47 assert!(!ms.datasamples.is_null());
48 assert_eq!(ms.datasize, 419 * 4);
49 assert_eq!(ms.numsamples, 419);
50 assert_eq!(ms.sampletype, 'i' as std::os::raw::c_char);
51
52 let rv = unsafe {
53 ms3_readmsr_r(
54 (&mut fp) as *mut *mut MS3FileParam,
55 (&mut msr) as *mut *mut MS3Record,
56 mspath.as_ptr(),
57 flags,
58 verbose,
59 )
60 };
61
62 assert_eq!(rv, MS_NOERROR as i32);
63 let ms = unsafe { *msr };
64 assert_eq!(ms.reclen, 512);
65 let sid = unsafe { CStr::from_ptr(ms.sid.as_ptr()) }.to_str().unwrap();
66 assert_eq!(sid, "FDSN:IU_ANMO_00_B_H_Z");
67 assert_eq!(ms.starttime, 1267252220969538000);
68 assert_eq!(ms.samprate, 20.0);
69 assert_eq!(ms.encoding, DE_STEIM2 as i16);
70 assert_eq!(ms.pubversion, 4);
71 assert_eq!(ms.samplecnt, 368);
72 assert_eq!(ms.crc, 0);
73 assert_eq!(ms.extralength, 33);
74 assert_eq!(ms.datalength, 448);
75 assert!(!ms.extra.is_null());
76 assert!(!ms.datasamples.is_null());
77 assert_eq!(ms.datasize, 368 * 4);
78 assert_eq!(ms.numsamples, 368);
79 assert_eq!(ms.sampletype, 'i' as std::os::raw::c_char);
80
81 unsafe {
82 ms3_readmsr_r(
83 (&mut fp) as *mut *mut MS3FileParam,
84 (&mut msr) as *mut *mut MS3Record,
85 ptr::null(),
86 flags,
87 verbose,
88 );
89 }
90 }
91}