Draft: Revised the 5 Draft.scale unit tests. No longer using scale_vector_from_center.

The old Draft.scale unit tests uses the scale_vector_from_center function from Draft.scale. This obviously didn't make sense.
This commit is contained in:
Roy-043
2020-09-12 13:56:50 +02:00
committed by Yorik van Havre
parent 19e7cff253
commit 2ac6909671

View File

@@ -37,7 +37,6 @@ import drafttests.auxiliary as aux
import Part
from FreeCAD import Vector
from draftfunctions.scale import scale_vector_from_center
from draftutils.messages import _msg, _wrn
@@ -600,17 +599,17 @@ class DraftModification(unittest.TestCase):
operation = "Draft Scale part feature (arcs)"
_msg(" Test '{}'".format(operation))
base = App.Vector(3.5, 2.5, 0)
cen = App.Vector(2, 1, 0) # center for scaling
sca = App.Vector(2, 3, 1)
ends = [App.Vector(0, 0, 0),
App.Vector(4, 0, 0),
App.Vector(4, 3, 0),
App.Vector(0, 3, 0)]
mids = [App.Vector( 2.0, -0.5, 0),
App.Vector( 4.5, 1.5, 0),
App.Vector( 2.0, 3.5, 0),
App.Vector(-0.5, 1.5, 0)] # arc midpoints
base = Vector(3.5, 2.5, 0.0)
cen = Vector(2.0, 1.0, 0.0) # center for scaling
sca = Vector(2.0, 3.0, 1.0)
ends = [Vector(0.0, 0.0, 0.0),
Vector(4.0, 0.0, 0.0),
Vector(4.0, 3.0, 0.0),
Vector(0.0, 3.0, 0.0)]
mids = [Vector( 2.0, -0.5, 0.0),
Vector( 4.5, 1.5, 0.0),
Vector( 2.0, 3.5, 0.0),
Vector(-0.5, 1.5, 0.0)] # arc midpoints
shp = Part.Shape([Part.Arc(ends[0], mids[0], ends[1]),
Part.Arc(ends[1], mids[1], ends[2]),
@@ -620,30 +619,33 @@ class DraftModification(unittest.TestCase):
obj.Shape = shp
obj.Placement.Base = base
App.ActiveDocument.recompute()
_msg(" Scale")
_msg(" vector={}".format(sca))
_msg(" center={}".format(cen))
Draft.scale([obj], sca, cen, False)
App.ActiveDocument.recompute()
# check endpoints of arcs:
newEnds = [Vector( 5.0, 5.5, 0.0),
Vector(13.0, 5.5, 0.0),
Vector(13.0, 14.5, 0.0),
Vector( 5.0, 14.5, 0.0)]
vrts = obj.Shape.Vertexes
result = True
for i in range(4):
ptNew = scale_vector_from_center(ends[i].add(base), sca, cen)
if not vrts[i].Point.isEqual(ptNew, 1e-8):
if not vrts[i].Point.isEqual(newEnds[i], 1e-8):
result = False
break
# check midpoints of arcs:
if result == True:
newMids = [Vector( 9.0, 4.0, 0.0),
Vector(14.0, 10.0, 0.0),
Vector( 9.0, 16.0, 0.0),
Vector( 4.0, 10.0, 0.0)]
for i in range(4):
ptNew = scale_vector_from_center(mids[i].add(base), sca, cen)
edge = obj.Shape.Edges[i]
par = (edge.LastParameter - edge.FirstParameter) / 2
if not edge.valueAt(par).isEqual(ptNew, 1e-8):
par = (edge.LastParameter - edge.FirstParameter) / 2.0
if not edge.valueAt(par).isEqual(newMids[i], 1e-8):
result = False
break
self.assertTrue(result, "'{}' failed".format(operation))
def test_scale_part_feature_lines(self):
@@ -651,13 +653,13 @@ class DraftModification(unittest.TestCase):
operation = "Draft Scale part feature (lines)"
_msg(" Test '{}'".format(operation))
base = App.Vector(3.5, 2.5, 0)
cen = App.Vector(2, 1, 0) # center for scaling
sca = App.Vector(2, 3, 1)
pts = [App.Vector(0, 0, 0),
App.Vector(4, 0, 0),
App.Vector(4, 3, 0),
App.Vector(0, 3, 0)]
base = Vector(3.5, 2.5, 0.0)
cen = Vector(2.0, 1.0, 0.0) # center for scaling
sca = Vector(2.0, 3.0, 1.0)
pts = [Vector(0.0, 0.0, 0.0),
Vector(4.0, 0.0, 0.0),
Vector(4.0, 3.0, 0.0),
Vector(0.0, 3.0, 0.0)]
shp = Part.Shape([Part.LineSegment(pts[0], pts[1]),
Part.LineSegment(pts[1], pts[2]),
@@ -667,20 +669,20 @@ class DraftModification(unittest.TestCase):
obj.Shape = shp
obj.Placement.Base = base
App.ActiveDocument.recompute()
_msg(" Scale")
_msg(" vector={}".format(sca))
_msg(" center={}".format(cen))
Draft.scale([obj], sca, cen, False)
App.ActiveDocument.recompute()
newPts = [Vector( 5.0, 5.5, 0.0),
Vector(13.0, 5.5, 0.0),
Vector(13.0, 14.5, 0.0),
Vector( 5.0, 14.5, 0.0)]
vrts = obj.Shape.Vertexes
result = True
for i in range(4):
ptNew = scale_vector_from_center(pts[i].add(base), sca, cen)
if not vrts[i].Point.isEqual(ptNew, 1e-8):
if not vrts[i].Point.isEqual(newPts[i], 1e-8):
result = False
break
self.assertTrue(result, "'{}' failed".format(operation))
def test_scale_rectangle(self):
@@ -688,28 +690,27 @@ class DraftModification(unittest.TestCase):
operation = "Draft Scale rectangle"
_msg(" Test '{}'".format(operation))
base = App.Vector(3.5, 2.5, 0)
cen = App.Vector(2, 1, 0) # center for scaling
sca = App.Vector(2, 3, 1)
len = 4
hgt = 3
base = Vector(3.5, 2.5, 0.0)
cen = Vector(2.0, 1.0, 0.0) # center for scaling
sca = Vector(2.0, 3.0, 1.0)
len = 4.0
hgt = 3.0
obj = Draft.make_rectangle(len, hgt)
obj.Placement.Base = base
App.ActiveDocument.recompute()
_msg(" Scale")
_msg(" vector={}".format(sca))
_msg(" center={}".format(cen))
Draft.scale([obj], sca, cen, False)
App.ActiveDocument.recompute()
ptNew = scale_vector_from_center(base, sca, cen)
result = obj.Placement.Base.isEqual(ptNew, 1e-8)
newBase = Vector(5.0, 5.5, 0.0)
newLen = 8.0
newHgt = 9.0
result = obj.Placement.Base.isEqual(newBase, 1e-8)
if result == True:
result = math.isclose(obj.Length, len * sca.x, abs_tol = 1e-8)
result = math.isclose(obj.Length, newLen, abs_tol = 1e-8)
if result == True:
result = math.isclose(obj.Height, hgt * sca.y, abs_tol = 1e-8)
result = math.isclose(obj.Height, newHgt, abs_tol = 1e-8)
self.assertTrue(result, "'{}' failed".format(operation))
def test_scale_spline(self):
@@ -717,29 +718,28 @@ class DraftModification(unittest.TestCase):
operation = "Draft Scale spline"
_msg(" Test '{}'".format(operation))
base = App.Vector(3.5, 2.5, 0)
cen = App.Vector(2, 1, 0) # center for scaling
sca = App.Vector(2, 3, 1)
pts = [App.Vector(0, 0, 0),
App.Vector(2, 3, 0),
App.Vector(4, 0, 0)]
base = Vector(3.5, 2.5, 0.0)
cen = Vector(2.0, 1.0, 0.0) # center for scaling
sca = Vector(2.0, 3.0, 1.0)
pts = [Vector(0.0, 0.0, 0.0),
Vector(2.0, 3.0, 0.0),
Vector(4.0, 0.0, 0.0)]
obj = Draft.make_bspline(pts, False)
obj.Placement.Base = base
App.ActiveDocument.recompute()
_msg(" Scale")
_msg(" vector={}".format(sca))
_msg(" center={}".format(cen))
Draft.scale([obj], sca, cen, False)
App.ActiveDocument.recompute()
newPts = [Vector( 5.0, 5.5, 0.0),
Vector( 9.0, 14.5, 0.0),
Vector(13.0, 5.5, 0.0)]
result = True
for i in range(3):
ptNew = scale_vector_from_center(pts[i].add(base), sca, cen)
if not obj.Points[i].add(base).isEqual(ptNew, 1e-8):
if not obj.Points[i].add(base).isEqual(newPts[i], 1e-8):
result = False
break
self.assertTrue(result, "'{}' failed".format(operation))
def test_scale_wire(self):
@@ -747,33 +747,33 @@ class DraftModification(unittest.TestCase):
operation = "Draft Scale wire"
_msg(" Test '{}'".format(operation))
base = App.Vector(3.5, 2.5, 0)
cen = App.Vector(2, 1, 0) # center for scaling
sca = App.Vector(2, 3, 1)
pts = [App.Vector(0, 0, 0),
App.Vector(4, 0, 0),
App.Vector(4, 3, 0),
App.Vector(0, 3, 0)]
base = Vector(3.5, 2.5, 0.0)
cen = Vector(2.0, 1.0, 0.0) # center for scaling
sca = Vector(2.0, 3.0, 1.0)
pts = [Vector(0.0, 0.0, 0.0),
Vector(4.0, 0.0, 0.0),
Vector(4.0, 3.0, 0.0),
Vector(0.0, 3.0, 0.0)]
obj = Draft.make_wire(pts, True)
obj.Placement.Base = base
App.ActiveDocument.recompute()
_msg(" Scale")
_msg(" vector={}".format(sca))
_msg(" center={}".format(cen))
Draft.scale([obj], sca, cen, False)
App.ActiveDocument.recompute()
newPts = [Vector( 5.0, 5.5, 0.0),
Vector(13.0, 5.5, 0.0),
Vector(13.0, 14.5, 0.0),
Vector( 5.0, 14.5, 0.0)]
vrts = obj.Shape.Vertexes
result = True
for i in range(4):
ptNew = scale_vector_from_center(pts[i].add(base), sca, cen)
if not vrts[i].Point.isEqual(ptNew, 1e-8):
if not vrts[i].Point.isEqual(newPts[i], 1e-8):
result = False
break
self.assertTrue(result, "'{}' failed".format(operation))
self.assertTrue(result, "'{}' failed".format(operation))
def tearDown(self):
"""Finish the test.