def test_find_nearest_within_reverse(): lines = [[10, 0], [20, 10.1]] idx = LineIndex(LineCollection(lines)) ridx = LineIndex(LineCollection(lines), reverse=True) assert idx.find_nearest_within(0.1, 0.5)[0] is None assert ridx.find_nearest_within(0.1, 0.5) == (0, True) assert ridx.find_nearest_within(10.01, 0.5) == (0, False) assert ridx.find_nearest_within(10.09, 0.5) == (1, True)
def test_line_collection_extend(lines): lc = LineCollection([(3, 3j)]) lc.extend(lines) assert len(lc) == 3 assert np.all(lc[0] == np.array([3, 3j])) assert np.all(lc[1] == np.array([0, 1 + 1j])) assert np.all(lc[2] == np.array([2 + 2j, 3 + 3j, 4 + 4j]))
def test_pop_front(): lines = [random_line(5), random_line(3), random_line(7)] lc = LineCollection(lines) idx = LineIndex(lc) assert np.all(idx.pop_front() == lines[0]) assert np.all(idx.pop_front() == lines[1]) assert np.all(idx.pop_front() == lines[2]) assert len(idx) == 0
def test_vector_data_lid_iteration(): lc = LineCollection([(0, 1 + 1j)]) vd = VectorData() vd.add(lc, 1) for lc in vd.layers_from_ids([1, 2, 3, 4]): lc.append([3, 3 + 3j]) assert vd.count() == 1 assert len(vd.layers[1]) == 2
def test_find_nearest_within(): lines = [[1 + 1j, 10], [1.2 + 1j, 10], [1.3 + 1j, 10]] idx = LineIndex(LineCollection(lines)) assert idx.find_nearest_within(1.05 + 1j, 0.01)[0] is None assert idx.find_nearest_within(1.05 + 1j, 0.051) == (0, False) assert idx.find_nearest_within(1.05 + 1j, 0.16) == (0, False) idx.pop(0) assert idx.find_nearest_within(1.05 + 1j, 0.16) == (1, False) assert idx.find_nearest_within(1.05 + 1j, 0.051)[0] is None
def test_pop(): lines = [random_line(5), random_line(3), random_line(7)] lc = LineCollection(lines) idx = LineIndex(lc) assert np.all(idx.pop(2) == lines[2]) assert idx.pop(2) is None assert np.all(idx.pop(0) == lines[0]) assert idx.pop(0) is None assert np.all(idx.pop(1) == lines[1]) assert len(idx) == 0
def test_vector_data_bounds(): vd = VectorData() vd.add(LineCollection([(-10, 10), (0, 0)]), 1) vd.add(LineCollection([(0, 0), (-10j, 10j)]), 2) assert vd.bounds() == (-10, -10, 10, 10)
def test_line_collection_pen_up_length(): lc = LineCollection([(0, 10), (10 + 10j, 500 + 500j, 10j), (0, -40)]) assert lc.pen_up_length()[0] == 20.0
def test_line_collection_empty_bounds(): lc = LineCollection() assert lc.bounds() is None
def test_line_collection_bounds(): lc = LineCollection([(-10, 10), (-10j, 10j)]) assert lc.bounds() == (-10, -10, 10, 10)
def test_line_collection_append(line): lc = LineCollection() lc.append(line) assert len(lc) == 1 assert np.all(lc[0] == np.array([4 + 3j, 5, 10 + 10j, 5j]))
def test_line_collection_creation(lines): lc = LineCollection(lines) assert len(lc) == 2 assert np.all(lc[0] == np.array([0, 1 + 1j])) assert np.all(lc[1] == np.array([2 + 2j, 3 + 3j, 4 + 4j]))
import pytest import numpy as np from shapely.geometry import MultiLineString, LineString from vpype.model import LineCollection, VectorData LINE_COLLECTION_INIT = [ LineCollection([[0, 1 + 1j], [2 + 2j, 3 + 3j, 4 + 4j]]), [[0, 1 + 1j], [2 + 2j, 3 + 3j, 4 + 4j]], ([0, 1 + 1j], [2 + 2j, 3 + 3j, 4 + 4j]), ((0, 1 + 1j), (2 + 2j, 3 + 3j, 4 + 4j)), np.array([[0, 1 + 1j], [2 + 2j, 3 + 3j, 4 + 4j]]), MultiLineString([[(0, 0), (1, 1)], [(2, 2), (3, 3), (4, 4)]]), ] @pytest.mark.parametrize("lines", LINE_COLLECTION_INIT) def test_line_collection_creation(lines): lc = LineCollection(lines) assert len(lc) == 2 assert np.all(lc[0] == np.array([0, 1 + 1j])) assert np.all(lc[1] == np.array([2 + 2j, 3 + 3j, 4 + 4j])) @pytest.mark.parametrize("lines", LINE_COLLECTION_INIT) def test_line_collection_extend(lines): lc = LineCollection([(3, 3j)]) lc.extend(lines) assert len(lc) == 3 assert np.all(lc[0] == np.array([3, 3j])) assert np.all(lc[1] == np.array([0, 1 + 1j]))