mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2025-07-08 00:05:00 +00:00
Add test for scaling objects to zero without any crash (#2491)
* Add test for scaling objects to zero * added non zero scale after near zero scale to check if everything is working ifine * unnecessary change * cli failing * chore: upgrade openssl to fix RUSTSEC-2025-0022 * cli failing * new changes
This commit is contained in:
parent
e11b57a7af
commit
1001ec2740
2 changed files with 47 additions and 5 deletions
8
Cargo.lock
generated
8
Cargo.lock
generated
|
@ -4423,9 +4423,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "openssl"
|
||||
version = "0.10.71"
|
||||
version = "0.10.72"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd"
|
||||
checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"cfg-if",
|
||||
|
@ -4455,9 +4455,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
|
|||
|
||||
[[package]]
|
||||
name = "openssl-sys"
|
||||
version = "0.9.106"
|
||||
version = "0.9.107"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd"
|
||||
checksum = "8288979acd84749c744a9014b4382d42b8f7b2592847b5afb2ed29e5d16ede07"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"libc",
|
||||
|
|
|
@ -703,7 +703,10 @@ impl MessageHandler<TransformLayerMessage, TransformData<'_>> for TransformLayer
|
|||
#[cfg(test)]
|
||||
mod test_transform_layer {
|
||||
use crate::messages::{
|
||||
portfolio::document::graph_operation::{transform_utils, utility_types::ModifyInputsContext},
|
||||
portfolio::document::graph_operation::{
|
||||
transform_utils,
|
||||
utility_types::{ModifyInputsContext, TransformIn},
|
||||
},
|
||||
prelude::Message,
|
||||
tool::transform_layer::transform_layer_message_handler::VectorModificationType,
|
||||
};
|
||||
|
@ -1097,4 +1100,43 @@ mod test_transform_layer {
|
|||
let final_transform = get_layer_transform(&mut editor, layer).await;
|
||||
assert!(final_transform.is_some(), "Transform node should exist after grab operation");
|
||||
}
|
||||
#[tokio::test]
|
||||
async fn test_scale_to_zero_then_rescale() {
|
||||
let mut editor = EditorTestUtils::create();
|
||||
editor.new_document().await;
|
||||
editor.drag_tool(ToolType::Rectangle, 0., 0., 100., 100., ModifierKeys::empty()).await;
|
||||
let document = editor.active_document();
|
||||
let layer = document.metadata().all_layers().next().unwrap();
|
||||
|
||||
// First scale to near-zero
|
||||
editor.handle_message(TransformLayerMessage::BeginScale).await;
|
||||
editor.handle_message(TransformLayerMessage::TypeDigit { digit: 0 }).await;
|
||||
editor.handle_message(TransformLayerMessage::TypeDecimalPoint).await;
|
||||
editor.handle_message(TransformLayerMessage::TypeDigit { digit: 0 }).await;
|
||||
editor.handle_message(TransformLayerMessage::TypeDigit { digit: 0 }).await;
|
||||
editor.handle_message(TransformLayerMessage::TypeDigit { digit: 0 }).await;
|
||||
editor.handle_message(TransformLayerMessage::TypeDigit { digit: 1 }).await;
|
||||
editor.handle_message(TransformLayerMessage::ApplyTransformOperation { final_transform: true }).await;
|
||||
|
||||
let near_zero_transform = get_layer_transform(&mut editor, layer).await.unwrap();
|
||||
// Verify scale is near zero.
|
||||
let scale_x = near_zero_transform.matrix2.x_axis.length();
|
||||
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");
|
||||
|
||||
editor.handle_message(TransformLayerMessage::BeginScale).await;
|
||||
editor.handle_message(TransformLayerMessage::TypeDigit { digit: 2 }).await;
|
||||
editor.handle_message(TransformLayerMessage::ApplyTransformOperation { final_transform: true }).await;
|
||||
|
||||
let final_transform = get_layer_transform(&mut editor, layer).await.unwrap();
|
||||
assert!(final_transform.is_finite(), "Transform should be finite after rescaling");
|
||||
|
||||
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");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue