message: Added tests for Array2 impls of ArgminConj
diff: // http://opensource.org/licenses/MIT>, at your option. This file may not be
  // copied, modified, or distributed except according to those terms.
  -// TODO: Tests for Array2 impl
  -
  use crate::ArgminConj;
  use ndarray::{Array1, Array2};
  use num_complex::Complex;
  @@ -54,13 +52,14 @@ make_conj!(Complex<f64>);
  #[cfg(test)]
  mod tests {
  use super::*;
  + use ndarray::array;
  use paste::item;
  macro_rules! make_test {
  ($t:ty) => {
  item! {
  #[test]
  - fn [<test_conj_complex_ndarray_ $t>]() {
  + fn [<test_conj_complex_ $t>]() {
  let a = Array1::from(vec![
  Complex::new(1 as $t, 2 as $t),
  Complex::new(4 as $t, -3 as $t),
  @@ -82,13 +81,50 @@ mod tests {
  item! {
  #[test]
  - fn [<test_conj_ndarray_ $t>]() {
  + fn [<test_conj_complex_mat_ $t>]() {
  + let a = array![
  + [Complex::new(1 as $t, 2 as $t), Complex::new(4 as $t, -5 as $t)],
  + [Complex::new(3 as $t, -5 as $t), Complex::new(8 as $t, 3 as $t)],
  + [Complex::new(4 as $t, -2 as $t), Complex::new(9 as $t, -9 as $t)],
  + ];
  + let b = array![
  + [Complex::new(1 as $t, -2 as $t), Complex::new(4 as $t, 5 as $t)],
  + [Complex::new(3 as $t, 5 as $t), Complex::new(8 as $t, -3 as $t)],
  + [Complex::new(4 as $t, 2 as $t), Complex::new(9 as $t, 9 as $t)],
  + ];
  + let res = <Array2<Complex<$t>> as ArgminConj>::conj(&a);
  + for i in 0..2 {
  + for j in 0..3 {
  + assert!((b[(j, i)].re as f64 - res[(j, i)].re as f64).abs() < std::f64::EPSILON);
  + assert!((b[(j, i)].im as f64 - res[(j, i)].im as f64).abs() < std::f64::EPSILON);
  + }
  + }
  + }
  + }
  +
  + item! {
  + #[test]
  + fn [<test_conj_ $t>]() {
  let a = Array1::from(vec![1 as $t, 4 as $t, 8 as $t]);
  - let b = Array1::from(vec![1 as $t, 4 as $t, 8 as $t]);
  let res = <Array1<$t> as ArgminConj>::conj(&a);
  for i in 0..3 {
  - let diff = (b[i] as f64 - res[i] as f64).abs();
  - assert!(diff < std::f64::EPSILON);
  + assert!((a[i] as f64 - res[i] as f64).abs() < std::f64::EPSILON);
  + }
  + }
  + }
  +
  + item! {
  + #[test]
  + fn [<test_conj_mat_ $t>]() {
  + let a = array![
  + [1 as $t, 4 as $t, 8 as $t],
  + [2 as $t, 5 as $t, 9 as $t],
  + ];
  + let res = <Array2<$t> as ArgminConj>::conj(&a);
  + for i in 0..3 {
  + for j in 0..2 {
  + assert!((a[(j, i)] as f64 - res[(j, i)] as f64).abs() < std::f64::EPSILON);
  + }
  }
  }
  }
  