diff --git a/editor/src/messages/portfolio/document/document_message_handler.rs b/editor/src/messages/portfolio/document/document_message_handler.rs index 58aac795ab..5fc0138c72 100644 --- a/editor/src/messages/portfolio/document/document_message_handler.rs +++ b/editor/src/messages/portfolio/document/document_message_handler.rs @@ -2800,7 +2800,7 @@ mod document_message_handler_tests { let document = editor.active_document(); for layer in document.metadata().all_layers() { if let Some(bbox) = document.metadata().bounding_box_viewport(layer) { - if (bbox[0].x - min_x).abs() < 1.0 && (bbox[0].y - min_y).abs() < 1.0 { + if (bbox[0].x - min_x).abs() < 1. && (bbox[0].y - min_y).abs() < 1. { return Some(layer); } } @@ -2814,8 +2814,8 @@ mod document_message_handler_tests { parent.children(document.metadata()).position(|child| child == layer) } - let layer_middle = get_layer_by_bounds(&mut editor, 50.0, 50.0).await.unwrap(); - let layer_top = get_layer_by_bounds(&mut editor, 100.0, 100.0).await.unwrap(); + let layer_middle = get_layer_by_bounds(&mut editor, 50., 50.).await.unwrap(); + let layer_top = get_layer_by_bounds(&mut editor, 100., 100.).await.unwrap(); let initial_index_top = get_layer_index(&mut editor, layer_top).await.unwrap(); let initial_index_middle = get_layer_index(&mut editor, layer_middle).await.unwrap(); @@ -2915,7 +2915,7 @@ mod document_message_handler_tests { // Applying transform to folder1 (translation) editor.handle_message(NodeGraphMessage::SelectedNodesSet { nodes: vec![folder1.to_node()] }).await; editor.handle_message(TransformLayerMessage::BeginGrab).await; - editor.move_mouse(100.0, 50.0, ModifierKeys::empty(), MouseKeys::NONE).await; + editor.move_mouse(100., 50., ModifierKeys::empty(), MouseKeys::NONE).await; editor .handle_message(TransformLayerMessage::PointerMove { slow_key: Key::Shift, @@ -2927,7 +2927,7 @@ mod document_message_handler_tests { // Applying different transform to folder2 (translation) editor.handle_message(NodeGraphMessage::SelectedNodesSet { nodes: vec![folder2.to_node()] }).await; editor.handle_message(TransformLayerMessage::BeginGrab).await; - editor.move_mouse(200.0, 100.0, ModifierKeys::empty(), MouseKeys::NONE).await; + editor.move_mouse(200., 100., ModifierKeys::empty(), MouseKeys::NONE).await; editor .handle_message(TransformLayerMessage::PointerMove { slow_key: Key::Shift, @@ -2946,7 +2946,7 @@ mod document_message_handler_tests { editor.handle_message(DocumentMessage::MoveSelectedLayersTo { parent: folder1, insert_index: 0 }).await; editor.handle_message(TransformLayerMessage::BeginGrab).await; - editor.move_mouse(50.0, 25.0, ModifierKeys::empty(), MouseKeys::NONE).await; + editor.move_mouse(50., 25., ModifierKeys::empty(), MouseKeys::NONE).await; editor .handle_message(TransformLayerMessage::PointerMove { slow_key: Key::Shift, @@ -2967,10 +2967,10 @@ mod document_message_handler_tests { let rect_bbox_after = document.metadata().bounding_box_viewport(rect_layer).unwrap(); // Verifing the rectangle maintains approximately the same position in viewport space - let before_center = (rect_bbox_before[0] + rect_bbox_before[1]) / 2.0; - let after_center = (rect_bbox_after[0] + rect_bbox_after[1]) / 2.0; + let before_center = (rect_bbox_before[0] + rect_bbox_before[1]) / 2.; + let after_center = (rect_bbox_after[0] + rect_bbox_after[1]) / 2.; let distance = before_center.distance(after_center); - assert!(distance < 1.0, "Rectangle should maintain its viewport position after moving between transformed groups"); + assert!(distance < 1., "Rectangle should maintain its viewport position after moving between transformed groups"); } } diff --git a/editor/src/messages/tool/tool_messages/line_tool.rs b/editor/src/messages/tool/tool_messages/line_tool.rs index b0ace3426f..7c78e92e4a 100644 --- a/editor/src/messages/tool/tool_messages/line_tool.rs +++ b/editor/src/messages/tool/tool_messages/line_tool.rs @@ -462,8 +462,8 @@ mod test_line_tool { if let Some((start_input, end_input)) = get_line_node_inputs(&mut editor).await { match (start_input, end_input) { (start_input, end_input) => { - assert!((start_input - DVec2::ZERO).length() < 1.0, "Start point should be near (0,0)"); - assert!((end_input - DVec2::new(100.0, 100.0)).length() < 1.0, "End point should be near (100,100)"); + assert!((start_input - DVec2::ZERO).length() < 1., "Start point should be near (0,0)"); + assert!((end_input - DVec2::new(100., 100.)).length() < 1., "End point should be near (100,100)"); } } } @@ -473,9 +473,13 @@ mod test_line_tool { async fn test_line_tool_with_transformed_viewport() { let mut editor = EditorTestUtils::create(); editor.new_document().await; - editor.handle_message(NavigationMessage::CanvasZoomSet { zoom_factor: 2.0 }).await; - editor.handle_message(NavigationMessage::CanvasPan { delta: DVec2::new(100.0, 50.0) }).await; - editor.handle_message(NavigationMessage::CanvasTiltSet { angle_radians: 30.0_f64.to_radians() }).await; + editor.handle_message(NavigationMessage::CanvasZoomSet { zoom_factor: 2. }).await; + editor.handle_message(NavigationMessage::CanvasPan { delta: DVec2::new(100., 50.) }).await; + editor + .handle_message(NavigationMessage::CanvasTiltSet { + angle_radians: (30. as f64).to_radians(), + }) + .await; editor.drag_tool(ToolType::Line, 0., 0., 100., 100., ModifierKeys::empty()).await; if let Some((start_input, end_input)) = get_line_node_inputs(&mut editor).await { let document = editor.active_document(); @@ -483,16 +487,16 @@ mod test_line_tool { let viewport_to_document = document_to_viewport.inverse(); let expected_start = viewport_to_document.transform_point2(DVec2::ZERO); - let expected_end = viewport_to_document.transform_point2(DVec2::new(100.0, 100.0)); + let expected_end = viewport_to_document.transform_point2(DVec2::new(100., 100.)); assert!( - (start_input - expected_start).length() < 1.0, + (start_input - expected_start).length() < 1., "Start point should match expected document coordinates. Got {:?}, expected {:?}", start_input, expected_start ); assert!( - (end_input - expected_end).length() < 1.0, + (end_input - expected_end).length() < 1., "End point should match expected document coordinates. Got {:?}, expected {:?}", end_input, expected_end @@ -519,7 +523,7 @@ mod test_line_tool { let updated_line_vec = updated_end - updated_start; let updated_angle = updated_line_vec.angle_to(DVec2::X); assert!((original_angle - updated_angle).abs() < 0.1, "Line angle should be locked when Ctrl is kept pressed"); - assert!((updated_start - updated_end).length() > 1.0, "Line should be able to change length when Ctrl is kept pressed"); + assert!((updated_start - updated_end).length() > 1., "Line should be able to change length when Ctrl is kept pressed"); } } } @@ -538,8 +542,8 @@ mod test_line_tool { (start_input, end_input) => { let expected_start = DVec2::new(0., 100.); let expected_end = DVec2::new(200., 100.); - assert!((start_input - expected_start).length() < 1.0, "start point should be near (0,100)"); - assert!((end_input - expected_end).length() < 1.0, "end point should be near (200,100)"); + assert!((start_input - expected_start).length() < 1., "start point should be near (0,100)"); + assert!((end_input - expected_end).length() < 1., "end point should be near (200,100)"); } } } @@ -556,9 +560,9 @@ mod test_line_tool { let line_vec = end_input - start_input; let angle_radians = line_vec.angle_to(DVec2::X); let angle_degrees = angle_radians.to_degrees(); - let nearest_angle = (angle_degrees / 15.0).round() * 15.0; + let nearest_angle = (angle_degrees / 15.).round() * 15.; - assert!((angle_degrees - nearest_angle).abs() < 1.0, "Angle should snap to the nearest 15 degrees"); + assert!((angle_degrees - nearest_angle).abs() < 1., "Angle should snap to the nearest 15 degrees"); } } } diff --git a/editor/src/messages/tool/tool_messages/spline_tool.rs b/editor/src/messages/tool/tool_messages/spline_tool.rs index 581f4eff8c..d53f043f5e 100644 --- a/editor/src/messages/tool/tool_messages/spline_tool.rs +++ b/editor/src/messages/tool/tool_messages/spline_tool.rs @@ -648,4 +648,155 @@ mod test_spline_tool { assert_point_positions(&extended_vector_data, layer_to_viewport, &all_expected_points, 1e-10); } + + #[tokio::test] + async fn test_spline_with_zoomed_view() { + let mut editor = EditorTestUtils::create(); + editor.new_document().await; + + // Zooming the viewport + editor.handle_message(NavigationMessage::CanvasZoomSet { zoom_factor: 2.0 }).await; + + // Selecting the spline tool + editor.select_tool(ToolType::Spline).await; + + // Adding points by clicking at different positions + editor.click_tool(ToolType::Spline, MouseKeys::LEFT, DVec2::new(50.0, 50.0), ModifierKeys::empty()).await; + editor.click_tool(ToolType::Spline, MouseKeys::LEFT, DVec2::new(100.0, 50.0), ModifierKeys::empty()).await; + editor.click_tool(ToolType::Spline, MouseKeys::LEFT, DVec2::new(150.0, 100.0), ModifierKeys::empty()).await; + + // Finish the spline + editor.handle_message(SplineToolMessage::Confirm).await; + + // Evaluate the graph to ensure everything is processed + editor.eval_graph().await; + + // Get the layer and vector data + let document = editor.active_document(); + let network_interface = &document.network_interface; + let layer = network_interface + .selected_nodes() + .selected_visible_and_unlocked_layers(network_interface) + .next() + .expect("Should have a selected layer"); + let vector_data = network_interface.compute_modified_vector(layer).expect("Should have vector data"); + let layer_to_viewport = document.metadata().transform_to_viewport(layer); + + // Expected points in viewport coordinates + let expected_points = vec![DVec2::new(50.0, 50.0), DVec2::new(100.0, 50.0), DVec2::new(150.0, 100.0)]; + + // Assert all points are correctly positioned + assert_point_positions(&vector_data, layer_to_viewport, &expected_points, 1e-10); + } + + #[tokio::test] + async fn test_spline_with_panned_view() { + let mut editor = EditorTestUtils::create(); + editor.new_document().await; + + let pan_amount = DVec2::new(200.0, 150.0); + editor.handle_message(NavigationMessage::CanvasPan { delta: pan_amount }).await; + + editor.select_tool(ToolType::Spline).await; + + // Add points by clicking at different positions + editor.click_tool(ToolType::Spline, MouseKeys::LEFT, DVec2::new(50.0, 50.0), ModifierKeys::empty()).await; + editor.click_tool(ToolType::Spline, MouseKeys::LEFT, DVec2::new(100.0, 50.0), ModifierKeys::empty()).await; + editor.click_tool(ToolType::Spline, MouseKeys::LEFT, DVec2::new(150.0, 100.0), ModifierKeys::empty()).await; + + editor.handle_message(SplineToolMessage::Confirm).await; + + // Evaluating the graph to ensure everything is processed + editor.eval_graph().await; + + // Get the layer and vector data + let document = editor.active_document(); + let network_interface = &document.network_interface; + let layer = network_interface + .selected_nodes() + .selected_visible_and_unlocked_layers(network_interface) + .next() + .expect("Should have a selected layer"); + let vector_data = network_interface.compute_modified_vector(layer).expect("Should have vector data"); + let layer_to_viewport = document.metadata().transform_to_viewport(layer); + + // Expected points in viewport coordinates + let expected_points = vec![DVec2::new(50.0, 50.0), DVec2::new(100.0, 50.0), DVec2::new(150.0, 100.0)]; + + // Assert all points are correctly positioned + assert_point_positions(&vector_data, layer_to_viewport, &expected_points, 1e-10); + } + + #[tokio::test] + async fn test_spline_with_tilted_view() { + let mut editor = EditorTestUtils::create(); + editor.new_document().await; + + // Tilt/rotate the viewport (45 degrees) + editor.handle_message(NavigationMessage::CanvasTiltSet { angle_radians: 45.0_f64.to_radians() }).await; + editor.select_tool(ToolType::Spline).await; + + editor.click_tool(ToolType::Spline, MouseKeys::LEFT, DVec2::new(50.0, 50.0), ModifierKeys::empty()).await; + editor.click_tool(ToolType::Spline, MouseKeys::LEFT, DVec2::new(100.0, 50.0), ModifierKeys::empty()).await; + editor.click_tool(ToolType::Spline, MouseKeys::LEFT, DVec2::new(150.0, 100.0), ModifierKeys::empty()).await; + + editor.handle_message(SplineToolMessage::Confirm).await; + + // Evaluating the graph to ensure everything is processed + editor.eval_graph().await; + + // Get the layer and vector data + let document = editor.active_document(); + let network_interface = &document.network_interface; + let layer = network_interface + .selected_nodes() + .selected_visible_and_unlocked_layers(network_interface) + .next() + .expect("Should have a selected layer"); + let vector_data = network_interface.compute_modified_vector(layer).expect("Should have vector data"); + let layer_to_viewport = document.metadata().transform_to_viewport(layer); + + // Expected points in viewport coordinates + let expected_points = vec![DVec2::new(50.0, 50.0), DVec2::new(100.0, 50.0), DVec2::new(150.0, 100.0)]; + + // Assert all points are correctly positioned + assert_point_positions(&vector_data, layer_to_viewport, &expected_points, 1e-10); + } + + #[tokio::test] + async fn test_spline_with_combined_transformations() { + let mut editor = EditorTestUtils::create(); + editor.new_document().await; + + // Applying multiple transformations + editor.handle_message(NavigationMessage::CanvasZoomSet { zoom_factor: 1.5 }).await; + editor.handle_message(NavigationMessage::CanvasPan { delta: DVec2::new(100.0, 75.0) }).await; + editor.handle_message(NavigationMessage::CanvasTiltSet { angle_radians: 30.0_f64.to_radians() }).await; + + editor.select_tool(ToolType::Spline).await; + + editor.click_tool(ToolType::Spline, MouseKeys::LEFT, DVec2::new(50.0, 50.0), ModifierKeys::empty()).await; + editor.click_tool(ToolType::Spline, MouseKeys::LEFT, DVec2::new(100.0, 50.0), ModifierKeys::empty()).await; + editor.click_tool(ToolType::Spline, MouseKeys::LEFT, DVec2::new(150.0, 100.0), ModifierKeys::empty()).await; + + editor.handle_message(SplineToolMessage::Confirm).await; + editor.eval_graph().await; + + // Get the layer and vector data + let document = editor.active_document(); + let network_interface = &document.network_interface; + let layer = network_interface + .selected_nodes() + .selected_visible_and_unlocked_layers(network_interface) + .next() + .expect("Should have a selected layer"); + let vector_data = network_interface.compute_modified_vector(layer).expect("Should have vector data"); + let layer_to_viewport = document.metadata().transform_to_viewport(layer); + + // Expected points in viewport coordinates + let expected_points = vec![DVec2::new(50.0, 50.0), DVec2::new(100.0, 50.0), DVec2::new(150.0, 100.0)]; + + // Assert all points are correctly positioned + assert_point_positions(&vector_data, layer_to_viewport, &expected_points, 1e-10); + } } diff --git a/editor/src/messages/tool/transform_layer/transform_layer_message_handler.rs b/editor/src/messages/tool/transform_layer/transform_layer_message_handler.rs index 30f1c239e1..ec4b58fb3a 100644 --- a/editor/src/messages/tool/transform_layer/transform_layer_message_handler.rs +++ b/editor/src/messages/tool/transform_layer/transform_layer_message_handler.rs @@ -745,7 +745,7 @@ mod test_transform_layer { editor.handle_message(TransformLayerMessage::BeginGrab).await; - let translation = DVec2::new(50.0, 50.0); + let translation = DVec2::new(50., 50.); editor.move_mouse(translation.x, translation.y, ModifierKeys::empty(), MouseKeys::NONE).await; editor @@ -760,7 +760,7 @@ mod test_transform_layer { let final_transform = get_layer_transform(&mut editor, layer).await.unwrap(); let translation_diff = (final_transform.translation - original_transform.translation).length(); - assert!(translation_diff > 10.0, "Transform should have changed after applying transformation. Diff: {}", translation_diff); + assert!(translation_diff > 10., "Transform should have changed after applying transformation. Diff: {}", translation_diff); } #[tokio::test] @@ -774,7 +774,7 @@ mod test_transform_layer { let original_transform = get_layer_transform(&mut editor, layer).await.expect("Should be able to get the layer transform"); editor.handle_message(TransformLayerMessage::BeginGrab).await; - editor.move_mouse(50.0, 50.0, ModifierKeys::empty(), MouseKeys::NONE).await; + editor.move_mouse(50., 50., ModifierKeys::empty(), MouseKeys::NONE).await; editor .handle_message(TransformLayerMessage::PointerMove { slow_key: Key::Shift, @@ -794,7 +794,7 @@ mod test_transform_layer { // Verify transform is either restored to original OR reset to identity assert!( - (final_translation - original_translation).length() < 5.0 || final_translation.length() < 0.001, + (final_translation - original_translation).length() < 5. || final_translation.length() < 0.001, "Transform neither restored to original nor reset to identity. Original: {:?}, Final: {:?}", original_translation, final_translation @@ -814,7 +814,7 @@ mod test_transform_layer { editor.handle_message(TransformLayerMessage::BeginRotate).await; - editor.move_mouse(150.0, 50.0, ModifierKeys::empty(), MouseKeys::NONE).await; + editor.move_mouse(150., 50., ModifierKeys::empty(), MouseKeys::NONE).await; editor .handle_message(TransformLayerMessage::PointerMove { @@ -852,7 +852,7 @@ mod test_transform_layer { assert!(!after_cancel.translation.y.is_nan(), "Transform is NaN after cancel"); let translation_diff = (after_cancel.translation - original_transform.translation).length(); - assert!(translation_diff < 1.0, "Translation component changed too much: {}", translation_diff); + assert!(translation_diff < 1., "Translation component changed too much: {}", translation_diff); } #[tokio::test] @@ -868,7 +868,7 @@ mod test_transform_layer { editor.handle_message(TransformLayerMessage::BeginScale).await; - editor.move_mouse(150.0, 150.0, ModifierKeys::empty(), MouseKeys::NONE).await; + editor.move_mouse(150., 150., ModifierKeys::empty(), MouseKeys::NONE).await; editor .handle_message(TransformLayerMessage::PointerMove { @@ -918,7 +918,7 @@ mod test_transform_layer { // Also check translation component is similar let translation_diff = (after_cancel.translation - original_transform.translation).length(); - assert!(translation_diff < 1.0, "Translation component changed too much: {}", translation_diff); + assert!(translation_diff < 1., "Translation component changed too much: {}", translation_diff); } #[tokio::test] @@ -932,7 +932,7 @@ mod test_transform_layer { let original_transform = get_layer_transform(&mut editor, layer).await.unwrap(); editor.handle_message(TransformLayerMessage::BeginGrab).await; - editor.move_mouse(150.0, 130.0, ModifierKeys::empty(), MouseKeys::NONE).await; + editor.move_mouse(150., 130., ModifierKeys::empty(), MouseKeys::NONE).await; editor .handle_message(TransformLayerMessage::PointerMove { slow_key: Key::Shift, @@ -941,7 +941,7 @@ mod test_transform_layer { .await; let after_grab_transform = get_layer_transform(&mut editor, layer).await.unwrap(); - let expected_translation = DVec2::new(50.0, 30.0); + let expected_translation = DVec2::new(50., 30.); let actual_translation = after_grab_transform.translation - original_transform.translation; assert!( (actual_translation - expected_translation).length() < 1e-5, @@ -952,7 +952,7 @@ mod test_transform_layer { // 2. Chain to rotation - from current position to create ~45 degree rotation editor.handle_message(TransformLayerMessage::BeginRotate).await; - editor.move_mouse(190.0, 90.0, ModifierKeys::empty(), MouseKeys::NONE).await; + editor.move_mouse(190., 90., ModifierKeys::empty(), MouseKeys::NONE).await; editor .handle_message(TransformLayerMessage::PointerMove { slow_key: Key::Shift, @@ -970,7 +970,7 @@ mod test_transform_layer { // 3. Chain to scaling - scale(area) up by 2x editor.handle_message(TransformLayerMessage::BeginScale).await; - editor.move_mouse(250.0, 200.0, ModifierKeys::empty(), MouseKeys::NONE).await; + editor.move_mouse(250., 200., ModifierKeys::empty(), MouseKeys::NONE).await; editor .handle_message(TransformLayerMessage::PointerMove { slow_key: Key::Shift, @@ -982,7 +982,7 @@ mod test_transform_layer { let before_scale_det = after_rotate_transform.matrix2.determinant(); let after_scale_det = after_scale_transform.matrix2.determinant(); assert!( - after_scale_det >= 2.0 * before_scale_det, + after_scale_det >= 2. * before_scale_det, "Scale should increase the determinant of the matrix (before: {}, after: {})", before_scale_det, after_scale_det @@ -1005,7 +1005,7 @@ mod test_transform_layer { let original_transform = get_layer_transform(&mut editor, layer).await.unwrap(); - let pan_amount = DVec2::new(200.0, 150.0); + let pan_amount = DVec2::new(200., 150.); editor.handle_message(NavigationMessage::CanvasPan { delta: pan_amount }).await; editor.handle_message(TransformLayerMessage::BeginScale).await; @@ -1017,8 +1017,8 @@ mod test_transform_layer { let scale_x = final_transform.matrix2.x_axis.length() / original_transform.matrix2.x_axis.length(); let scale_y = final_transform.matrix2.y_axis.length() / original_transform.matrix2.y_axis.length(); - assert!((scale_x - 2.0).abs() < 0.1, "Expected scale factor X of 2.0, got: {}", scale_x); - assert!((scale_y - 2.0).abs() < 0.1, "Expected scale factor Y of 2.0, got: {}", scale_y); + assert!((scale_x - 2.).abs() < 0.1, "Expected scale factor X of 2.0, got: {}", scale_x); + assert!((scale_y - 2.).abs() < 0.1, "Expected scale factor Y of 2.0, got: {}", scale_y); } #[tokio::test] @@ -1043,8 +1043,8 @@ mod test_transform_layer { let scale_x = final_transform.matrix2.x_axis.length() / original_transform.matrix2.x_axis.length(); let scale_y = final_transform.matrix2.y_axis.length() / original_transform.matrix2.y_axis.length(); - assert!((scale_x - 2.0).abs() < 0.1, "Expected scale factor X of 2.0, got: {}", scale_x); - assert!((scale_y - 2.0).abs() < 0.1, "Expected scale factor Y of 2.0, got: {}", scale_y); + assert!((scale_x - 2.).abs() < 0.1, "Expected scale factor X of 2.0, got: {}", scale_x); + assert!((scale_y - 2.).abs() < 0.1, "Expected scale factor Y of 2.0, got: {}", scale_y); } #[tokio::test] @@ -1059,7 +1059,11 @@ mod test_transform_layer { // Rotate the document view (45 degrees) editor.handle_message(NavigationMessage::BeginCanvasTilt { was_dispatched_from_menu: false }).await; - editor.handle_message(NavigationMessage::CanvasTiltSet { angle_radians: 45.0_f64.to_radians() }).await; + editor + .handle_message(NavigationMessage::CanvasTiltSet { + angle_radians: (45. as f64).to_radians(), + }) + .await; editor.handle_message(TransformLayerMessage::BeginRotate).await; editor.handle_message(TransformLayerMessage::TypeDigit { digit: 9 }).await; @@ -1073,8 +1077,8 @@ mod test_transform_layer { let angle_change = (final_angle - original_angle).to_degrees(); // Normalize angle between 0 and 360 - let angle_change = ((angle_change % 360.0) + 360.0) % 360.0; - assert!((angle_change - 90.0).abs() < 0.1, "Expected rotation of 90 degrees, got: {}", angle_change); + let angle_change = ((angle_change % 360.) + 360.) % 360.; + assert!((angle_change - 90.).abs() < 0.1, "Expected rotation of 90 degrees, got: {}", angle_change); } #[tokio::test] @@ -1088,14 +1092,14 @@ mod test_transform_layer { let point_id = PointId::generate(); let modification_type = VectorModificationType::InsertPoint { id: point_id, - position: DVec2::new(100.0, 100.0), + position: DVec2::new(100., 100.), }; editor.handle_message(GraphOperationMessage::Vector { layer, modification_type }).await; editor.handle_message(ToolMessage::ActivateTool { tool_type: ToolType::Select }).await; // Testing grab operation - just checking that it doesn't crash. editor.handle_message(TransformLayerMessage::BeginGrab).await; - editor.move_mouse(150.0, 150.0, ModifierKeys::empty(), MouseKeys::NONE).await; + editor.move_mouse(150., 150., ModifierKeys::empty(), MouseKeys::NONE).await; editor .handle_message(TransformLayerMessage::PointerMove { slow_key: Key::Shift, @@ -1131,8 +1135,8 @@ mod test_transform_layer { let scale_y = near_zero_transform.matrix2.y_axis.length(); assert!(scale_x < 0.001, "Scale factor X should be near zero, got: {}", scale_x); assert!(scale_y < 0.001, "Scale factor Y should be near zero, got: {}", scale_y); - assert!(scale_x > 0.0, "Scale factor X should not be exactly zero"); - assert!(scale_y > 0.0, "Scale factor Y should not be exactly zero"); + assert!(scale_x > 0., "Scale factor X should not be exactly zero"); + assert!(scale_y > 0., "Scale factor Y should not be exactly zero"); editor.handle_message(TransformLayerMessage::BeginScale).await; editor.handle_message(TransformLayerMessage::TypeDigit { digit: 2 }).await; @@ -1143,8 +1147,8 @@ mod test_transform_layer { let new_scale_x = final_transform.matrix2.x_axis.length(); let new_scale_y = final_transform.matrix2.y_axis.length(); - assert!(new_scale_x > 0.0, "After rescaling, scale factor X should be non-zero"); - assert!(new_scale_y > 0.0, "After rescaling, scale factor Y should be non-zero"); + assert!(new_scale_x > 0., "After rescaling, scale factor X should be non-zero"); + assert!(new_scale_y > 0., "After rescaling, scale factor Y should be non-zero"); } #[tokio::test] @@ -1180,7 +1184,7 @@ mod test_transform_layer { editor.handle_message(NodeGraphMessage::SelectedNodesSet { nodes: vec![layers[0].to_node()] }).await; let original_transform = get_layer_transform(&mut editor, layers[0]).await.unwrap(); editor.handle_message(TransformLayerMessage::BeginGrab).await; - editor.move_mouse(50.0, 50.0, ModifierKeys::empty(), MouseKeys::NONE).await; + editor.move_mouse(50., 50., ModifierKeys::empty(), MouseKeys::NONE).await; editor .handle_message(TransformLayerMessage::PointerMove { slow_key: Key::Shift, @@ -1200,7 +1204,7 @@ mod test_transform_layer { let original_transform_1 = get_layer_transform(&mut editor, layers[0]).await.unwrap(); let original_transform_2 = get_layer_transform(&mut editor, layers[1]).await.unwrap(); editor.handle_message(TransformLayerMessage::BeginRotate).await; - editor.move_mouse(200.0, 50.0, ModifierKeys::empty(), MouseKeys::NONE).await; + editor.move_mouse(200., 50., ModifierKeys::empty(), MouseKeys::NONE).await; editor .handle_message(TransformLayerMessage::PointerMove { slow_key: Key::Shift, @@ -1244,7 +1248,7 @@ mod test_transform_layer { .await; let original_child_transform = get_layer_transform(&mut editor, child_layer_id).await.unwrap(); editor.handle_message(TransformLayerMessage::BeginGrab).await; - editor.move_mouse(30.0, 30.0, ModifierKeys::empty(), MouseKeys::NONE).await; + editor.move_mouse(30., 30., ModifierKeys::empty(), MouseKeys::NONE).await; editor .handle_message(TransformLayerMessage::PointerMove { slow_key: Key::Shift,