@@ -702,12 +702,14 @@ impl MessageHandler<TransformLayerMessage, TransformData<'_>> for TransformLayer
702
702
703
703
#[ cfg( test) ]
704
704
mod test_transform_layer {
705
- use crate :: messages:: portfolio:: document:: graph_operation:: transform_utils;
705
+ use crate :: messages:: {
706
+ portfolio:: document:: graph_operation:: { transform_utils, utility_types:: ModifyInputsContext } ,
707
+ prelude:: Message ,
708
+ tool:: transform_layer:: transform_layer_message_handler:: VectorModificationType ,
709
+ } ;
706
710
use crate :: test_utils:: test_prelude:: * ;
707
- // Use ModifyInputsContext to locate the transform node
708
- use crate :: messages:: portfolio:: document:: graph_operation:: utility_types:: ModifyInputsContext ;
709
- use crate :: messages:: prelude:: Message ;
710
711
use glam:: DAffine2 ;
712
+ use graphene_core:: vector:: PointId ;
711
713
use std:: collections:: VecDeque ;
712
714
713
715
async fn get_layer_transform ( editor : & mut EditorTestUtils , layer : LayerNodeIdentifier ) -> Option < DAffine2 > {
@@ -1064,4 +1066,35 @@ mod test_transform_layer {
1064
1066
let angle_change = ( ( angle_change % 360.0 ) + 360.0 ) % 360.0 ;
1065
1067
assert ! ( ( angle_change - 90.0 ) . abs( ) < 0.1 , "Expected rotation of 90 degrees, got: {}" , angle_change) ;
1066
1068
}
1069
+
1070
+ #[ tokio:: test]
1071
+ async fn test_grs_single_anchor ( ) {
1072
+ let mut editor = EditorTestUtils :: create ( ) ;
1073
+ editor. new_document ( ) . await ;
1074
+ editor. handle_message ( DocumentMessage :: CreateEmptyFolder ) . await ;
1075
+ let document = editor. active_document ( ) ;
1076
+ let layer = document. metadata ( ) . all_layers ( ) . next ( ) . unwrap ( ) ;
1077
+
1078
+ let point_id = PointId :: generate ( ) ;
1079
+ let modification_type = VectorModificationType :: InsertPoint {
1080
+ id : point_id,
1081
+ position : DVec2 :: new ( 100.0 , 100.0 ) ,
1082
+ } ;
1083
+ editor. handle_message ( GraphOperationMessage :: Vector { layer, modification_type } ) . await ;
1084
+ editor. handle_message ( ToolMessage :: ActivateTool { tool_type : ToolType :: Select } ) . await ;
1085
+
1086
+ // Testing grab operation - just checking that it doesn't crash.
1087
+ editor. handle_message ( TransformLayerMessage :: BeginGrab ) . await ;
1088
+ editor. move_mouse ( 150.0 , 150.0 , ModifierKeys :: empty ( ) , MouseKeys :: NONE ) . await ;
1089
+ editor
1090
+ . handle_message ( TransformLayerMessage :: PointerMove {
1091
+ slow_key : Key :: Shift ,
1092
+ increments_key : Key :: Control ,
1093
+ } )
1094
+ . await ;
1095
+ editor. handle_message ( TransformLayerMessage :: ApplyTransformOperation { final_transform : true } ) . await ;
1096
+
1097
+ let final_transform = get_layer_transform ( & mut editor, layer) . await ;
1098
+ assert ! ( final_transform. is_some( ) , "Transform node should exist after grab operation" ) ;
1099
+ }
1067
1100
}
0 commit comments