@@ -540,6 +540,34 @@ mod test_spline_tool {
540
540
use crate :: messages:: tool:: tool_messages:: spline_tool:: find_spline;
541
541
use crate :: test_utils:: test_prelude:: * ;
542
542
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
+ }
543
571
544
572
#[ tokio:: test]
545
573
async fn test_spline_tool_with_transformed_artboard ( ) {
@@ -582,30 +610,6 @@ mod test_spline_tool {
582
610
583
611
let layer_to_viewport = document. metadata ( ) . transform_to_viewport ( spline_layer) ;
584
612
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 ) ;
610
614
}
611
615
}
0 commit comments