LibreVNA/Software/Integrationtests/tests/TestStatusRegisters.py
2024-04-19 23:41:31 -07:00

57 lines
2.3 KiB
Python

import re
from tests.TestBase import TestBase
class TestStatusRegisters(TestBase):
def query_stb(self):
resp = self.vna.query("*STB?")
self.assertTrue(re.match(r"^\d+$", resp))
value = int(resp)
self.assertTrue(value >= 0 and value <= 255)
return value
def test_invalid_command(self):
status = self.vna.get_status()
self.assertEqual(status, 0)
self.vna.default_check_cmds = False
self.vna.cmd("INVALID:COMMAND")
status = self.vna.get_status()
self.assertEqual(status & 0x3C, 0x20)
status = self.vna.get_status()
self.assertEqual(status, 0)
def test_invalid_query(self):
status = self.vna.get_status()
self.assertEqual(status, 0)
self.vna.default_check_cmds = False
self.vna.cmd("INVALID:QUERY?") # send as cmd to avoid timeout
status = self.vna.get_status()
self.assertTrue(status & 0x20) # expect CME
status = self.vna.get_status()
self.assertEqual(status, 0)
def test_stb(self):
self.vna.default_check_cmds = False
self.vna.cmd("*SRE 0")
status = self.vna.get_status()
if status & 0x20:
self.skipTest("Skipping test: *SRE, *SRE?, *STB? not implemented")
self.vna.cmd("*RST")
self.vna.cmd("VNA:ACQ:SINGLE TRUE")
self.vna.cmd("*WAI")
status = self.vna.get_status()
self.assertEqual(status, 0)
self.vna.cmd("OPC") # should set OPC
self.vna.cmd(f"*ESE {0x21:d}") # mask is CME|OPC
self.assertEqual(self.query_stb() & 0x60, 0x20) # expect !MSS, ESB
self.assertEqual(self.query_stb() & 0x60, 0x20) # shouldn't clear
self.vna.cmd(f"*SRE {0x20:d}") # unmask ESB
self.assertEqual(self.query_stb() & 0x60, 0x60) # expect MSS, ESB
self.vna.cmd(f"*ESE {0x20:d}") # mask is CME only
self.assertEqual(self.query_stb() & 0x60, 0) # expect !MSS, !ESB
self.vna.cmd("INVALID:COMMAND") # should set CME
self.assertEqual(self.query_stb() & 0x60, 0x60) # expect MSS, ESB
status = self.get_status()
self.assertEqual(status, 0x21) # expect CMD|OPC, clears
self.assertEqual(self.query_stb() & 0x60, 0) # expect !MSS, !ESB