20251005
This commit is contained in:
1
tests/classes/__init__.py
Normal file
1
tests/classes/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
# tests/classes/__init__.py
|
138
tests/classes/action_state_test.py
Normal file
138
tests/classes/action_state_test.py
Normal file
@@ -0,0 +1,138 @@
|
||||
# action_state_test.py
|
||||
|
||||
import unittest
|
||||
|
||||
from anb_python_components.classes.action_state import ActionState, ActionStateMessage, MessageType
|
||||
|
||||
class ActionStateTest(unittest.TestCase):
|
||||
def test_init (self):
|
||||
state = ActionState[bool](False)
|
||||
self.assertIsInstance(state, ActionState)
|
||||
self.assertFalse(state.value)
|
||||
state.value = True
|
||||
self.assertTrue(state.value)
|
||||
|
||||
def test_add_message (self):
|
||||
message = ActionStateMessage(MessageType.INFO, "Test message")
|
||||
|
||||
state = ActionState[bool](False)
|
||||
state.add_message(message)
|
||||
|
||||
self.assertEqual(1, state.count())
|
||||
|
||||
@staticmethod
|
||||
def get_test_state (no_warning: bool = False, no_error: bool = False, state_value: bool = False) -> ActionState[
|
||||
bool]:
|
||||
"""
|
||||
Генерирует тестовое состояние.
|
||||
:param no_warning: Без предупреждений.
|
||||
:param no_error: Без ошибок.
|
||||
:param state_value: Значение состояния.
|
||||
:return: Тестовое состояние.
|
||||
"""
|
||||
state = ActionState[bool](False)
|
||||
|
||||
state.add_info("Тестовое сообщение1")
|
||||
if not no_error:
|
||||
state.add_error("Тестовое сообщение2")
|
||||
state.add_info("Тестовое сообщение3")
|
||||
state.add_info("Тестовое сообщение4")
|
||||
if not no_warning:
|
||||
state.add_warning("Тестовое сообщение5")
|
||||
state.add_info("Тестовое сообщение6")
|
||||
state.add_info("Тестовое сообщение7")
|
||||
state.add_info("Тестовое сообщение8")
|
||||
if not no_warning:
|
||||
state.add_warning("Тестовое сообщение9")
|
||||
if not no_error:
|
||||
state.add_error("Тестовое сообщение10")
|
||||
|
||||
state.value = state_value
|
||||
|
||||
return state
|
||||
|
||||
def test_add_state (self):
|
||||
state1 = ActionStateTest.get_test_state(True, True, True)
|
||||
|
||||
state2 = ActionStateTest.get_test_state(state_value = False)
|
||||
|
||||
state1.add_state(state2)
|
||||
|
||||
self.assertEqual(16, state1.count())
|
||||
|
||||
def test_get_messages (self):
|
||||
state = ActionStateTest.get_test_state()
|
||||
|
||||
state_messages = state.get_messages()
|
||||
|
||||
self.assertEqual(10, len(state_messages))
|
||||
|
||||
count_errors = 0
|
||||
|
||||
for message in state_messages:
|
||||
if message.message_type == MessageType.ERROR:
|
||||
count_errors += 1
|
||||
|
||||
self.assertEqual(2, count_errors)
|
||||
|
||||
def test_get_string_messages (self):
|
||||
state = ActionStateTest.get_test_state()
|
||||
|
||||
state_message_string = state.get_string_messages(ActionState.get_string_error_only())
|
||||
|
||||
need_string = "Тестовое сообщение2\nТестовое сообщение10"
|
||||
|
||||
self.assertEqual(state_message_string, need_string)
|
||||
|
||||
def test_has_infos (self):
|
||||
state = ActionStateTest.get_test_state()
|
||||
|
||||
self.assertTrue(state.has_infos())
|
||||
|
||||
def test_has_warnings (self):
|
||||
state = ActionStateTest.get_test_state()
|
||||
|
||||
self.assertTrue(state.has_warnings())
|
||||
|
||||
def test_has_errors (self):
|
||||
state = ActionStateTest.get_test_state()
|
||||
|
||||
self.assertTrue(state.has_errors())
|
||||
|
||||
def test_is_success (self):
|
||||
state_fail = ActionStateTest.get_test_state()
|
||||
state_success = ActionStateTest.get_test_state(no_warning = True, no_error = True)
|
||||
state_success_no_warning = ActionStateTest.get_test_state(no_error = True)
|
||||
|
||||
self.assertTrue(state_success.is_success())
|
||||
self.assertTrue(state_success_no_warning.is_success(True))
|
||||
self.assertFalse(state_fail.is_success())
|
||||
|
||||
def test_clear (self):
|
||||
state = ActionStateTest.get_test_state()
|
||||
|
||||
state.clear(lambda message: message.message_type == MessageType.WARNING)
|
||||
|
||||
self.assertEqual(8, len(state.get_messages()))
|
||||
|
||||
state.clear()
|
||||
|
||||
self.assertEqual(0, len(state.get_messages()))
|
||||
|
||||
def test_count (self):
|
||||
state = ActionStateTest.get_test_state()
|
||||
|
||||
count_all = state.count()
|
||||
count_warnings = state.count(lambda message: message.message_type == MessageType.WARNING)
|
||||
count_errors = state.count(lambda message: message.message_type == MessageType.ERROR)
|
||||
count_errors_and_warnings = state.count(
|
||||
lambda message: message.message_type == MessageType.WARNING or message.message_type == MessageType.ERROR
|
||||
)
|
||||
|
||||
self.assertEqual(10, count_all)
|
||||
self.assertEqual(2, count_errors)
|
||||
self.assertEqual(2, count_warnings)
|
||||
self.assertEqual(4, count_errors_and_warnings)
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
Reference in New Issue
Block a user