use crate::demos::{assert_dimensions, assert_validates, capture_render_info, parse_content};
#[test]
fn test_transform_mirror_horizontal() {
let jsonl = include_str!("../../../examples/demos/sprites/transforms.jsonl");
assert_validates(jsonl, true);
let (palette_registry, sprite_registry, _) = parse_content(jsonl);
sprite_registry
.resolve("arrow_right", &palette_registry, false)
.expect("Source sprite 'arrow_right' should resolve");
sprite_registry
.resolve("arrow_left", &palette_registry, false)
.expect("Transformed sprite 'arrow_left' should resolve");
let info = capture_render_info(jsonl, "arrow_left");
assert_eq!(info.width, 3, "Mirrored sprite width should be 3");
assert_eq!(info.height, 3, "Mirrored sprite height should be 3");
}
#[test]
fn test_transform_rotate() {
let jsonl = include_str!("../../../examples/demos/sprites/transforms.jsonl");
assert_dimensions(jsonl, "arrow_right", 3, 3);
assert_dimensions(jsonl, "arrow_down", 3, 3);
}
#[test]
fn test_transform_scale() {
let jsonl = include_str!("../../../examples/demos/sprites/transforms.jsonl");
assert_dimensions(jsonl, "arrow_right", 3, 3);
assert_dimensions(jsonl, "arrow_scaled", 6, 6);
}
#[test]
fn test_transform_source_reference() {
let jsonl = include_str!("../../../examples/demos/sprites/transforms.jsonl");
let (_, sprite_registry, _) = parse_content(jsonl);
let arrow_left =
sprite_registry.get_sprite("arrow_left").expect("Sprite 'arrow_left' should exist");
assert_eq!(
arrow_left.source.as_deref(),
Some("arrow_right"),
"arrow_left should reference 'arrow_right' as source"
);
let transform = arrow_left.transform.as_ref().expect("arrow_left should have transform");
assert!(!transform.is_empty(), "Transform should not be empty");
}
#[test]
fn test_transform_chain() {
let jsonl = include_str!("../../../examples/demos/sprites/transforms.jsonl");
let (_, sprite_registry, _) = parse_content(jsonl);
let scaled =
sprite_registry.get_sprite("arrow_scaled").expect("Sprite 'arrow_scaled' should exist");
let transform = scaled.transform.as_ref().expect("Should have transform");
assert_eq!(transform.len(), 1, "Should have exactly 1 transform");
let spec_str = format!("{:?}", transform[0]);
assert!(
spec_str.contains("Scale") || spec_str.contains("2.0"),
"Transform should be a scale by 2.0"
);
}