Exemplo n.º 1
0
class TestPoint:

    # Инициализация (выполняется для каждого из тестов класса)
    def setup_method(self):
        self.f = Point(R2Point(0.0, 0.0))

    # Одноугольник является фигурой
    def test_figure(self):
        assert isinstance(self.f, Figure)

    # Конструктор порождает экземпляр класса Point (одноугольник)
    def test_point(self):
        assert isinstance(self.f, Point)

    # Периметр одноугольника нулевой
    def test_perimeter(self):
        assert self.f.perimeter() == 0.0

    # Площадь одноугольника нулевая
    def test_аrea(self):
        assert self.f.area() == 0.0

    # При добавлении точки одноугольник может не измениться
    def test_add1(self):
        assert self.f.add(R2Point(0.0, 0.0)) is self.f

    # При добавлении точки одноугольник может превратиться в двуугольник
    def test_add2(self):
        assert isinstance(self.f.add(R2Point(1.0, 0.0)), Segment)
Exemplo n.º 2
0
 def test_g73_rect_x_lay_trian_trian_throught_border_three(self):
     # Сразу создаем прямоугольник
     Figure.rectangle = Rectangle(R2Point(0.0, 0.0), R2Point(2.0, 1.0))
     t = Point(R2Point(1.0, 0.0))
     t = t.add(R2Point(1.0, 1.0))
     t = t.add(R2Point(3.0, 2.0))
     # Общая площадь должна быть 0.5
     assert t.g73() == approx(0.5)
Exemplo n.º 3
0
 def test_g73_rect_x_lay_trian_up1(self):
     # Сразу создаем прямоугольник
     Figure.rectangle = Rectangle(R2Point(0.0, 0.0), R2Point(2.0, 1.0))
     t = Point(R2Point(0.0, 2.0))
     t = t.add(R2Point(2.0, 0.0))
     t = t.add(R2Point(2.0, 2.0))
     # Общая площадь должна быть 0.5 (четверть прямоугольника)
     assert t.g73() == approx(0.5)
Exemplo n.º 4
0
 def test_g73_trian_big_upper(self):
     Figure.rectangle = Rectangle()  # Сразу создаем прямоугольник
     # Сначала делаем отрезок
     t = Point(R2Point(-2.0, 2.0))
     t = t.add(R2Point(-2.0, -2.0))
     # Соединяем с третьей точкой -> Получаем большой треугольник
     t = t.add(R2Point(2.0, 2.0))
     # Общая площадь должна быть 2 (половина квадрата)
     assert t.g73() == approx(2.0)
Exemplo n.º 5
0
 def test_g73_rect_x_lay_same_line3(self):
     # Сразу создаем прямоугольник
     Figure.rectangle = Rectangle(R2Point(-1.0, 0.0), R2Point(3.0, 1.0))
     t = Point(R2Point(1.0, 1.0))
     t = t.add(R2Point(2.0, 2.0))
     t = t.add(R2Point(0.0, 2.0))
     t = t.add(R2Point(2.0, 1.0))
     t = t.add(R2Point(0.0, 2.0))
     t = t.add(R2Point(0.0, 1.0))
     t = t.add(R2Point(-1.0, 2.0))
     t = t.add(R2Point(-1.0, 1.0))
     t = t.add(R2Point(3.0, 2.0))
     t = t.add(R2Point(3.0, 1.0))
     # Общая площадь должна быть 0.0 (пересечения лишь по верхней границе)
     assert t.g73() == 0.0
Exemplo n.º 6
0
 def test_g73_not_crossing(self):
     Figure.rectangle = Rectangle()  # Сразу создаем прямоугольник
     # Сначала делаем отрезок
     t = Point(R2Point(-1.0, 2.0))
     t = t.add(R2Point(1.0, 2.0))
     # Соединяем с третьей точкой -> Получаем треугольник
     t = t.add(R2Point(1.0, 3.0))
     # Соединяем с четвертой точкой -> Получаем полосочку ВЫШЕ нашего квадрата и не пересекающего его
     t = t.add(R2Point(-1.0, 3.0))
     # Общая площадь равна площади полоски, т.е. тоже единица
     assert t.g73() == 0.0
Exemplo n.º 7
0
 def test_g73_x_elongated(self):
     Figure.rectangle = Rectangle()  # Сразу создаем прямоугольник
     # Сначала делаем отрезок
     t = Point(R2Point(-2.0, -1.0))
     t = t.add(R2Point(2.0, -1.0))
     # Соединяем с третьей точкой -> Получаем треугольник
     t = t.add(R2Point(2.0, 1.0))
     # Соединяем с четвертой точкой -> Получаем вытянутый прямоугольник
     t = t.add(R2Point(-2.0, 1.0))
     # Но общая-то площадь измениться всё-равно не должна
     assert t.g73() == approx(4.0)
Exemplo n.º 8
0
def read_gallery(lines) -> Gallery:
    gallery = Gallery()

    gallery_size = int(next(lines))
    if gallery_size < 3 or gallery_size > 50:
        gallery.error = 'Gallery size must be 3 <= SIZE <= 50'
        return gallery

    line_number = 0
    while line_number < gallery_size:
        x, y = list(map(lambda item: int(item), next(lines).split(' ')))

        if x < 0 or x > 1000 or y < 0 or y > 1000:
            gallery.error = f'Gallery point ({x}, {y}) is invalid. Must be 0 <= x,y <= 1000'
            gallery.points = []
            return gallery

        gallery.points.append(Point(x, y))

        line_number += 1

    return gallery
Exemplo n.º 9
0
 def setup_method(self):
     self.f = Point(R2Point(0.0, 0.0))
     Figure.fixed_point = R2Point(1.0, 0.0)
Exemplo n.º 10
0
 def test_g73_zero_segment(self):
     Figure.rectangle = Rectangle()  # Сразу создаем прямоугольник
     t = Point(R2Point(-1.0, -1.0))
     t = t.add(R2Point(1.0, 1.0))
     assert t.g73() == 0.0
Exemplo n.º 11
0
 def setup_method(self):
     self.f = Point(R2Point(0.0, 0.0))