This commit is contained in:
2025-10-07 23:42:18 +03:00
parent b20f18788d
commit c2ac2325ca
9 changed files with 195 additions and 80 deletions

View File

@@ -1,78 +1,14 @@
# anb_python_components/types/guid.py
import re
# guid_test.py
from anb_python_components.exceptions.wrong_type_exception import WrongTypeException
import unittest
class GUID:
"""
Тип GUID.
"""
# Константа пустого GUID
EMPTY: str = "00000000-0000-0000-0000-000000000000"
def __init__ (self, guid = EMPTY):
"""
Инициализация расширения.
:param guid: str | GUID - Передаваемый GUID
"""
# Проверка типа аргумента guid
# - если аргумент не является строкой
if not isinstance(guid, str):
# -- если аргумент является экземпляром GUID
if isinstance(guid, GUID):
# - преобразуем его в строку
guid = str(guid)
else:
# -- иначе генерируем исключение
raise WrongTypeException("Неверный тип аргумента!", "GUID", str(type(guid)), "guid")
from anb_python_components.types.guid import GUID
class GUIDTest(unittest.TestCase):
def test_init (self):
guid = GUID('12345678-1234-1234-1234-123456789012', )
# Проверка GUID на валидность
if not self.validate_str(guid):
# и если GUID невалидный, то генерируем исключение
raise WrongTypeException("Неверный формат GUID!", "GUID", guid, "guid")
# Инициализируем приватный атрибут __value (текстовое представление хранящегося GUID)
self.__value = guid
def __str__ (self):
"""
Переопределение метода __str__.
:return: Текстовое представление GUID.
"""
return self.__value if self.__value else self.EMPTY
def __eq__ (self, other):
"""
Переопределение метода __eq__.
:param other: Объект для сравнения.
:return: True, если GUID равны, иначе False.
"""
# Если аргумент не является экземпляром GUID
if not isinstance(other, GUID):
# - генерируем исключение
raise WrongTypeException("Неверный тип аргумента!", "GUID", type(other), "other")
# Преобразование второго аргумента в строку
other_str = str(other)
# Сравниваем строки
return self.__value == other_str
@staticmethod
def validate_str (guid: str | None) -> bool:
"""
Проверка строки на валидность GUID.
:return: True, если GUID валидный, иначе False.
"""
# Проверка на пустоту
if not guid:
return False
# Регулярное выражение для проверки формата GUID
pattern = r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'
# Проверка на соответствие формату
return bool(re.fullmatch(pattern, guid))
self.assertEqual(str(guid), '12345678-1234-1234-1234-123456789012')
if __name__ == '__main__':
unittest.main()

View File

@@ -1 +1,37 @@
# two_dim_size_test.py
# two_dim_size_test.py
import unittest
from anb_python_components.types.two_dim_size import TwoDimSize
class TwoDimSizeTest(unittest.TestCase):
def test_init (self):
size = TwoDimSize(1, 2)
self.assertEqual(size.width, 1)
self.assertEqual(size.height, 2)
size = TwoDimSize(1, 5, 3, max_height = 4)
self.assertEqual(size.width, 3)
self.assertEqual(size.height, 4)
def test_math (self):
size_1 = TwoDimSize(1, 2)
size_2 = TwoDimSize(3, 4)
size_3 = size_1 + size_2
self.assertEqual(size_3.width, 4)
self.assertEqual(size_3.height, 6)
self.assertTrue(size_3 == TwoDimSize(4, 6))
def test_parse (self):
str_size = "1x2"
size = TwoDimSize.parse(str_size, 'x')
self.assertEqual(size.width, 1)
self.assertEqual(size.height, 2)
if __name__ == '__main__':
unittest.main()