Source code for Tests.Methods.Geometry.test_normal

# -*- coding: utf-8 -*-
import pytest

from pyleecan.Classes.Segment import Segment

from numpy import pi, sqrt, exp


# For AlmostEqual
DELTA = 1e-6

norm_list = list()

# 0) Segment on Ox
norm_list.append(
    {
        "test_obj": Segment(-1, 1),
        "result_0": (0, 1j * 2 / 3),
        "result_1": 1j * 2 / 3,
        "result_2": pi / 2,
    }
)
# 1) Segment diagonal X+,Y+
norm_list.append(
    {
        "test_obj": Segment(1, 1j),
        "result_0": (0.5 + 0.5j, (0.5 - 1 / 3) * (1 + 1j)),
        "result_1": -1 / 3 * (1 + 1j),
        "result_2": -3 * pi / 4,
    }
)
# 2) Reversed 1
norm_list.append(
    {
        "test_obj": Segment(1j, 1),
        "result_0": (0.5 + 0.5j, (0.5 + 1 / 3) * (1 + 1j)),
        "result_1": +1 / 3 * (1 + 1j),
        "result_2": pi / 4,
    }
)
# 3) Segment diagonal X-Y+
norm_list.append(
    {
        "test_obj": Segment(-1, 1j),
        "result_0": (-0.5 + 0.5j, (0.5 + 1 / 3) * (-1 + 1j)),
        "result_1": 1 / 3 * (-1 + 1j),
        "result_2": 3 * pi / 4,
    }
)
# 4) Reverse 3
norm_list.append(
    {
        "test_obj": Segment(1j, -1),
        "result_0": (-0.5 + 0.5j, (0.5 - 1 / 3) * (-1 + 1j)),
        "result_1": -1 / 3 * (-1 + 1j),
        "result_2": -pi / 4,
    }
)
# 5) Segment diagonal X- Y-
norm_list.append(
    {
        "test_obj": Segment(-1, -1j),
        "result_0": (-0.5 - 0.5j, (0.5 - 1 / 3) * (-1 - 1j)),
        "result_1": 1 / 3 * (1 + 1j),
        "result_2": pi / 4,
    }
)
# 6) Reversed 5
norm_list.append(
    {
        "test_obj": Segment(-1j, -1),
        "result_0": (-0.5 - 0.5j, (0.5 + 1 / 3) * (-1 - 1j)),
        "result_1": -1 / 3 * (1 + 1j),
        "result_2": -3 * pi / 4,
    }
)
# 7) Segment diagonal X+ Y-
norm_list.append(
    {
        "test_obj": Segment(-1j, 1),
        "result_0": (0.5 - 0.5j, (0.5 - 1 / 3) * (1 - 1j)),
        "result_1": -1 / 3 * (1 - 1j),
        "result_2": 3 * pi / 4,
    }
)
# 8) Reversed 7
norm_list.append(
    {
        "test_obj": Segment(1, -1j),
        "result_0": (0.5 - 0.5j, (0.5 + 1 / 3) * (1 - 1j)),
        "result_1": 1 / 3 * (1 - 1j),
        "result_2": -pi / 4,
    }
)


[docs]class Test_Line_normal(object): """unittest for Line comp_normal method"""
[docs] @pytest.mark.parametrize("test_dict", norm_list) def test_comp_normal(self, test_dict): """Check that the normal is computed correctly""" test_obj = test_dict["test_obj"] if "result_2" in test_dict: result = test_obj.comp_normal() assert isinstance(result, float) assert result == pytest.approx(test_dict["result_2"])
# if "result_1" in test_dict: # result = test_obj.comp_normal(return_type=1) # assert isinstance(result, complex) # assert abs(result - test_dict["result_1"]) < DELTA # if "result_0" in test_dict: # result = test_obj.comp_normal(return_type=0) # assert isinstance(result, tuple) # assert len(result) == 2 # assert abs(result[0] - test_dict["result_0"][0]) < DELTA # assert abs(result[1] - test_dict["result_0"][1]) < DELTA