From 2dfd3db372ee0b8d92b622c1c9053957a87dd2d9 Mon Sep 17 00:00:00 2001
From: ldam <ldam@passcal.nmt.edu>
Date: Wed, 3 May 2023 10:00:04 -0600
Subject: [PATCH] unittest for combine_traces_except_gaps_overlaps

---
 .../test_handling_data_rearrange_data.py      | 61 ++++++++++++++++++-
 1 file changed, 60 insertions(+), 1 deletion(-)

diff --git a/tests/test_model/test_handling_data_rearrange_data.py b/tests/test_model/test_handling_data_rearrange_data.py
index 325d7ef98..68fe5eac0 100644
--- a/tests/test_model/test_handling_data_rearrange_data.py
+++ b/tests/test_model/test_handling_data_rearrange_data.py
@@ -1,7 +1,9 @@
+import numpy as np
 from unittest import TestCase
 
 from sohstationviewer.model.handling_data import (
-    sort_data, check_related_gaps, squash_gaps
+    sort_data, check_related_gaps, squash_gaps,
+    combine_traces_except_gaps_overlaps
 )
 
 
@@ -84,3 +86,60 @@ class TestSquashGaps(TestCase):
     def test_mixed_gaps(self):
         gaps = squash_gaps((self.mixed_gaps))
         self.assertEqual(gaps, [[3, 8], [18, 13]])
+
+
+class TestCombineTracesExceptGapsOverlaps(TestCase):
+    def test_combine(self):
+        traces = [
+            {'samplerate': 1, 'startTmEpoch': 1, 'endTmEpoch': 2, 'size': 2,
+             'times': np.array([1, 2]), 'data': np.array([0, 0])},
+            # overlap at the beginning
+            {'samplerate': 1, 'startTmEpoch': 1, 'endTmEpoch': 3, 'size': 3,
+             'times': np.array([1, 2, 3]), 'data': np.array([1, 1, 1])},
+            {'samplerate': 1, 'startTmEpoch': 4, 'endTmEpoch': 6, 'size': 3,
+             'times': np.array([4, 5, 6]), 'data': np.array([2, 2, 2])},
+            # gap
+            {'samplerate': 1, 'startTmEpoch': 8, 'endTmEpoch': 10, 'size': 3,
+             'times': np.array([8, 9, 10]), 'data': np.array([3, 3, 3])},
+            {'samplerate': 1, 'startTmEpoch': 11, 'endTmEpoch': 13, 'size': 3,
+             'times': np.array([11, 12, 13]), 'data': np.array([4, 4, 4])},
+            # overlap
+            {'samplerate': 1, 'startTmEpoch': 12, 'endTmEpoch': 14, 'size': 3,
+             'times': np.array([12, 13, 14]), 'data': np.array([5, 5, 5])}
+        ]
+        gaps = [[2, 1], [6, 8], [13, 12]]
+        new_traces = combine_traces_except_gaps_overlaps(traces, gaps)
+
+        self.assertEqual(len(new_traces), 4)
+        # Trace 0
+        self.assertEqual(new_traces[0]['samplerate'], 1)
+        self.assertEqual(new_traces[0]['startTmEpoch'], 1)
+        self.assertEqual(new_traces[0]['endTmEpoch'], 2)
+        self.assertEqual(new_traces[0]['size'], 2)
+        self.assertEqual(new_traces[0]['times'].tolist(), [1, 2])
+        self.assertEqual(new_traces[0]['data'].tolist(), [0, 0])
+
+        # Combine traces 1 & 2
+        self.assertEqual(new_traces[1]['samplerate'], 1)
+        self.assertEqual(new_traces[1]['startTmEpoch'], 1)
+        self.assertEqual(new_traces[1]['endTmEpoch'], 6)
+        self.assertEqual(new_traces[1]['size'], 6)
+        self.assertEqual(new_traces[1]['times'].tolist(), [1, 2, 3, 4, 5, 6])
+        self.assertEqual(new_traces[1]['data'].tolist(), [1, 1, 1, 2, 2, 2])
+
+        # Combine traces 3 & 4
+        self.assertEqual(new_traces[2]['samplerate'], 1)
+        self.assertEqual(new_traces[2]['startTmEpoch'], 8)
+        self.assertEqual(new_traces[2]['endTmEpoch'], 13)
+        self.assertEqual(new_traces[2]['size'], 6)
+        self.assertEqual(new_traces[2]['times'].tolist(),
+                         [8, 9, 10, 11, 12, 13])
+        self.assertEqual(new_traces[2]['data'].tolist(), [3, 3, 3, 4, 4, 4])
+
+        # Trace 5
+        self.assertEqual(new_traces[3]['samplerate'], 1)
+        self.assertEqual(new_traces[3]['startTmEpoch'], 12)
+        self.assertEqual(new_traces[3]['endTmEpoch'], 14)
+        self.assertEqual(new_traces[3]['size'], 3)
+        self.assertEqual(new_traces[3]['times'].tolist(), [12, 13, 14])
+        self.assertEqual(new_traces[3]['data'].tolist(), [5, 5, 5])
-- 
GitLab