changeset 361:6b65d8a1e954

Add tests for make_channel_selector with any channel
author Amine Sehili <amine.sehili@gmail.com>
date Fri, 03 Apr 2020 21:38:54 +0200
parents 5133fdc926fb
children 338c4a9a8c30
files tests/test_util.py
diffstat 1 files changed, 51 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/tests/test_util.py	Fri Apr 03 20:50:48 2020 +0200
+++ b/tests/test_util.py	Fri Apr 03 21:38:54 2020 +0200
@@ -191,10 +191,57 @@
         else:
             self.assertTrue(all(result_numpy == expected))
 
-    # def test_make_channel_selector_any(
-    #     self, sample_width, channels, selected, expected
-    # ):
-    #     pass
+    @genty_dataset(
+        int8_1channel=(
+            1,
+            1,
+            "any",
+            [[48, 49, 50, 51, 52, 53, 54, 55, 57, 65, 66, 67]],
+        ),
+        int8_2channel=(
+            1,
+            2,
+            None,
+            [[48, 50, 52, 54, 57, 66], [49, 51, 53, 55, 65, 67]],
+        ),
+        int8_4channel=(
+            1,
+            4,
+            "any",
+            [[48, 52, 57], [49, 53, 65], [50, 54, 66], [51, 55, 67]],
+        ),
+        int16_2channel=(
+            2,
+            2,
+            None,
+            [[12592, 13620, 16697], [13106, 14134, 17218]],
+        ),
+        int32_3channel=(4, 3, "any", [[858927408], [926299444], [1128415545]]),
+    )
+    def test_make_channel_selector_any(
+        self, sample_width, channels, selected, expected
+    ):
+
+        # force using signal functions with standard python implementation
+        with patch("auditok.util.signal", signal_):
+            selector = make_channel_selector(sample_width, channels, selected)
+            result = selector(self.data)
+
+        fmt = signal_.FORMAT[sample_width]
+        expected = [array_(fmt, exp) for exp in expected]
+        if channels == 1:
+            expected = bytes(expected[0])
+        self.assertEqual(result, expected)
+
+        # Use signal functions with numpy implementation
+        with patch("auditok.util.signal", signal_numpy):
+            selector = make_channel_selector(sample_width, channels, selected)
+            result_numpy = selector(self.data)
+
+        if channels == 1:
+            self.assertEqual(result_numpy, expected)
+        else:
+            self.assertTrue((result_numpy == expected).all())
 
 
 @genty