new e502 adc
This commit is contained in:
@ -5,6 +5,8 @@ import sys
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
from rfg_adc_plotter.cli import build_parser
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
|
||||
@ -20,6 +22,13 @@ def _run(*args: str) -> subprocess.CompletedProcess[str]:
|
||||
|
||||
|
||||
class CliTests(unittest.TestCase):
|
||||
def test_logscale_is_opt_in(self):
|
||||
args = build_parser().parse_args(["/dev/null"])
|
||||
self.assertFalse(args.logscale)
|
||||
|
||||
args_log = build_parser().parse_args(["/dev/null", "--logscale"])
|
||||
self.assertTrue(args_log.logscale)
|
||||
|
||||
def test_wrapper_help_works(self):
|
||||
proc = _run("RFG_ADC_dataplotter.py", "--help")
|
||||
self.assertEqual(proc.returncode, 0)
|
||||
|
||||
@ -97,6 +97,24 @@ class SweepParserCoreTests(unittest.TestCase):
|
||||
self.assertEqual(events[1].x, 1)
|
||||
self.assertEqual(events[1].y, -2.0)
|
||||
|
||||
def test_legacy_binary_parser_detects_new_sweep_on_step_reset(self):
|
||||
parser = LegacyBinaryParser()
|
||||
stream = b"".join(
|
||||
[
|
||||
_pack_legacy_point(3, 1, -2),
|
||||
_pack_legacy_point(3, 2, -3),
|
||||
_pack_legacy_point(3, 1, -4),
|
||||
]
|
||||
)
|
||||
events = parser.feed(stream)
|
||||
self.assertIsInstance(events[0], PointEvent)
|
||||
self.assertIsInstance(events[1], PointEvent)
|
||||
self.assertIsInstance(events[2], StartEvent)
|
||||
self.assertEqual(events[2].ch, 3)
|
||||
self.assertIsInstance(events[3], PointEvent)
|
||||
self.assertEqual(events[3].x, 1)
|
||||
self.assertEqual(events[3].y, -4.0)
|
||||
|
||||
def test_complex_ascii_parser_detects_new_sweep_on_step_reset(self):
|
||||
parser = ComplexAsciiSweepParser()
|
||||
events = parser.feed(b"0 3 4\n1 5 12\n0 8 15\n")
|
||||
@ -123,6 +141,24 @@ class SweepParserCoreTests(unittest.TestCase):
|
||||
self.assertAlmostEqual(events[1].y, log_pair_to_sweep(1500, 700), places=6)
|
||||
self.assertEqual(events[1].aux, (1500.0, 700.0))
|
||||
|
||||
def test_logscale_32_parser_detects_new_sweep_on_step_reset(self):
|
||||
parser = LogScaleBinaryParser32()
|
||||
stream = b"".join(
|
||||
[
|
||||
_pack_log_point(1, 1500, 700, ch=5),
|
||||
_pack_log_point(2, 1400, 650, ch=5),
|
||||
_pack_log_point(1, 1300, 600, ch=5),
|
||||
]
|
||||
)
|
||||
events = parser.feed(stream)
|
||||
self.assertIsInstance(events[0], PointEvent)
|
||||
self.assertIsInstance(events[1], PointEvent)
|
||||
self.assertIsInstance(events[2], StartEvent)
|
||||
self.assertEqual(events[2].ch, 5)
|
||||
self.assertIsInstance(events[3], PointEvent)
|
||||
self.assertEqual(events[3].x, 1)
|
||||
self.assertAlmostEqual(events[3].y, log_pair_to_sweep(1300, 600), places=6)
|
||||
|
||||
def test_log_pair_to_sweep_is_order_independent(self):
|
||||
self.assertAlmostEqual(log_pair_to_sweep(1500, 700), log_pair_to_sweep(700, 1500), places=6)
|
||||
|
||||
@ -137,6 +173,26 @@ class SweepParserCoreTests(unittest.TestCase):
|
||||
self.assertAlmostEqual(events[1].y, math.hypot(100.0, 90.0), places=6)
|
||||
self.assertEqual(events[1].aux, (100.0, 90.0))
|
||||
|
||||
def test_logscale_16bit_parser_detects_new_sweep_on_step_reset(self):
|
||||
parser = LogScale16BitX2BinaryParser()
|
||||
stream = b"".join(
|
||||
[
|
||||
_pack_log16_start(2),
|
||||
_pack_log16_point(1, 100, 90),
|
||||
_pack_log16_point(2, 110, 95),
|
||||
_pack_log16_point(1, 120, 80),
|
||||
]
|
||||
)
|
||||
events = parser.feed(stream)
|
||||
self.assertIsInstance(events[0], StartEvent)
|
||||
self.assertIsInstance(events[1], PointEvent)
|
||||
self.assertIsInstance(events[2], PointEvent)
|
||||
self.assertIsInstance(events[3], StartEvent)
|
||||
self.assertEqual(events[3].ch, 2)
|
||||
self.assertIsInstance(events[4], PointEvent)
|
||||
self.assertEqual(events[4].x, 1)
|
||||
self.assertAlmostEqual(events[4].y, math.hypot(120.0, 80.0), places=6)
|
||||
|
||||
def test_parser_test_stream_parser_recovers_point_after_single_separator(self):
|
||||
parser = ParserTestStreamParser()
|
||||
stream = b"".join(
|
||||
|
||||
Reference in New Issue
Block a user