Skip to content

Commit d3f0dcb

Browse files
committed
Add simple round-trip test for npz
1 parent b7e27b6 commit d3f0dcb

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed

tests/integration/main.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ use std::io::{self, Read};
66
use std::ops::{Deref, DerefMut};
77

88
mod examples;
9+
#[cfg(feature = "npz")]
10+
mod npz;
911
mod primitive;
1012
mod round_trip;
1113

tests/integration/npz.rs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
//! .npz examples.
2+
3+
use ndarray::{array, Array2};
4+
use ndarray_npy::{NpzReader, NpzWriter};
5+
use std::{error::Error, io::Cursor};
6+
7+
#[test]
8+
fn round_trip_npz() -> Result<(), Box<dyn Error>> {
9+
let mut buf = Vec::<u8>::new();
10+
11+
let arr1 = array![[1i32, 3, 0], [4, 7, -1]];
12+
let arr2 = array![[9i32, 6], [-5, 2], [3, -1]];
13+
14+
{
15+
let mut writer = NpzWriter::new(Cursor::new(&mut buf));
16+
writer.add_array("arr1", &arr1)?;
17+
writer.add_array("arr2", &arr2)?;
18+
writer.finish()?;
19+
}
20+
21+
{
22+
let mut reader = NpzReader::new(Cursor::new(&buf))?;
23+
assert!(!reader.is_empty());
24+
assert_eq!(reader.len(), 2);
25+
assert_eq!(
26+
reader.names()?,
27+
vec!["arr1".to_string(), "arr2".to_string()],
28+
);
29+
{
30+
let by_name: Array2<i32> = reader.by_name("arr1")?;
31+
assert_eq!(by_name, arr1);
32+
}
33+
{
34+
let by_name: Array2<i32> = reader.by_name("arr1.npy")?;
35+
assert_eq!(by_name, arr1);
36+
}
37+
{
38+
let by_name: Array2<i32> = reader.by_name("arr2")?;
39+
assert_eq!(by_name, arr2);
40+
}
41+
{
42+
let by_name: Array2<i32> = reader.by_name("arr2.npy")?;
43+
assert_eq!(by_name, arr2);
44+
}
45+
{
46+
let res: Result<Array2<i32>, _> = reader.by_name("arr1.npy.npy");
47+
assert!(res.is_err());
48+
}
49+
}
50+
51+
Ok(())
52+
}

0 commit comments

Comments
 (0)