260705_2
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
import math
|
||||
import unittest
|
||||
|
||||
from B05_wf2_Route.B05_wf2_Route_Engine_RidgeValley import (
|
||||
_fillet_alignment,
|
||||
_turn_angle,
|
||||
resolve_grade_bounds,
|
||||
)
|
||||
|
||||
|
||||
class ResolveGradeBoundsTest(unittest.TestCase):
|
||||
def test_defaults(self) -> None:
|
||||
gb = resolve_grade_bounds({})
|
||||
self.assertAlmostEqual(gb["min_uphill_grade"], 0.08)
|
||||
self.assertAlmostEqual(gb["max_uphill_grade"], 0.14)
|
||||
# 엣지용은 방향 중 더 엄격한 값
|
||||
self.assertAlmostEqual(gb["max_grade_for_edges"], 0.14)
|
||||
self.assertAlmostEqual(gb["min_grade_for_edges"], 0.08)
|
||||
|
||||
def test_override(self) -> None:
|
||||
gb = resolve_grade_bounds({"max_uphill_grade": 0.10, "max_downhill_grade": 0.12})
|
||||
self.assertAlmostEqual(gb["max_grade_for_edges"], 0.10)
|
||||
|
||||
|
||||
class TurnAngleTest(unittest.TestCase):
|
||||
def test_straight_is_zero(self) -> None:
|
||||
self.assertAlmostEqual(_turn_angle([0, 0], [1, 0], [2, 0]), 0.0, places=6)
|
||||
|
||||
def test_right_angle(self) -> None:
|
||||
self.assertAlmostEqual(_turn_angle([0, 0], [1, 0], [1, 1]), math.pi / 2, places=6)
|
||||
|
||||
|
||||
class FilletAlignmentTest(unittest.TestCase):
|
||||
def test_straight_nodes_preserved(self) -> None:
|
||||
nodes = [[0, 0, 0], [10, 0, 1], [20, 0, 2]]
|
||||
poly, radii = _fillet_alignment(nodes, 12.0, 2.0)
|
||||
self.assertGreaterEqual(len(poly), 2)
|
||||
# 직선이므로 시작·끝 좌표 보존
|
||||
self.assertAlmostEqual(poly[0][0], 0.0)
|
||||
self.assertAlmostEqual(poly[-1][0], 20.0)
|
||||
|
||||
def test_single_node(self) -> None:
|
||||
poly, radii = _fillet_alignment([[0, 0, 0]], 12.0, 2.0)
|
||||
self.assertEqual(len(poly), 1)
|
||||
Reference in New Issue
Block a user