Public Access
- raise instead of silent None for unsupported operands and empty negation - validate before acquiring lock in Accumulation operators (no RLock leak) - Accumulation._copy_provenance helper, ADC_Result._copy_metadata for all result paths - shared _sandbox_stdout_redirect contextmanager for sandboxed scripts - TemperatureMonitor dead code removal (gtk helper, traceback, unused properties) - new unit tests incl. lock-freedom regression test - gitignore sphinx generated doc/_autosummary/ and doc/damaris/
36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
import unittest
|
|
|
|
import numpy as np
|
|
|
|
from damaris.data.MeasurementResult import MeasurementResult
|
|
|
|
|
|
class TestMeasurementResult(unittest.TestCase):
|
|
def test_add_zero_preserves_data(self):
|
|
"""mr + 0 must return a MeasurementResult with identical data."""
|
|
mr = MeasurementResult("test_quantity")
|
|
for i in range(3):
|
|
mr[i] = float(i * i)
|
|
mr2 = mr + 0
|
|
self.assertIsInstance(mr2, MeasurementResult)
|
|
self.assertEqual(mr2.quantity_name, "test_quantity")
|
|
np.testing.assert_array_equal(mr2.get_xdata(), mr.get_xdata())
|
|
np.testing.assert_array_equal(mr2.get_ydata(), mr.get_ydata())
|
|
|
|
def test_add_zero_returns_independent_copy(self):
|
|
"""Changing the copy must not change the original."""
|
|
mr = MeasurementResult("q")
|
|
mr[1.0] = 5.0
|
|
mr2 = mr + 0
|
|
self.assertIsNot(mr2[1.0], mr[1.0])
|
|
mr2[1.0] = mr2[1.0] + 100.0
|
|
self.assertEqual(mr[1.0].mean(), 5.0)
|
|
|
|
def test_add_nonzero_raises(self):
|
|
mr = MeasurementResult("q")
|
|
self.assertRaises(Exception, mr.__add__, 1)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|