/
lyapdy
/
skillbox_controllers
Обзор
Документация
Войти
/
lyapdy
/
skillbox_controllers
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
vectorAlgebra/test.py
113 строк
4 KB
lyapdy
task10
15 дек 2025, 16:32
15 дек 2025, 16:32
780f797
Код
Авторство
О чём код?
import sys import math import vector_algebra def test_functions(): """Тестирование функций для работы с векторами""" print("Testing vector functions...") # Тестирование сложения векторов v1 = [1.0, 2.0, 3.0] v2 = [4.0, 5.0, 6.0] result_add = vector_algebra.add_vectors(v1, v2) print(f"add_vectors({v1}, {v2}) = {result_add}") assert result_add == [5.0, 7.0, 9.0] # Тестирование вычитания векторов result_sub = vector_algebra.subtract_vectors(v1, v2) print(f"subtract_vectors({v1}, {v2}) = {result_sub}") assert result_sub == [-3.0, -3.0, -3.0] # Тестирование скалярного произведения result_dot = vector_algebra.dot_product(v1, v2) print(f"dot_product({v1}, {v2}) = {result_dot}") assert math.isclose(result_dot, 32.0) # 1*4 + 2*5 + 3*6 = 32 print("All function tests passed!\n") def test_vector3d_class(): """Тестирование класса Vector3D""" print("Testing Vector3D class...") # Создание векторов v1 = vector_algebra.Vector3D(3.0, 4.0, 0.0) v2 = vector_algebra.Vector3D(1.0, 2.0, 3.0) print(f"v1 = {v1}") print(f"v2 = {v2}") # Тестирование доступа к координатам assert v1.x == 3.0 assert v1.y == 4.0 assert v1.z == 0.0 v1.x = 1.0 assert v1.x == 1.0 # Тестирование длины вектора length_v1 = v1.length() print(f"Length of v1 = {length_v1}") assert math.isclose(length_v1, math.sqrt(1.0 + 16.0 + 0.0)) # Тестирование нормализации normalized = v1.normalize() print(f"Normalized v1 = {normalized}") assert math.isclose(normalized.length(), 1.0, rel_tol=1e-10) # Тестирование операций v_sum = v1 + v2 print(f"v1 + v2 = {v_sum}") assert v_sum.x == 2.0 and v_sum.y == 6.0 and v_sum.z == 3.0 v_diff = v1 - v2 print(f"v1 - v2 = {v_diff}") assert v_diff.x == 0.0 and v_diff.y == 2.0 and v_diff.z == -3.0 # Тестирование скалярного произведения dot_result = v1.dot(v2) print(f"v1.dot(v2) = {dot_result}") # 1*1 + 4*2 + 0*3 = 1 + 8 + 0 = 9 assert math.isclose(dot_result, 9.0) print("All Vector3D tests passed!\n") def test_edge_cases(): """Тестирование граничных случаев""" print("Testing edge cases...") # Нулевой вектор zero_vec = vector_algebra.Vector3D(0, 0, 0) assert math.isclose(zero_vec.length(), 0.0) # Попытка нормализации нулевого вектора try: zero_vec.normalize() assert False, "Should have raised an exception" except RuntimeError as e: print(f"Correctly caught exception: {e}") # Векторы разной длины try: vector_algebra.add_vectors([1, 2], [1, 2, 3]) assert False, "Should have raised an exception" except ValueError as e: print(f"Correctly caught exception: {e}") print("All edge case tests passed!\n") def main(): """Основная функция тестирования""" print("=" * 50) print("Vector Algebra Module Tests") print("=" * 50) test_functions() test_vector3d_class() test_edge_cases() print("=" * 50) print("All tests passed successfully!") print("=" * 50) if __name__ == "__main__": main()