Skip to content

Commit f8e01ac

Browse files
refactor asserting point positions
1 parent b26711f commit f8e01ac

File tree

1 file changed

+29
-25
lines changed

1 file changed

+29
-25
lines changed

editor/src/messages/tool/tool_messages/spline_tool.rs

+29-25
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,34 @@ mod test_spline_tool {
540540
use crate::messages::tool::tool_messages::spline_tool::find_spline;
541541
use crate::test_utils::test_prelude::*;
542542
use glam::DAffine2;
543+
use graphene_core::vector::VectorData;
544+
545+
fn assert_point_positions(vector_data: &VectorData, layer_to_viewport: DAffine2, expected_points: &[DVec2], epsilon: f64) {
546+
let points_in_viewport: Vec<DVec2> = vector_data
547+
.point_domain
548+
.ids()
549+
.iter()
550+
.filter_map(|&point_id| {
551+
let position = vector_data.point_domain.position_from_id(point_id)?;
552+
Some(layer_to_viewport.transform_point2(position))
553+
})
554+
.collect();
555+
556+
// Verify each point position is close to the expected position
557+
for (i, expected_point) in expected_points.iter().enumerate() {
558+
let actual_point = points_in_viewport[i];
559+
let distance = (actual_point - *expected_point).length();
560+
561+
assert!(
562+
distance < epsilon,
563+
"Point {} position mismatch: expected {:?}, got {:?} (distance: {})",
564+
i,
565+
expected_point,
566+
actual_point,
567+
distance
568+
);
569+
}
570+
}
543571

544572
#[tokio::test]
545573
async fn test_spline_tool_with_transformed_artboard() {
@@ -582,30 +610,6 @@ mod test_spline_tool {
582610

583611
let layer_to_viewport = document.metadata().transform_to_viewport(spline_layer);
584612

585-
let points_in_viewport: Vec<DVec2> = vector_data
586-
.point_domain
587-
.ids()
588-
.iter()
589-
.filter_map(|&point_id| {
590-
let position = vector_data.point_domain.position_from_id(point_id)?;
591-
Some(layer_to_viewport.transform_point2(position))
592-
})
593-
.collect();
594-
595-
// Verify each point position is close to the expected position
596-
let epsilon = 1e-10;
597-
for (i, expected_point) in spline_points.iter().enumerate() {
598-
let actual_point = points_in_viewport[i];
599-
let distance = (actual_point - *expected_point).length();
600-
601-
assert!(
602-
distance < epsilon,
603-
"Point {} position mismatch: expected {:?}, got {:?} (distance: {})",
604-
i,
605-
expected_point,
606-
actual_point,
607-
distance
608-
);
609-
}
613+
assert_point_positions(&vector_data, layer_to_viewport, &spline_points, 1e-10);
610614
}
611615
}

0 commit comments

Comments
 (0)