136 lines
3.9 KiB
Rust
136 lines
3.9 KiB
Rust
use hcie_engine_api::Engine;
|
|
|
|
#[test]
|
|
fn test_engine_new() {
|
|
let engine = Engine::new(100, 200);
|
|
assert_eq!(engine.canvas_width(), 100);
|
|
assert_eq!(engine.canvas_height(), 200);
|
|
assert_eq!(engine.get_layer_count(), 1);
|
|
assert!(!engine.is_modified(), "new engine should not be modified");
|
|
}
|
|
|
|
#[test]
|
|
fn test_engine_add_layer() {
|
|
let mut engine = Engine::new(10, 10);
|
|
let id = engine.add_layer("Layer 1");
|
|
assert_ne!(id, 0);
|
|
assert_eq!(engine.get_layer_count(), 2);
|
|
}
|
|
|
|
#[test]
|
|
fn test_engine_delete_layer() {
|
|
let mut engine = Engine::new(10, 10);
|
|
let id = engine.active_layer_id();
|
|
engine.delete_layer(id);
|
|
assert!(!engine.layer_infos().is_empty(), "should keep at least background layer");
|
|
}
|
|
|
|
#[test]
|
|
fn test_engine_composite_pixels() {
|
|
let mut engine = Engine::new(10, 10);
|
|
engine.draw_filled_rect_rgba(0, 0, 10, 10, [255, 0, 0, 255]);
|
|
let pixels = engine.get_composite_pixels();
|
|
assert_eq!(pixels.len(), 10 * 10 * 4);
|
|
assert_eq!(pixels[0], 255, "R channel");
|
|
assert_eq!(pixels[1], 0, "G channel");
|
|
}
|
|
|
|
#[test]
|
|
fn test_engine_undo() {
|
|
let mut engine = Engine::new(10, 10);
|
|
engine.draw_filled_rect_rgba(0, 0, 10, 10, [255, 0, 0, 255]);
|
|
assert!(engine.is_modified());
|
|
assert!(engine.undo(), "undo should succeed after modification");
|
|
assert!(!engine.undo(), "double undo should return false at boundary");
|
|
}
|
|
|
|
#[test]
|
|
fn test_engine_undo_returns_false_at_boundary() {
|
|
let mut engine = Engine::new(10, 10);
|
|
assert!(!engine.undo(), "no history should return false");
|
|
}
|
|
|
|
#[test]
|
|
fn test_engine_tab_label() {
|
|
let engine = Engine::new(10, 10);
|
|
let label = engine.tab_label();
|
|
assert!(label.contains("Untitled"), "default name should show");
|
|
}
|
|
|
|
#[test]
|
|
fn test_engine_layer_info() {
|
|
let engine = Engine::new(10, 10);
|
|
let id = engine.active_layer_id();
|
|
let info = engine.get_layer_info(id);
|
|
assert!(info.is_some());
|
|
let info = info.unwrap();
|
|
assert_eq!(info.width, 10);
|
|
assert_eq!(info.height, 10);
|
|
}
|
|
|
|
#[test]
|
|
fn test_engine_get_pixel() {
|
|
let mut engine = Engine::new(10, 10);
|
|
engine.draw_filled_rect_rgba(0, 0, 10, 10, [255, 128, 64, 255]);
|
|
let px = engine.get_pixel(engine.active_layer_id(), 5, 5);
|
|
assert!(px.is_some());
|
|
let px = px.unwrap();
|
|
assert_eq!(px[0], 255);
|
|
assert_eq!(px[1], 128);
|
|
assert_eq!(px[2], 64);
|
|
}
|
|
|
|
#[test]
|
|
fn test_engine_layer_count() {
|
|
let mut engine = Engine::new(10, 10);
|
|
assert_eq!(engine.get_layer_count(), 1);
|
|
engine.add_layer("new");
|
|
assert_eq!(engine.get_layer_count(), 2);
|
|
}
|
|
|
|
#[test]
|
|
fn test_engine_get_all_layer_ids() {
|
|
let mut engine = Engine::new(10, 10);
|
|
let id1 = engine.add_layer("A");
|
|
let id2 = engine.add_layer("B");
|
|
let ids = engine.get_all_layer_ids();
|
|
assert!(ids.contains(&id1));
|
|
assert!(ids.contains(&id2));
|
|
}
|
|
|
|
#[test]
|
|
fn test_engine_set_layer_visible() {
|
|
let mut engine = Engine::new(10, 10);
|
|
let id = engine.active_layer_id();
|
|
engine.set_layer_visible(id, false);
|
|
let info = engine.get_layer_info(id).unwrap();
|
|
assert!(!info.visible);
|
|
}
|
|
|
|
#[test]
|
|
fn test_engine_set_layer_opacity() {
|
|
let mut engine = Engine::new(10, 10);
|
|
let id = engine.active_layer_id();
|
|
engine.set_layer_opacity(id, 0.5);
|
|
let info = engine.get_layer_info(id).unwrap();
|
|
assert!((info.opacity - 0.5).abs() < 0.001);
|
|
}
|
|
|
|
#[test]
|
|
fn test_engine_rename_layer() {
|
|
let mut engine = Engine::new(10, 10);
|
|
let id = engine.active_layer_id();
|
|
engine.rename_layer(id, "NewName");
|
|
let info = engine.get_layer_info(id).unwrap();
|
|
assert_eq!(info.name, "NewName");
|
|
}
|
|
|
|
#[test]
|
|
fn test_engine_apply_filter() {
|
|
let mut engine = Engine::new(10, 10);
|
|
engine.draw_filled_rect_rgba(0, 0, 10, 10, [100, 100, 100, 255]);
|
|
engine.apply_filter("invert", serde_json::json!({}));
|
|
let ctx = engine.get_composite_pixels();
|
|
assert_ne!(ctx[0], 100, "invert should change pixel values");
|
|
}
|