Share waveform data and plot navigation and retain processing results
This commit is contained in:
37
python/tests/test_generator_data.py
Normal file
37
python/tests/test_generator_data.py
Normal file
@@ -0,0 +1,37 @@
|
||||
"""Waveform data helpers run independently of SETGUI and Qt."""
|
||||
import io
|
||||
import json
|
||||
import unittest
|
||||
from set_devices.generator_data import (
|
||||
parse_signal_csv, signal_csv_channels, preset_points, generate,
|
||||
load_recipe, resample_signal, nearest_f407_sample_rate,
|
||||
)
|
||||
from set_devices.waveform import recipe
|
||||
from set_devices.plot_processing import Axis, Series, Snapshot, prepare, process, write_csv
|
||||
|
||||
|
||||
class GeneratorDataTests(unittest.TestCase):
|
||||
def test_processing_csv_roundtrip_into_generator(self):
|
||||
request = prepare(Snapshot((Series('a', 'A', [(1000, 0), (1010, 2), (1020, 0)]),),
|
||||
Axis('Время', 'мс', 'unix_ms')), 'a', 'linear', 21)
|
||||
output = io.StringIO()
|
||||
write_csv(process(request), output)
|
||||
self.assertEqual(1, len(signal_csv_channels(output.getvalue())))
|
||||
points, rate = parse_signal_csv(output.getvalue())
|
||||
self.assertEqual((0, 0), points[0])
|
||||
self.assertEqual((20, 0), points[-1])
|
||||
self.assertIsNone(rate)
|
||||
|
||||
def test_samples_recipe_and_resampling(self):
|
||||
points = preset_points(0, 3.3)
|
||||
samples = resample_signal(points, 10000)
|
||||
self.assertEqual(200, len(samples))
|
||||
wave = generate(samples, 10000, method='samples')
|
||||
restored, settings = load_recipe(json.dumps(recipe(wave.points, 10000, 3.3, 'samples', 2)))
|
||||
self.assertEqual(wave.points, restored)
|
||||
self.assertEqual('samples', settings['method'])
|
||||
self.assertEqual(10000, nearest_f407_sample_rate(10001))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user