@@ -138,6 +138,30 @@ int main() {
138138 assert (parsed.document .objects [0 ].meshes [0 ].vertex_count == 4U );
139139 assert (triangle_count (parsed.document .objects [0 ].meshes [0 ]) == 1U );
140140
141+ const auto explicit_plan = plan_append_break_vertex_copy_layout (
142+ parsed.document , 0U , 0U , 3U );
143+ assert (explicit_plan.valid );
144+ assert (explicit_plan.grows ());
145+ assert (explicit_plan.source_vertex_count == 4U );
146+ assert (explicit_plan.source_file_size == source.size ());
147+ assert (explicit_plan.output_file_size > explicit_plan.source_file_size );
148+ assert (explicit_plan.size_delta () ==
149+ explicit_plan.output_file_size - explicit_plan.source_file_size );
150+
151+ const auto automatic_plan =
152+ find_append_break_vertex_growth_target (parsed.document );
153+ assert (automatic_plan.valid );
154+ assert (automatic_plan.grows ());
155+ assert (automatic_plan.object_index == 0U );
156+ assert (automatic_plan.mesh_index == 0U );
157+ assert (automatic_plan.source_vertex_index == 3U );
158+ assert (automatic_plan.source_file_size == explicit_plan.source_file_size );
159+ assert (automatic_plan.output_file_size == explicit_plan.output_file_size );
160+
161+ const auto invalid_plan = plan_append_break_vertex_copy_layout (
162+ parsed.document , 0U , 0U , 4U );
163+ assert (!invalid_plan.valid );
164+
141165 auto document = parsed.document ;
142166 const auto edit = append_break_vertex_copy (document, 0U , 0U , 3U );
143167 assert (edit.ok ());
@@ -153,6 +177,7 @@ int main() {
153177 const auto rebuilt = Writer::write (document, WriteMode::canonical_rebuild);
154178 assert (rebuilt.ok ());
155179 assert (rebuilt.bytes .size () > source.size ());
180+ assert (rebuilt.bytes .size () == explicit_plan.output_file_size );
156181 assert (!rebuilt.bit_identical_to_source );
157182
158183 const auto reparsed = Parser::parse (
0 commit comments