makepad/libs/flow/tests/engine_gen_routing.rs

72 lines
2.2 KiB
Rust

mod support;
use makepad_ai_hub::registry::Domain;
use makepad_flow::engine::executors::gen::GenExecutor;
use makepad_flow::engine::executors::Executor;
use makepad_flow::graph::evaluate;
use makepad_flow::{PortType, Value};
use std::sync::Arc;
use support::FakeGen;
#[test]
fn inpaint_and_control_media_follow_their_backend_wire_contracts() {
let source = r#"use mod.flow.*
let inpaint = Inpaint{}
let control = Control{}
Flow{inpaint, control}
"#;
let graph = evaluate(source, "gen-routing.splash").unwrap();
let fake = FakeGen::done();
let requests = fake.requests.clone();
let inpaint = graph.nodes.iter().find(|node| node.id == "inpaint").unwrap();
let mut executor = GenExecutor::new(Arc::new(fake.clone()), ("routing".to_string(), 1));
executor
.start(
inpaint,
&[
("image".to_string(), Value::media(PortType::Image, "image/png", vec![1])),
("mask".to_string(), Value::media(PortType::Image, "image/png", vec![2])),
],
)
.unwrap();
let control = graph.nodes.iter().find(|node| node.id == "control").unwrap();
let mut executor = GenExecutor::new(Arc::new(fake), ("routing".to_string(), 1));
executor
.start(
control,
&[(
"control".to_string(),
Value::media(PortType::Image, "image/png", vec![3]),
)],
)
.unwrap();
let requests = requests.lock().unwrap();
let inpaint = &requests
.iter()
.find(|(domain, _)| *domain == Domain::Inpaint)
.unwrap()
.1;
assert!(inpaint.input_b64.is_none());
assert_eq!(
inpaint
.inputs
.as_ref()
.unwrap()
.iter()
.map(|input| input.name.as_str())
.collect::<Vec<_>>(),
["image", "mask"]
);
let control = &requests
.iter()
.find(|(domain, _)| *domain == Domain::Control)
.unwrap()
.1;
assert!(control.input_b64.is_some());
assert_eq!(control.input_content_type.as_deref(), Some("image/png"));
assert!(control.inputs.as_deref().unwrap_or_default().is_empty());
}