mirror of
https://github.com/dnlbauer/xdrfile.git
synced 2026-09-10 14:15:31 +00:00
test appending
This commit is contained in:
86
src/lib.rs
86
src/lib.rs
@@ -502,14 +502,15 @@ mod tests {
|
|||||||
use tempfile::NamedTempFile;
|
use tempfile::NamedTempFile;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_read_write_xtc() -> Result<()> {
|
fn test_write_append_read_xtc() -> Result<()> {
|
||||||
let tempfile = NamedTempFile::new().expect("Could not create temporary file");
|
let tempfile = NamedTempFile::new().expect("Could not create temporary file");
|
||||||
let tmp_path = tempfile.path();
|
let tmp_path = tempfile.path();
|
||||||
|
|
||||||
let natoms = 2;
|
let natoms = 2;
|
||||||
|
|
||||||
|
// write frame 1
|
||||||
let frame = Frame {
|
let frame = Frame {
|
||||||
step: 5,
|
step: 1,
|
||||||
time: 2.0,
|
time: 1.0,
|
||||||
box_vector: [[1.0, 2.0, 3.0], [2.0, 1.0, 3.0], [3.0, 2.0, 1.0]],
|
box_vector: [[1.0, 2.0, 3.0], [2.0, 1.0, 3.0], [3.0, 2.0, 1.0]],
|
||||||
coords: vec![[1.0, 1.0, 1.0], [1.0, 1.0, 1.0]],
|
coords: vec![[1.0, 1.0, 1.0], [1.0, 1.0, 1.0]],
|
||||||
};
|
};
|
||||||
@@ -521,11 +522,28 @@ mod tests {
|
|||||||
}
|
}
|
||||||
f.flush()?;
|
f.flush()?;
|
||||||
|
|
||||||
|
// append frame 2
|
||||||
|
let frame2 = Frame {
|
||||||
|
step: 2,
|
||||||
|
time: 2.0,
|
||||||
|
box_vector: [[1.0, 2.0, 3.0], [2.0, 1.0, 3.0], [3.0, 2.0, 1.0]],
|
||||||
|
coords: vec![[1.0, 1.0, 1.0], [1.0, 1.0, 1.0]],
|
||||||
|
};
|
||||||
|
let mut f = XTCTrajectory::open_append(&tmp_path)?;
|
||||||
|
let write_status = f.write(&frame2);
|
||||||
|
match write_status {
|
||||||
|
Err(_) => panic!("Failed"),
|
||||||
|
Ok(()) => {}
|
||||||
|
}
|
||||||
|
f.flush()?;
|
||||||
|
|
||||||
|
// open trj for read
|
||||||
let mut new_frame = Frame::with_len(natoms);
|
let mut new_frame = Frame::with_len(natoms);
|
||||||
let mut f = XTCTrajectory::open_read(tmp_path)?;
|
let mut f = XTCTrajectory::open_read(tmp_path)?;
|
||||||
let num_atoms = f.get_num_atoms()?;
|
let num_atoms = f.get_num_atoms()?;
|
||||||
assert_eq!(num_atoms, natoms);
|
assert_eq!(num_atoms, natoms);
|
||||||
|
|
||||||
|
// check frame 1 ...
|
||||||
let read_status = f.read(&mut new_frame);
|
let read_status = f.read(&mut new_frame);
|
||||||
match read_status {
|
match read_status {
|
||||||
Err(e) => assert!(false, "{:?}", e),
|
Err(e) => assert!(false, "{:?}", e),
|
||||||
@@ -537,22 +555,36 @@ mod tests {
|
|||||||
assert_approx_eq!(new_frame.time, frame.time);
|
assert_approx_eq!(new_frame.time, frame.time);
|
||||||
assert_eq!(new_frame.box_vector, frame.box_vector);
|
assert_eq!(new_frame.box_vector, frame.box_vector);
|
||||||
assert_eq!(new_frame.coords, frame.coords);
|
assert_eq!(new_frame.coords, frame.coords);
|
||||||
|
|
||||||
|
// and check frame 1 ...
|
||||||
|
let read_status = f.read(&mut new_frame);
|
||||||
|
match read_status {
|
||||||
|
Err(e) => assert!(false, "{:?}", e),
|
||||||
|
Ok(()) => {}
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_eq!(new_frame.len(), frame2.len());
|
||||||
|
assert_eq!(new_frame.step, frame2.step);
|
||||||
|
assert_approx_eq!(new_frame.time, frame2.time);
|
||||||
|
assert_eq!(new_frame.box_vector, frame2.box_vector);
|
||||||
|
assert_eq!(new_frame.coords, frame2.coords);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_read_write_trr() -> Result<()> {
|
fn test_write_append_read_trr() -> Result<()> {
|
||||||
let tempfile = NamedTempFile::new().expect("Could not create temporary file");
|
let tempfile = NamedTempFile::new().expect("Could not create temporary file");
|
||||||
let tmp_path = tempfile.path();
|
let tmp_path = tempfile.path();
|
||||||
|
|
||||||
let natoms = 2;
|
let natoms = 2;
|
||||||
|
|
||||||
|
// write frame 1
|
||||||
let frame = Frame {
|
let frame = Frame {
|
||||||
step: 5,
|
step: 1,
|
||||||
time: 2.0,
|
time: 1.0,
|
||||||
box_vector: [[1.0, 2.0, 3.0], [2.0, 1.0, 3.0], [3.0, 2.0, 1.0]],
|
box_vector: [[1.0, 2.0, 3.0], [2.0, 1.0, 3.0], [3.0, 2.0, 1.0]],
|
||||||
coords: vec![[1.0, 1.0, 1.0], [1.0, 1.0, 1.0]],
|
coords: vec![[1.0, 1.0, 1.0], [1.0, 1.0, 1.0]],
|
||||||
};
|
};
|
||||||
let mut f = TRRTrajectory::open_write(tmp_path)?;
|
let mut f = TRRTrajectory::open_write(&tmp_path)?;
|
||||||
let write_status = f.write(&frame);
|
let write_status = f.write(&frame);
|
||||||
match write_status {
|
match write_status {
|
||||||
Err(_) => panic!("Failed"),
|
Err(_) => panic!("Failed"),
|
||||||
@@ -560,11 +592,28 @@ mod tests {
|
|||||||
}
|
}
|
||||||
f.flush()?;
|
f.flush()?;
|
||||||
|
|
||||||
|
// append frame 2
|
||||||
|
let frame2 = Frame {
|
||||||
|
step: 2,
|
||||||
|
time: 2.0,
|
||||||
|
box_vector: [[1.0, 2.0, 3.0], [2.0, 1.0, 3.0], [3.0, 2.0, 1.0]],
|
||||||
|
coords: vec![[1.0, 1.0, 1.0], [1.0, 1.0, 1.0]],
|
||||||
|
};
|
||||||
|
let mut f = TRRTrajectory::open_append(&tmp_path)?;
|
||||||
|
let write_status = f.write(&frame2);
|
||||||
|
match write_status {
|
||||||
|
Err(_) => panic!("Failed"),
|
||||||
|
Ok(()) => {}
|
||||||
|
}
|
||||||
|
f.flush()?;
|
||||||
|
|
||||||
|
// open trj for read
|
||||||
let mut new_frame = Frame::with_len(natoms);
|
let mut new_frame = Frame::with_len(natoms);
|
||||||
let mut f = TRRTrajectory::open_read(tmp_path)?;
|
let mut f = TRRTrajectory::open_read(tmp_path)?;
|
||||||
// let num_atoms = f.get_num_atoms()?;
|
let num_atoms = f.get_num_atoms()?;
|
||||||
// assert_eq!(num_atoms, natoms);
|
assert_eq!(num_atoms, natoms);
|
||||||
|
|
||||||
|
// check frame 1 ...
|
||||||
let read_status = f.read(&mut new_frame);
|
let read_status = f.read(&mut new_frame);
|
||||||
match read_status {
|
match read_status {
|
||||||
Err(e) => assert!(false, "{:?}", e),
|
Err(e) => assert!(false, "{:?}", e),
|
||||||
@@ -573,9 +622,22 @@ mod tests {
|
|||||||
|
|
||||||
assert_eq!(new_frame.len(), frame.len());
|
assert_eq!(new_frame.len(), frame.len());
|
||||||
assert_eq!(new_frame.step, frame.step);
|
assert_eq!(new_frame.step, frame.step);
|
||||||
assert_eq!(new_frame.time, frame.time);
|
assert_approx_eq!(new_frame.time, frame.time);
|
||||||
assert_eq!(new_frame.box_vector, frame.box_vector);
|
assert_eq!(new_frame.box_vector, frame.box_vector);
|
||||||
assert_eq!(new_frame.coords, frame.coords);
|
assert_eq!(new_frame.coords, frame.coords);
|
||||||
|
|
||||||
|
// and check frame 1 ...
|
||||||
|
let read_status = f.read(&mut new_frame);
|
||||||
|
match read_status {
|
||||||
|
Err(e) => assert!(false, "{:?}", e),
|
||||||
|
Ok(()) => {}
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_eq!(new_frame.len(), frame2.len());
|
||||||
|
assert_eq!(new_frame.step, frame2.step);
|
||||||
|
assert_approx_eq!(new_frame.time, frame2.time);
|
||||||
|
assert_eq!(new_frame.box_vector, frame2.box_vector);
|
||||||
|
assert_eq!(new_frame.coords, frame2.coords);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user