35 lines
1.5 KiB
Rust
35 lines
1.5 KiB
Rust
//! Primary text frames retain all columns supported by the new-document command.
|
|
use designcraft_doc::Document;
|
|
use designcraft_engine::Session;
|
|
use serde_json::json;
|
|
|
|
fn assert_primary_columns(doc: &Document, expected: u32) {
|
|
let mut frames = 0;
|
|
for story in doc.stories.values() {
|
|
for spec in designcraft_compose::frame_specs(doc, story.id) {
|
|
assert_eq!(spec.opts.columns, expected);
|
|
let columns = spec.columns();
|
|
assert_eq!(columns.len(), expected as usize);
|
|
assert!(columns.iter().all(|r| r.width() > 0. && [r.x0, r.x1, r.y0, r.y1].into_iter().all(f64::is_finite)));
|
|
frames += 1;
|
|
}
|
|
}
|
|
assert!(frames > 0, "the primary text frame must exist");
|
|
}
|
|
|
|
#[test]
|
|
fn primary_columns_survive_composition_native_reopen_and_idml_round_trip() {
|
|
for columns in [41, 216] {
|
|
let mut s = Session::new();
|
|
s.execute("file.new", &json!({"columns":columns,"gutter":0,"primaryTextFrame":true})).unwrap();
|
|
assert_primary_columns(&s.doc().unwrap().doc, columns);
|
|
let bytes = s.execute("file.serialize", &json!({})).unwrap();
|
|
let mut reopened = Session::new();
|
|
reopened.execute("file.openBytes", &json!({"name":"primary-columns.designcraft","base64":bytes["base64"]})).unwrap();
|
|
assert_primary_columns(&reopened.doc().unwrap().doc, columns);
|
|
let idml = designcraft_idml::export_idml(&reopened.doc().unwrap().doc);
|
|
let imported = designcraft_idml::import_idml(&idml).unwrap();
|
|
assert_primary_columns(&imported, columns);
|
|
}
|
|
}
|