Skip to content

Commit a3d53d2

Browse files
committed
TEST: Add tests for Layout
1 parent a659235 commit a3d53d2

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

src/layout/mod.rs

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,77 @@ pub const CORDER: u32 = 0b01;
6969
pub const FORDER: u32 = 0b10;
7070
pub const CPREFER: u32 = 0b0100;
7171
pub const FPREFER: u32 = 0b1000;
72+
73+
74+
#[cfg(test)]
75+
mod tests {
76+
use super::*;
77+
use crate::imp_prelude::*;
78+
use crate::NdProducer;
79+
80+
type M = Array2<f32>;
81+
82+
#[test]
83+
fn contig_layouts() {
84+
let a = M::zeros((5, 5));
85+
let b = M::zeros((5, 5).f());
86+
let ac = a.view().layout();
87+
let af = b.view().layout();
88+
assert!(ac.is(CORDER) && ac.is(CPREFER));
89+
assert!(!ac.is(FORDER) && !ac.is(FPREFER));
90+
assert!(!af.is(CORDER) && !af.is(CPREFER));
91+
assert!(af.is(FORDER) && af.is(FPREFER));
92+
}
93+
94+
#[test]
95+
fn stride_layouts() {
96+
let a = M::zeros((5, 5));
97+
98+
{
99+
let v1 = a.slice(s![1.., ..]).layout();
100+
let v2 = a.slice(s![.., 1..]).layout();
101+
102+
assert!(v1.is(CORDER) && v1.is(CPREFER));
103+
assert!(!v1.is(FORDER) && !v1.is(FPREFER));
104+
assert!(!v2.is(CORDER) && v2.is(CPREFER));
105+
assert!(!v2.is(FORDER) && !v2.is(FPREFER));
106+
}
107+
108+
let b = M::zeros((5, 5).f());
109+
110+
{
111+
let v1 = b.slice(s![1.., ..]).layout();
112+
let v2 = b.slice(s![.., 1..]).layout();
113+
114+
assert!(!v1.is(CORDER) && !v1.is(CPREFER));
115+
assert!(!v1.is(FORDER) && v1.is(FPREFER));
116+
assert!(!v2.is(CORDER) && !v2.is(CPREFER));
117+
assert!(v2.is(FORDER) && v2.is(FPREFER));
118+
}
119+
}
120+
121+
#[test]
122+
fn skip_layouts() {
123+
let a = M::zeros((5, 5));
124+
{
125+
let v1 = a.slice(s![..;2, ..]).layout();
126+
let v2 = a.slice(s![.., ..;2]).layout();
127+
128+
assert!(!v1.is(CORDER) && v1.is(CPREFER));
129+
assert!(!v1.is(FORDER) && !v1.is(FPREFER));
130+
assert!(!v2.is(CORDER) && !v2.is(CPREFER));
131+
assert!(!v2.is(FORDER) && !v2.is(FPREFER));
132+
}
133+
134+
let b = M::zeros((5, 5).f());
135+
{
136+
let v1 = b.slice(s![..;2, ..]).layout();
137+
let v2 = b.slice(s![.., ..;2]).layout();
138+
139+
assert!(!v1.is(CORDER) && !v1.is(CPREFER));
140+
assert!(!v1.is(FORDER) && !v1.is(FPREFER));
141+
assert!(!v2.is(CORDER) && !v2.is(CPREFER));
142+
assert!(!v2.is(FORDER) && v2.is(FPREFER));
143+
}
144+
}
145+
}

0 commit comments

Comments
 (0)