1
0
mirror of https://github.com/gryf/fs-uae-wrapper.git synced 2025-12-18 12:00:28 +01:00
Files
fs-uae-wrapper/tests/test_message.py
2024-09-14 09:22:41 +02:00

64 lines
2.0 KiB
Python

import os
from unittest import TestCase, mock
from fs_uae_wrapper import message
if os.environ.get('DISPLAY'):
import tkinter as tk
from tkinter import ttk
class TestMessage(TestCase):
@mock.patch('multiprocessing.Process.start')
def test_show(self, process_start):
msg = message.Message('display that')
msg.show()
process_start.assert_called_once()
def test_close(self):
msg = message.Message('display that')
msg._process = mock.MagicMock()
msg._process.is_alive = mock.MagicMock(return_value=True)
msg._process.terminate = mock.MagicMock()
msg._process.join = mock.MagicMock()
msg.close()
msg._process.is_alive.assert_called_once()
msg._process.terminate.assert_called_once()
msg._process.join.assert_called_once()
msg._process.is_alive = mock.MagicMock(return_value=False)
msg._process.terminate.reset_mock()
msg._process.join.reset_mock()
msg.close()
msg._process.is_alive.assert_called_once()
msg._process.terminate.assert_not_called()
msg._process.join.assert_called_once()
if os.environ.get('DISPLAY'):
# Tkinter needs graphic environment for the widgets
class TestSpawn(TestCase):
@mock.patch('fs_uae_wrapper.message.MessageGui.__call__')
def test_spawn(self, call):
self.assertIsNone(message._spawn(''))
call.assert_called_once()
class TestMessageGui(TestCase):
def test_gui(self):
msg = message.MessageGui(msg='display that')
self.assertIsInstance(msg, tk.Tk)
self.assertIsInstance(msg.frame, ttk.Frame)
label = next(iter(msg.frame.children.values()))
self.assertEqual(label.cget('text'), 'display that')
@mock.patch('fs_uae_wrapper.message.tk.Tk.mainloop')
def test_call(self, tkmain):
msg = message.MessageGui(msg='display that')
msg()
tkmain.assert_called_once()