From b9f0a0faf69a93218f45394c2d37903b17b929e1 Mon Sep 17 00:00:00 2001
From: "valentin.emiya" <valentin.emiya@lif.univ-mrs.fr>
Date: Wed, 13 Jun 2018 10:40:16 +0200
Subject: [PATCH] add test for str method, complex values

---
 madarrays/tests/test_madarray.py | 41 ++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/madarrays/tests/test_madarray.py b/madarrays/tests/test_madarray.py
index 028ff94..0b8ab79 100644
--- a/madarrays/tests/test_madarray.py
+++ b/madarrays/tests/test_madarray.py
@@ -700,6 +700,47 @@ class TestMadArray:
         string = '<MadArray at {}>'
         assert repr(ma) == string.format(hex(id(ma)))
 
+        # test with missing data, complex values, binary mask
+        x = np.copy(self.x_complex)
+        x[self.m] = np.nan
+        arr_str = np.ndarray.__str__(x)
+        arr_str = arr_str.replace('nan+0.j', '  x    ')
+
+        ma = MadArray(self.x_complex, self.m)
+        n_miss = np.count_nonzero(self.m)
+        string = 'MadArray, dtype=complex128, {} missing entries (50.0%)\n{}'
+        assert str(ma) == string.format(n_miss, arr_str)
+
+        string = '<MadArray at {}>'
+        assert repr(ma) == string.format(hex(id(ma)))
+
+        # test with missing data, complex values, complex_masking
+        x = np.copy(self.x_complex)
+        m_any = np.logical_or(self.mm, self.mp)
+        x[m_any] = np.nan
+        arr_str = np.ndarray.__str__(x)
+        arr_str = arr_str.replace('nan+0.j', '  x    ')
+
+        ma = MadArray(self.x_complex, complex_masking=True,
+                      mask_magnitude=self.mm, mask_phase=self.mp)
+        m_all = np.logical_and(self.mm, self.mp)
+        n_miss = np.count_nonzero(m_all)
+        n_miss_m = np.count_nonzero(self.mm)
+        n_miss_p = np.count_nonzero(self.mp)
+        string = \
+            'MadArray, dtype=complex128, ' \
+            '{} missing magnitudes ({:.1%}) ' \
+            'and {} missing phases ({:.1%}),  ' \
+            'including {} missing magnitudes and phases jointly ({:.1%})' \
+            '\n{}'
+        assert str(ma) == string.format(n_miss_m, n_miss_m / x.size,
+                                        n_miss_p, n_miss_p / x.size,
+                                        n_miss, n_miss / x.size,
+                                        arr_str)
+
+        string = '<MadArray at {}>'
+        assert repr(ma) == string.format(hex(id(ma)))
+
     def test_merge_masks(self):
         ma1 = MadArray(self.x_float, self.m)
         ma2 = MadArray(self.x_float, self.m2)
-- 
GitLab