///|
test "measured lanes retain source order and expose checker findings" {
let view = @model.Swimlane::new(
"review",
[
@model.Node::new("A", lane="Customer"),
@model.Node::new("B", lane="Support"),
],
[@model.Connection::new("AB", "A", "B")],
direction=LR,
lanes=[@model.Lane::new("Customer"), @model.Lane::new("Support")],
)
let result = @layout.layout(view)
let geometry = result.geometry.unwrap()
let customer = geometry.shapes
.iter()
.find_first(s => s.id == "Customer")
.unwrap()
let support = geometry.shapes
.iter()
.find_first(s => s.id == "Support")
.unwrap()
assert_true(customer.box.y < support.box.y)
assert_eq(geometry.connections[0].connection.id, "AB")
assert_eq(
@layout.check(geometry, @layout.palette(@theme.Theme::classic().light)),
[],
)
assert_eq(
@layout.layout(view, limits=@layout.Limits::new(work=1)).geometry,
None,
)
}pub struct Connection {
connection : Connection
index : Int
source : String
target : String
line : ReadOnlyArray[Point]
label : Label?
} derive(Eq, Debug)pub struct Geometry {
view : Swimlane
shapes : ReadOnlyArray[Shape]
connections : ReadOnlyArray[Connection]
width : Int
height : Int
} derive(Eq, Debug)fn label_text(text : String) -> Stringfn svg_number(value : Double) -> String