forked from openlp/openlp
135 lines
5.1 KiB
Python
135 lines
5.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
##########################################################################
|
|
# OpenLP - Open Source Lyrics Projection #
|
|
# ---------------------------------------------------------------------- #
|
|
# Copyright (c) 2008-2022 OpenLP Developers #
|
|
# ---------------------------------------------------------------------- #
|
|
# This program is free software: you can redistribute it and/or modify #
|
|
# it under the terms of the GNU General Public License as published by #
|
|
# the Free Software Foundation, either version 3 of the License, or #
|
|
# (at your option) any later version. #
|
|
# #
|
|
# This program is distributed in the hope that it will be useful, #
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
|
# GNU General Public License for more details. #
|
|
# #
|
|
# You should have received a copy of the GNU General Public License #
|
|
# along with this program. If not, see <https://www.gnu.org/licenses/>. #
|
|
##########################################################################
|
|
"""
|
|
Help classes/functions for PJLink Projector tests
|
|
"""
|
|
|
|
from unittest.mock import MagicMock
|
|
from PyQt5 import QtNetwork
|
|
|
|
from openlp.core.projectors.constants import S_NOT_CONNECTED, S_OFF, S_OK
|
|
from openlp.core.projectors.db import Projector
|
|
from tests.resources.projector.data import TEST1_DATA
|
|
|
|
|
|
class FakeProjector(object):
|
|
"""
|
|
Helper test class
|
|
"""
|
|
def __init__(self, port=4352, name="Faker"):
|
|
self.link = self
|
|
self.entry = self
|
|
self.name = name
|
|
self.pin = None
|
|
self.port = port
|
|
|
|
|
|
class FakePJLinkUDP(object):
|
|
"""
|
|
Helper test class
|
|
"""
|
|
def __init__(self, *args, **kwargs):
|
|
pass
|
|
|
|
def check_settings(self, *args, **kwargs):
|
|
pass
|
|
|
|
|
|
class FakePJLink(object):
|
|
"""
|
|
Helper class with signals and methods mocked
|
|
"""
|
|
def __init__(self, projector=Projector(**TEST1_DATA), *args, **kwargs):
|
|
# Signal mocks
|
|
self.changeStatus = MagicMock() # Deprecated use projectorChangeStatus
|
|
self.projectorChangeStatus = MagicMock()
|
|
self.projectorStatus = MagicMock()
|
|
self.projectorAuthentication = MagicMock()
|
|
self.projectorNoAuthentication = MagicMock()
|
|
self.projectorReceivedData = MagicMock()
|
|
self.projectorUpdateIcons = MagicMock()
|
|
|
|
# Method mocks
|
|
self.change_status = MagicMock()
|
|
self.connect_to_host = MagicMock()
|
|
self.disconnect_from_host = MagicMock()
|
|
self.poll_timer = MagicMock()
|
|
self.set_power_off = MagicMock()
|
|
self.set_power_on = MagicMock()
|
|
self.set_shutter_closed = MagicMock()
|
|
self.set_shutter_open = MagicMock()
|
|
self.socket_timer = MagicMock()
|
|
self.state = MagicMock()
|
|
self.status_timer = MagicMock()
|
|
self.status_timer_add = MagicMock()
|
|
self.status_timer_delete = MagicMock()
|
|
|
|
# Some tests that may include what it thinks are ProjectorItem()
|
|
# If ProjectorItem() is called, will probably overwrite these - OK
|
|
self.link = self
|
|
self.pjlink = self
|
|
|
|
# Normal entries from PJLink
|
|
self.db = projector
|
|
self.entry = self.db # Deprecated use self.db
|
|
self.ip = self.db.ip
|
|
self.qhost = QtNetwork.QHostAddress(self.ip)
|
|
self.location = self.db.location
|
|
self.mac_adx = self.db.mac_adx
|
|
self.name = self.db.name
|
|
self.notes = self.db.notes
|
|
self.pin = self.db.pin
|
|
self.port = int(self.db.port)
|
|
self.pjlink_class = "1" if self.db.pjlink_class is None else self.db.pjlink_class
|
|
self.poll_time = 20000
|
|
self.socket_timeout = 5000
|
|
self.no_poll = True
|
|
self.status_connect = S_NOT_CONNECTED
|
|
self.last_command = ''
|
|
self.projector_status = S_NOT_CONNECTED
|
|
self.error_status = S_OK
|
|
self.send_queue = []
|
|
self.priority_queue = []
|
|
self.send_busy = False
|
|
self.status_timer_checks = {} # Keep track of events for the status timer
|
|
|
|
# reset_information attributes
|
|
self.fan = None # ERST
|
|
self.filter_time = None # FILT
|
|
self.lamp = None # LAMP
|
|
self.mac_adx_received = None # ACKN
|
|
self.manufacturer = None # INF1
|
|
self.model = None # INF2
|
|
self.model_filter = None # RFIL
|
|
self.model_lamp = None # RLMP
|
|
self.mute = None # AVMT
|
|
self.other_info = None # INFO
|
|
self.pjlink_name = None # NAME
|
|
self.power = S_OFF # POWR
|
|
self.projector_errors = {} # Full ERST errors
|
|
self.serial_no = None # SNUM
|
|
self.serial_no_received = None
|
|
self.sw_version = None # SVER
|
|
self.sw_version_received = None
|
|
self.shutter = None # AVMT
|
|
self.source_available = None # INST
|
|
self.source = None # INPT
|