Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'tests/TestArrange.py')
-rwxr-xr-xtests/TestArrange.py361
1 files changed, 0 insertions, 361 deletions
diff --git a/tests/TestArrange.py b/tests/TestArrange.py
deleted file mode 100755
index 85299a314d..0000000000
--- a/tests/TestArrange.py
+++ /dev/null
@@ -1,361 +0,0 @@
-# Copyright (c) 2019 Ultimaker B.V.
-# Cura is released under the terms of the LGPLv3 or higher.
-
-import numpy
-import pytest
-
-from cura.Arranging.Arrange import Arrange
-from cura.Arranging.ShapeArray import ShapeArray
-
-pytestmark = pytest.mark.skip()
-
-def gimmeTriangle():
- """Triangle of area 12"""
-
- return numpy.array([[-3, 1], [3, 1], [0, -3]], dtype=numpy.int32)
-
-def gimmeSquare():
- """Boring square"""
-
- return numpy.array([[-2, -2], [2, -2], [2, 2], [-2, 2]], dtype=numpy.int32)
-
-def gimmeShapeArray(scale = 1.0):
- """Triangle of area 12"""
-
- vertices = gimmeTriangle()
- shape_arr = ShapeArray.fromPolygon(vertices, scale = scale)
- return shape_arr
-
-def gimmeShapeArraySquare(scale = 1.0):
- """Boring square"""
-
- vertices = gimmeSquare()
- shape_arr = ShapeArray.fromPolygon(vertices, scale = scale)
- return shape_arr
-
-def test_smoke_arrange():
- """Smoke test for Arrange"""
-
- Arrange.create(fixed_nodes = [])
-
-def test_smoke_ShapeArray():
- """Smoke test for ShapeArray"""
-
- gimmeShapeArray()
-
-def test_ShapeArray():
- """Test ShapeArray"""
-
- scale = 1
- ar = Arrange(16, 16, 8, 8, scale = scale)
- ar.centerFirst()
-
- shape_arr = gimmeShapeArray(scale)
- count = len(numpy.where(shape_arr.arr == 1)[0])
- assert count >= 10 # should approach 12
-
-def test_ShapeArray_scaling():
- """Test ShapeArray with scaling"""
-
- scale = 2
- ar = Arrange(16, 16, 8, 8, scale = scale)
- ar.centerFirst()
-
- shape_arr = gimmeShapeArray(scale)
- count = len(numpy.where(shape_arr.arr == 1)[0])
- assert count >= 40 # should approach 2*2*12 = 48
-
-def test_ShapeArray_scaling2():
- """Test ShapeArray with scaling"""
-
- scale = 0.5
- ar = Arrange(16, 16, 8, 8, scale = scale)
- ar.centerFirst()
-
- shape_arr = gimmeShapeArray(scale)
- count = len(numpy.where(shape_arr.arr == 1)[0])
- assert count >= 1 # should approach 3, but it can be inaccurate due to pixel rounding
-
-def test_centerFirst():
- """Test centerFirst"""
-
- ar = Arrange(300, 300, 150, 150, scale = 1)
- ar.centerFirst()
- assert ar._priority[150][150] < ar._priority[170][150]
- assert ar._priority[150][150] < ar._priority[150][170]
- assert ar._priority[150][150] < ar._priority[170][170]
- assert ar._priority[150][150] < ar._priority[130][150]
- assert ar._priority[150][150] < ar._priority[150][130]
- assert ar._priority[150][150] < ar._priority[130][130]
-
-def test_centerFirst_rectangular():
- """Test centerFirst"""
-
- ar = Arrange(400, 300, 200, 150, scale = 1)
- ar.centerFirst()
- assert ar._priority[150][200] < ar._priority[150][220]
- assert ar._priority[150][200] < ar._priority[170][200]
- assert ar._priority[150][200] < ar._priority[170][220]
- assert ar._priority[150][200] < ar._priority[180][150]
- assert ar._priority[150][200] < ar._priority[130][200]
- assert ar._priority[150][200] < ar._priority[130][180]
-
-def test_centerFirst_rectangular2():
- """Test centerFirst"""
-
- ar = Arrange(10, 20, 5, 10, scale = 1)
- ar.centerFirst()
- assert ar._priority[10][5] < ar._priority[10][7]
-
-
-def test_backFirst():
- """Test backFirst"""
-
- ar = Arrange(300, 300, 150, 150, scale = 1)
- ar.backFirst()
- assert ar._priority[150][150] < ar._priority[170][150]
- assert ar._priority[150][150] < ar._priority[170][170]
- assert ar._priority[150][150] > ar._priority[130][150]
- assert ar._priority[150][150] > ar._priority[130][130]
-
-def test_smoke_bestSpot():
- """See if the result of bestSpot has the correct form"""
-
- ar = Arrange(30, 30, 15, 15, scale = 1)
- ar.centerFirst()
-
- shape_arr = gimmeShapeArray()
- best_spot = ar.bestSpot(shape_arr)
- assert hasattr(best_spot, "x")
- assert hasattr(best_spot, "y")
- assert hasattr(best_spot, "penalty_points")
- assert hasattr(best_spot, "priority")
-
-def test_bestSpot():
- """Real life test"""
-
- ar = Arrange(16, 16, 8, 8, scale = 1)
- ar.centerFirst()
-
- shape_arr = gimmeShapeArray()
- best_spot = ar.bestSpot(shape_arr)
- assert best_spot.x == 0
- assert best_spot.y == 0
- ar.place(best_spot.x, best_spot.y, shape_arr)
-
- # Place object a second time
- best_spot = ar.bestSpot(shape_arr)
- assert best_spot.x is not None # we found a location
- assert best_spot.x != 0 or best_spot.y != 0 # it can't be on the same location
- ar.place(best_spot.x, best_spot.y, shape_arr)
-
-def test_bestSpot_rectangular_build_plate():
- """Real life test rectangular build plate"""
-
- ar = Arrange(16, 40, 8, 20, scale = 1)
- ar.centerFirst()
-
- shape_arr = gimmeShapeArray()
- best_spot = ar.bestSpot(shape_arr)
- ar.place(best_spot.x, best_spot.y, shape_arr)
- assert best_spot.x == 0
- assert best_spot.y == 0
-
- # Place object a second time
- best_spot2 = ar.bestSpot(shape_arr)
- assert best_spot2.x is not None # we found a location
- assert best_spot2.x != 0 or best_spot2.y != 0 # it can't be on the same location
- ar.place(best_spot2.x, best_spot2.y, shape_arr)
-
- # Place object a 3rd time
- best_spot3 = ar.bestSpot(shape_arr)
- assert best_spot3.x is not None # we found a location
- assert best_spot3.x != best_spot.x or best_spot3.y != best_spot.y # it can't be on the same location
- assert best_spot3.x != best_spot2.x or best_spot3.y != best_spot2.y # it can't be on the same location
- ar.place(best_spot3.x, best_spot3.y, shape_arr)
-
- best_spot_x = ar.bestSpot(shape_arr)
- ar.place(best_spot_x.x, best_spot_x.y, shape_arr)
-
- best_spot_x = ar.bestSpot(shape_arr)
- ar.place(best_spot_x.x, best_spot_x.y, shape_arr)
-
- best_spot_x = ar.bestSpot(shape_arr)
- ar.place(best_spot_x.x, best_spot_x.y, shape_arr)
-
-def test_bestSpot_scale():
- """Real life test"""
-
- scale = 0.5
- ar = Arrange(16, 16, 8, 8, scale = scale)
- ar.centerFirst()
-
- shape_arr = gimmeShapeArray(scale)
- best_spot = ar.bestSpot(shape_arr)
- assert best_spot.x == 0
- assert best_spot.y == 0
- ar.place(best_spot.x, best_spot.y, shape_arr)
-
- # Place object a second time
- best_spot = ar.bestSpot(shape_arr)
- assert best_spot.x is not None # we found a location
- assert best_spot.x != 0 or best_spot.y != 0 # it can't be on the same location
- ar.place(best_spot.x, best_spot.y, shape_arr)
-
-def test_bestSpot_scale_rectangular():
- """Real life test"""
-
- scale = 0.5
- ar = Arrange(16, 40, 8, 20, scale = scale)
- ar.centerFirst()
-
- shape_arr = gimmeShapeArray(scale)
-
- shape_arr_square = gimmeShapeArraySquare(scale)
- best_spot = ar.bestSpot(shape_arr_square)
- assert best_spot.x == 0
- assert best_spot.y == 0
- ar.place(best_spot.x, best_spot.y, shape_arr_square)
-
- # Place object a second time
- best_spot = ar.bestSpot(shape_arr)
- assert best_spot.x is not None # we found a location
- assert best_spot.x != 0 or best_spot.y != 0 # it can't be on the same location
- ar.place(best_spot.x, best_spot.y, shape_arr)
-
- best_spot = ar.bestSpot(shape_arr_square)
- ar.place(best_spot.x, best_spot.y, shape_arr_square)
-
-def test_smoke_place():
- """Try to place an object and see if something explodes"""
-
- ar = Arrange(30, 30, 15, 15)
- ar.centerFirst()
-
- shape_arr = gimmeShapeArray()
-
- assert not numpy.any(ar._occupied)
- ar.place(0, 0, shape_arr)
- assert numpy.any(ar._occupied)
-
-def test_checkShape():
- """See of our center has less penalty points than out of the center"""
-
- ar = Arrange(30, 30, 15, 15)
- ar.centerFirst()
-
- shape_arr = gimmeShapeArray()
- points = ar.checkShape(0, 0, shape_arr)
- points2 = ar.checkShape(5, 0, shape_arr)
- points3 = ar.checkShape(0, 5, shape_arr)
- assert points2 > points
- assert points3 > points
-
-def test_checkShape_rectangular():
- """See of our center has less penalty points than out of the center"""
-
- ar = Arrange(20, 30, 10, 15)
- ar.centerFirst()
-
- shape_arr = gimmeShapeArray()
- points = ar.checkShape(0, 0, shape_arr)
- points2 = ar.checkShape(5, 0, shape_arr)
- points3 = ar.checkShape(0, 5, shape_arr)
- assert points2 > points
- assert points3 > points
-
-def test_checkShape_place():
- """Check that placing an object on occupied place returns None."""
-
- ar = Arrange(30, 30, 15, 15)
- ar.centerFirst()
-
- shape_arr = gimmeShapeArray()
- ar.checkShape(3, 6, shape_arr)
- ar.place(3, 6, shape_arr)
- points2 = ar.checkShape(3, 6, shape_arr)
-
- assert points2 is None
-
-def test_smoke_place_objects():
- """Test the whole sequence"""
-
- ar = Arrange(20, 20, 10, 10, scale = 1)
- ar.centerFirst()
- shape_arr = gimmeShapeArray()
-
- for i in range(5):
- best_spot_x, best_spot_y, score, prio = ar.bestSpot(shape_arr)
- ar.place(best_spot_x, best_spot_y, shape_arr)
-
-# Test some internals
-def test_compare_occupied_and_priority_tables():
- ar = Arrange(10, 15, 5, 7)
- ar.centerFirst()
- assert ar._priority.shape == ar._occupied.shape
-
-def test_arrayFromPolygon():
- """Polygon -> array"""
-
- vertices = numpy.array([[-3, 1], [3, 1], [0, -3]])
- array = ShapeArray.arrayFromPolygon([5, 5], vertices)
- assert numpy.any(array)
-
-def test_arrayFromPolygon2():
- """Polygon -> array"""
-
- vertices = numpy.array([[-3, 1], [3, 1], [2, -3]])
- array = ShapeArray.arrayFromPolygon([5, 5], vertices)
- assert numpy.any(array)
-
-def test_fromPolygon():
- """Polygon -> array"""
-
- vertices = numpy.array([[0, 0.5], [0, 0], [0.5, 0]])
- array = ShapeArray.fromPolygon(vertices, scale=0.5)
- assert numpy.any(array.arr)
-
-def test_check():
- """Line definition -> array with true/false"""
-
- base_array = numpy.zeros([5, 5], dtype=float)
- p1 = numpy.array([0, 0])
- p2 = numpy.array([4, 4])
- check_array = ShapeArray._check(p1, p2, base_array)
- assert numpy.any(check_array)
- assert check_array[3][0]
- assert not check_array[0][3]
-
-def test_check2():
- """Line definition -> array with true/false"""
-
- base_array = numpy.zeros([5, 5], dtype=float)
- p1 = numpy.array([0, 3])
- p2 = numpy.array([4, 3])
- check_array = ShapeArray._check(p1, p2, base_array)
- assert numpy.any(check_array)
- assert not check_array[3][0]
- assert check_array[3][4]
-
-def test_parts_of_fromNode():
- """Just adding some stuff to ensure fromNode works as expected. Some parts should actually be in UM"""
-
- from UM.Math.Polygon import Polygon
- p = Polygon(numpy.array([[-2, -2], [2, -2], [2, 2], [-2, 2]], dtype=numpy.int32))
- offset = 1
- p_offset = p.getMinkowskiHull(Polygon.approximatedCircle(offset))
- assert len(numpy.where(p_offset._points[:, 0] >= 2.9)) > 0
- assert len(numpy.where(p_offset._points[:, 0] <= -2.9)) > 0
- assert len(numpy.where(p_offset._points[:, 1] >= 2.9)) > 0
- assert len(numpy.where(p_offset._points[:, 1] <= -2.9)) > 0
-
-def test_parts_of_fromNode2():
- from UM.Math.Polygon import Polygon
- p = Polygon(numpy.array([[-2, -2], [2, -2], [2, 2], [-2, 2]], dtype=numpy.int32) * 2) # 4x4
- offset = 13.3
- scale = 0.5
- p_offset = p.getMinkowskiHull(Polygon.approximatedCircle(offset))
- shape_arr1 = ShapeArray.fromPolygon(p._points, scale = scale)
- shape_arr2 = ShapeArray.fromPolygon(p_offset._points, scale = scale)
- assert shape_arr1.arr.shape[0] >= (4 * scale) - 1 # -1 is to account for rounding errors
- assert shape_arr2.arr.shape[0] >= (2 * offset + 4) * scale - 1 \ No newline at end of file