# Copyright (c) 2018-2019 Manfred Moitzi
# License: MIT License
import pytest
import ezdxf
from ezdxf.render import R12Spline


CONTROL_POINTS = [
    (8.55, 2.96),
    (8.55, -0.03),
    (2.75, -0.03),
    (2.76, 3.05),
    (4.29, 1.78),
    (6.79, 3.05),
]


@pytest.fixture(scope="module")
def msp():
    return ezdxf.new("R12").modelspace()


def test_r12_quadratic_spline(msp):
    spline = R12Spline(CONTROL_POINTS, degree=2, closed=False)
    polyline = spline.render(msp, segments=40)
    assert polyline.dxftype() == "POLYLINE"
    assert polyline.dxf.layer == "0"
    assert len(polyline) == 41 + len(CONTROL_POINTS)
    assert polyline.is_closed is False


def test_r12_cubic_spline(msp):
    spline = R12Spline(CONTROL_POINTS, degree=3, closed=False)
    polyline = spline.render(msp, segments=40)
    assert polyline.dxftype() == "POLYLINE"
    assert polyline.dxf.layer == "0"
    assert len(polyline) == 41 + len(CONTROL_POINTS)
    assert polyline.is_closed is False


def test_r12_cubic_spline_closed(msp):
    spline = R12Spline(CONTROL_POINTS, degree=3, closed=True)
    polyline = spline.render(msp, segments=40)
    assert polyline.dxftype() == "POLYLINE"
    assert polyline.dxf.layer == "0"
    assert len(polyline) == 41 + len(CONTROL_POINTS)
    assert polyline.is_closed is True
