Skip to content

Commit cd66a3d

Browse files
committed
Use macro for testing permutate
1 parent c2b3fdc commit cd66a3d

File tree

1 file changed

+38
-52
lines changed

1 file changed

+38
-52
lines changed

tests/lu.rs

Lines changed: 38 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -16,73 +16,59 @@ fn all_close(a: Array<f64, (Ix, Ix)>, b: Array<f64, (Ix, Ix)>) {
1616
b);
1717
}
1818
}
19-
#[test]
20-
fn permutate() {
21-
let a = arr2(&[[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]]);
22-
println!("a= \n{:?}", &a);
23-
let p = vec![2, 2, 3]; // replace 1-2
24-
let pa = a.permutated(&p);
25-
println!("permutated = \n{:?}", &pa);
26-
all_close(pa, arr2(&[[4., 5., 6.], [1., 2., 3.], [7., 8., 9.]]))
27-
}
2819

20+
macro_rules! test_permutate {
21+
($testname:ident, $permutate:expr, $input:expr, $answer:expr) => {
2922
#[test]
30-
fn permutate_t() {
31-
let a = arr2(&[[1., 4., 7.], [2., 5., 8.], [3., 6., 9.]]).reversed_axes();
23+
fn $testname() {
24+
let a = arr2($input);
3225
println!("a= \n{:?}", &a);
33-
let p = vec![2, 2, 3]; // replace 1-2
26+
let p = $permutate; // replace 1-2
3427
let pa = a.permutated(&p);
3528
println!("permutated = \n{:?}", &pa);
36-
all_close(pa, arr2(&[[4., 5., 6.], [1., 2., 3.], [7., 8., 9.]]))
29+
all_close(pa, arr2($answer))
3730
}
38-
39-
#[test]
40-
fn permutate_3x4() {
41-
let a = arr2(&[[1., 4., 7., 10.], [2., 5., 8., 11.], [3., 6., 9., 12.]]);
42-
println!("a= \n{:?}", &a);
43-
let p = vec![1, 3, 3]; // replace 2-3
44-
println!("permutation = \n{:?}", &p);
45-
let pa = a.permutated(&p);
46-
println!("permutated = \n{:?}", &pa);
47-
all_close(pa,
48-
arr2(&[[1., 4., 7., 10.], [3., 6., 9., 12.], [2., 5., 8., 11.]]));
31+
}
4932
}
5033

34+
macro_rules! test_permutate_t {
35+
($testname:ident, $permutate:expr, $input:expr, $answer:expr) => {
5136
#[test]
52-
fn permutate_3x4_t() {
53-
let a = arr2(&[[1., 5., 9.], [2., 6., 10.], [3., 7., 11.], [4., 8., 12.]]).reversed_axes();
37+
fn $testname() {
38+
let a = arr2($input).reversed_axes();
5439
println!("a= \n{:?}", &a);
55-
let p = vec![1, 3, 3]; // replace 2-3
56-
println!("permutation = \n{:?}", &p);
40+
let p = $permutate; // replace 1-2
5741
let pa = a.permutated(&p);
5842
println!("permutated = \n{:?}", &pa);
59-
all_close(pa,
60-
arr2(&[[1., 2., 3., 4.], [9., 10., 11., 12.], [5., 6., 7., 8.]]));
43+
all_close(pa, arr2($answer))
6144
}
62-
63-
#[test]
64-
fn permutate_4x3() {
65-
let a = arr2(&[[1., 5., 9.], [2., 6., 10.], [3., 7., 11.], [4., 8., 12.]]);
66-
println!("a= \n{:?}", &a);
67-
let p = vec![4, 2, 3, 4]; // replace 1-4
68-
println!("permutation = \n{:?}", &p);
69-
let pa = a.permutated(&p);
70-
println!("permutated = \n{:?}", &pa);
71-
all_close(pa,
72-
arr2(&[[4., 8., 12.], [2., 6., 10.], [3., 7., 11.], [1., 5., 9.]]))
45+
}
7346
}
7447

75-
#[test]
76-
fn permutate_4x3_t() {
77-
let a = arr2(&[[1., 4., 7., 10.], [2., 5., 8., 11.], [3., 6., 9., 12.]]).reversed_axes();
78-
println!("a= \n{:?}", &a);
79-
let p = vec![4, 2, 3, 4]; // replace 1-4
80-
println!("permutation = \n{:?}", &p);
81-
let pa = a.permutated(&p);
82-
println!("permutated = \n{:?}", &pa);
83-
all_close(pa,
84-
arr2(&[[10., 11., 12.], [4., 5., 6.], [7., 8., 9.], [1., 2., 3.]]))
85-
}
48+
test_permutate!(permutate,
49+
vec![2, 2, 3],
50+
&[[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]],
51+
&[[4., 5., 6.], [1., 2., 3.], [7., 8., 9.]]);
52+
test_permutate_t!(permutate_t,
53+
vec![2, 2, 3],
54+
&[[1., 4., 7.], [2., 5., 8.], [3., 6., 9.]],
55+
&[[4., 5., 6.], [1., 2., 3.], [7., 8., 9.]]);
56+
test_permutate!(permutate_3x4,
57+
vec![1, 3, 3],
58+
&[[1., 4., 7., 10.], [2., 5., 8., 11.], [3., 6., 9., 12.]],
59+
&[[1., 4., 7., 10.], [3., 6., 9., 12.], [2., 5., 8., 11.]]);
60+
test_permutate_t!(permutate_3x4_t,
61+
vec![1, 3, 3],
62+
&[[1., 5., 9.], [2., 6., 10.], [3., 7., 11.], [4., 8., 12.]],
63+
&[[1., 2., 3., 4.], [9., 10., 11., 12.], [5., 6., 7., 8.]]);
64+
test_permutate!(permutate_4x3,
65+
vec![4, 2, 3, 4],
66+
&[[1., 5., 9.], [2., 6., 10.], [3., 7., 11.], [4., 8., 12.]],
67+
&[[4., 8., 12.], [2., 6., 10.], [3., 7., 11.], [1., 5., 9.]]);
68+
test_permutate_t!(permutate_4x3_t,
69+
vec![4, 2, 3, 4],
70+
&[[1., 4., 7., 10.], [2., 5., 8., 11.], [3., 6., 9., 12.]],
71+
&[[10., 11., 12.], [4., 5., 6.], [7., 8., 9.], [1., 2., 3.]]);
8672

8773
#[test]
8874
fn lu_square_upper() {

0 commit comments

Comments
 (0)