Skip to content

Commit 0c3cae2

Browse files
Add Spline tool tests for drawing within a transformed artboard (#2575)
* Add Spline tool tests for drawing within a transformed artboard * Refactor spline tool test to use click_tool and add draw_spline helper method * refactor asserting point positions * Fix decimal fomat --------- Co-authored-by: Keavon Chambers <[email protected]>
1 parent d445bff commit 0c3cae2

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

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

+45
Original file line numberDiff line numberDiff line change
@@ -537,6 +537,7 @@ fn delete_preview(tool_data: &mut SplineToolData, responses: &mut VecDeque<Messa
537537

538538
#[cfg(test)]
539539
mod test_spline_tool {
540+
use crate::messages::portfolio::document::graph_operation::utility_types::TransformIn;
540541
use crate::messages::tool::tool_messages::spline_tool::find_spline;
541542
use crate::test_utils::test_prelude::*;
542543
use glam::DAffine2;
@@ -799,4 +800,48 @@ mod test_spline_tool {
799800
// Assert all points are correctly positioned
800801
assert_point_positions(&vector_data, layer_to_viewport, &expected_points, 1e-10);
801802
}
803+
804+
#[tokio::test]
805+
async fn test_spline_tool_with_transformed_artboard() {
806+
let mut editor = EditorTestUtils::create();
807+
editor.new_document().await;
808+
809+
editor.drag_tool(ToolType::Artboard, 0., 0., 500., 500., ModifierKeys::empty()).await;
810+
let document = editor.active_document();
811+
let artboard_layer = document.network_interface.selected_nodes().selected_layers(document.metadata()).next().unwrap();
812+
813+
editor
814+
.handle_message(GraphOperationMessage::TransformSet {
815+
layer: artboard_layer,
816+
transform: DAffine2::from_scale_angle_translation(DVec2::new(1.5, 1.2), 30_f64.to_radians(), DVec2::new(50., 25.)),
817+
transform_in: TransformIn::Local,
818+
skip_rerender: false,
819+
})
820+
.await;
821+
822+
let spline_points = [DVec2::new(100., 100.), DVec2::new(200., 150.), DVec2::new(300., 100.)];
823+
824+
editor.draw_spline(&spline_points).await;
825+
826+
let document = editor.active_document();
827+
828+
let mut layers = document.metadata().all_layers();
829+
layers.next();
830+
831+
let spline_layer = layers.next().expect("Failed to find the spline layer");
832+
assert!(find_spline(document, spline_layer).is_some(), "Spline node not found in the layer");
833+
834+
let vector_data = document.network_interface.compute_modified_vector(spline_layer).expect("Vector data not found for the spline layer");
835+
836+
// Verify we have the correct number of points and segments
837+
let point_count = vector_data.point_domain.ids().len();
838+
let segment_count = vector_data.segment_domain.ids().len();
839+
840+
assert_eq!(point_count, 3, "Expected 3 points in the spline, found {}", point_count);
841+
assert_eq!(segment_count, 2, "Expected 2 segments in the spline, found {}", segment_count);
842+
843+
let layer_to_viewport = document.metadata().transform_to_viewport(spline_layer);
844+
845+
assert_point_positions(&vector_data, layer_to_viewport, &spline_points, 1e-10);
846+
}
802847
}

0 commit comments

Comments
 (0)