mirror of
https://github.com/storytold/figcraft.git
synced 2026-10-25 10:56:48 -06:00
* Dev profile: line tables for workspace crates, no debug info for dependencies * Tests: one integration-test binary per crate with several test files * xtask ci: nextest, doctests, tests without examples, --keep-going; add xtask test
25 lines
1.3 KiB
Rust
25 lines
1.3 KiB
Rust
//! FIG export + import keeps all three distributed main-axis alignments distinct.
|
|
|
|
use figcraft_doc::{AutoLayout, Document, MainAlign, NodeKind};
|
|
use figcraft_format::fig;
|
|
|
|
#[test]
|
|
fn distributed_alignment_round_trip() {
|
|
let mut results = Vec::new();
|
|
for expected in [MainAlign::SpaceBetween, MainAlign::SpaceAround, MainAlign::SpaceEvenly] {
|
|
let mut doc = Document::new("Alignment");
|
|
let page = doc.first_page().unwrap();
|
|
let frame = doc.create(page, NodeKind::Frame, "Frame", 0.0, 0.0, 200.0, 40.0).unwrap();
|
|
doc.node_mut(frame).unwrap().layout = Some(AutoLayout { main_align: expected, ..Default::default() });
|
|
let (native, _) = figcraft_format::load_bytes(&figcraft_format::save_bytes(&doc, None).unwrap()).unwrap();
|
|
assert_eq!(native.node(frame).unwrap().layout.as_ref().unwrap().main_align, expected);
|
|
let (bytes, export_warnings) = fig::export(&doc, None).unwrap();
|
|
let (imported, import_warnings) = fig::import(&bytes, "Alignment").unwrap();
|
|
let actual = imported.nodes().find(|n| n.name == "Frame").unwrap().layout.as_ref().unwrap().main_align;
|
|
assert!(export_warnings.is_empty());
|
|
assert!(import_warnings.is_empty());
|
|
results.push((expected, actual));
|
|
}
|
|
assert!(results.iter().all(|(expected, actual)| expected == actual), "{results:?}");
|
|
}
|