use step_io::build::{CurveInput, FaceBoundInput, Frame, SurfaceInput};
use step_io::generated::model as m;
use step_io::{StepBuilder, read};
#[test]
fn low_level_layer_on_builder_face_round_trips() {
let mut b = StepBuilder::new().expect("builder");
let part = b.part("plate").expect("part");
let v0 = b.vertex([0.0, 0.0, 0.0]).expect("v0");
let v1 = b.vertex([1.0, 0.0, 0.0]).expect("v1");
let v2 = b.vertex([1.0, 1.0, 0.0]).expect("v2");
let e0 = b.edge(v0, v1, CurveInput::Line).expect("e0");
let e1 = b.edge(v1, v2, CurveInput::Line).expect("e1");
let e2 = b.edge(v2, v0, CurveInput::Line).expect("e2");
let face = b
.face(
SurfaceInput::Plane(Frame {
origin: [0.0; 3],
axis: [0.0, 0.0, 1.0],
ref_dir: [1.0, 0.0, 0.0],
}),
true,
vec![FaceBoundInput::outer(vec![
(e0, true),
(e1, true),
(e2, true),
])],
)
.expect("face");
b.solid(part, "plate body", vec![face]).expect("solid");
b.author()
.add_presentation_layer_assignment(
"L1".to_owned(),
String::new(),
vec![m::LayeredItemRef::AdvancedFace(face)],
)
.expect("layer assignment");
let text = b.finish().expect("finish");
let (model, report) = read(text.as_bytes()).expect("re-read");
assert!(report.dropped.is_empty(), "drops: {:?}", report.dropped);
let scene = model.scene();
let solids: Vec<_> = scene.all_solids().collect();
let faces: Vec<_> = solids[0].faces().collect();
assert_eq!(faces[0].layer(), Some("L1"));
}