# -*- coding: utf-8 -*- """Test events classes. This file is part of PyVISA. :copyright: 2019-2022 by PyVISA Authors, see AUTHORS for more details. :license: MIT, see LICENSE for more details. """ import logging import pytest from pyvisa import constants, errors from pyvisa.events import Event from . import BaseTestCase class TestEvent(BaseTestCase): """Test Event functionalities.""" def setup_method(self): self.old = Event._event_classes.copy() def teardown_method(self): Event._event_classes = self.old def test_register(self): assert Event._event_classes[constants.EventType.clear] is Event def test_double_register_event_cls(self, caplog): class SubEvent(Event): pass with caplog.at_level(logging.DEBUG, logger="pyvisa"): Event.register(constants.EventType.clear)(SubEvent) assert caplog.records assert Event._event_classes[constants.EventType.clear] is SubEvent def test_register_event_cls_missing_attr(self): class SubEvent(Event): pass with pytest.raises(TypeError): Event.register(constants.EventType.exception)(SubEvent) assert Event._event_classes[constants.EventType.exception] is not SubEvent def test_event_context(self): event = Event(None, constants.EventType.clear, 1) assert event.context == 1 event.close() with pytest.raises(errors.InvalidSession): event.context