use crate::env::{Env, RuntimeState};
use crate::lowering::{LoweringContext, build_layout_tree};
use crate::ui::traits::Lower;
use crate::ui::Node;
use crate::ui::widgets::container::Container;
use crate::ui::widgets::transform::Transform;
use fission_ir::{CoreIR, NodeId, Op, LayoutOp};
use fission_layout::{LayoutEngine, LayoutSize};
use std::sync::Arc;
#[test]
fn test_transform_lowering() {
let env = Env::default();
let runtime_state = RuntimeState::default();
let matrix = [
1.0, 0.0, 0.0, 0.0,
0.0, 1.0, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0,
0.0, 0.0, 0.0, 1.0,
];
let transform = Transform {
transform: matrix,
child: Box::new(Container::default().into_node()),
..Default::default()
};
let mut cx = LoweringContext::new(&env, &runtime_state, None, None);
let root_id = transform.lower(&mut cx);
let node = cx.ir.nodes.get(&root_id).unwrap();
if let Op::Layout(LayoutOp::Transform { transform: m }) = &node.op {
assert_eq!(*m, matrix);
} else {
panic!("Expected LayoutOp::Transform, got {:?}", node.op);
}
}