@@ -228,7 +228,7 @@ TEST(MegaCircuitBuilder, EccOpBlockIsFirstInTrace)
228228 auto c = builder.add_variable (builder.get_variable (a) + builder.get_variable (b));
229229 builder.create_add_gate ({ a, b, c, 1 , 1 , -1 , 0 });
230230
231- builder.finalize_circuit (true );
231+ builder.finalize_circuit ();
232232 builder.blocks .compute_offsets (MegaFlavor::TRACE_OFFSET);
233233
234234 // Verify ecc_op block starts at offset TRACE_OFFSET + NUM_ZERO_ROWS = NUM_ZERO_ROWS for non-ZK Mega.
@@ -247,23 +247,35 @@ TEST(MegaCircuitBuilder, EccOpBlockIsFirstInTrace)
247247
248248/* *
249249 * @brief Verify that an empty circuit can be finalized and passes circuit checks
250- * @details Finalization should add required gates to ensure all polynomials are non-zero
251- * @note This is a "completeness" test; unlikely to be a use-case.
252250 */
253251TEST (MegaCircuitBuilder, EmptyCircuitFinalization)
254252{
255253 auto builder = MegaCircuitBuilder ();
256254
257255 // Completely empty circuit - no gates added
258256 EXPECT_EQ (builder.blocks .ecc_op .size (), 0 );
257+ EXPECT_FALSE (builder.circuit_finalized );
259258
260- builder.finalize_circuit (true );
259+ builder.finalize_circuit ();
261260
262- // After finalization, ecc_op block remains empty (no dummy ops needed)
261+ EXPECT_TRUE (builder.circuit_finalized );
262+
263+ // After finalization: only zero_idx arithmetic gates and the corresponding public inputs remain.
264+ // No dummy ecc ops, databus entries, or other gate types are added.
265+ EXPECT_EQ (builder.blocks .arithmetic .size (), 4 ); // zero_idx setup
266+ EXPECT_EQ (builder.blocks .pub_inputs .size (), 0 );
263267 EXPECT_EQ (builder.blocks .ecc_op .size (), 0 );
264- EXPECT_GT (builder.get_calldata ().size (), 0 ) << " Finalization should add databus entries" ;
265- EXPECT_GT (builder.get_secondary_calldata ().size (), 0 );
266- EXPECT_GT (builder.get_return_data ().size (), 0 );
268+ EXPECT_EQ (builder.blocks .busread .size (), 0 );
269+ EXPECT_EQ (builder.blocks .lookup .size (), 0 );
270+ EXPECT_EQ (builder.blocks .delta_range .size (), 0 );
271+ EXPECT_EQ (builder.blocks .elliptic .size (), 0 );
272+ EXPECT_EQ (builder.blocks .memory .size (), 0 );
273+ EXPECT_EQ (builder.blocks .nnf .size (), 0 );
274+ EXPECT_EQ (builder.blocks .poseidon2_external .size (), 0 );
275+ EXPECT_EQ (builder.blocks .poseidon2_internal .size (), 0 );
276+ EXPECT_EQ (builder.get_calldata ().size (), 0 );
277+ EXPECT_EQ (builder.get_secondary_calldata ().size (), 0 );
278+ EXPECT_EQ (builder.get_return_data ().size (), 0 );
267279
268280 EXPECT_TRUE (CircuitChecker::check (builder));
269281}
0 commit comments