@@ -389,4 +389,85 @@ BOOST_AUTO_TEST_CASE(blueprint_assignment_proxy_save_shared_test) {
389389 BOOST_ASSERT (var_value (assignment, res[1 ]) == 2 );
390390
391391 BOOST_ASSERT (assignment.shared_column_size (0 ) == 2 );
392+ }
393+
394+ BOOST_AUTO_TEST_CASE (blueprint_assignment_proxy_fill_constant_test) {
395+ using BlueprintFieldType = typename nil::crypto3::algebra::curves::pallas::base_field_type;
396+ constexpr std::size_t WitnessColumns = 15 ;
397+ constexpr std::size_t PublicInputColumns = 1 ;
398+ constexpr std::size_t ConstantColumns = 5 ;
399+ constexpr std::size_t SelectorColumns = 35 ;
400+
401+ using ArithmetizationParams =
402+ nil::crypto3::zk::snark::plonk_arithmetization_params<WitnessColumns, PublicInputColumns, ConstantColumns, SelectorColumns>;
403+ using ArithmetizationType = nil::crypto3::zk::snark::plonk_constraint_system<BlueprintFieldType, ArithmetizationParams>;
404+ using var = nil::crypto3::zk::snark::plonk_variable<typename BlueprintFieldType::value_type>;
405+ using column_type = typename nil::crypto3::zk::snark::plonk_column<BlueprintFieldType>;
406+
407+ auto assignment_ptr = std::make_shared<assignment<ArithmetizationType>>();
408+ assignment_proxy<ArithmetizationType> assignment (assignment_ptr, 0 );
409+
410+ const column_type constant_col = {1 , 2 , 3 , 4 , 5 };
411+ assignment.fill_constant (1 , constant_col);
412+
413+ BOOST_ASSERT (assignment.constant_column_size (1 ) == 5 );
414+ std::set<uint32_t > used_rows = {0 , 1 , 2 , 3 , 4 };
415+ BOOST_ASSERT (assignment.get_used_rows () == used_rows);
416+ }
417+
418+ BOOST_AUTO_TEST_CASE (blueprint_assignment_proxy_fill_selector_test) {
419+ using BlueprintFieldType = typename nil::crypto3::algebra::curves::pallas::base_field_type;
420+ constexpr std::size_t WitnessColumns = 15 ;
421+ constexpr std::size_t PublicInputColumns = 1 ;
422+ constexpr std::size_t ConstantColumns = 5 ;
423+ constexpr std::size_t SelectorColumns = 35 ;
424+
425+ using ArithmetizationParams =
426+ nil::crypto3::zk::snark::plonk_arithmetization_params<WitnessColumns, PublicInputColumns, ConstantColumns, SelectorColumns>;
427+ using ArithmetizationType = nil::crypto3::zk::snark::plonk_constraint_system<BlueprintFieldType, ArithmetizationParams>;
428+ using var = nil::crypto3::zk::snark::plonk_variable<typename BlueprintFieldType::value_type>;
429+ using column_type = typename nil::crypto3::zk::snark::plonk_column<BlueprintFieldType>;
430+
431+ auto assignment_ptr = std::make_shared<assignment<ArithmetizationType>>();
432+ assignment_proxy<ArithmetizationType> assignment (assignment_ptr, 0 );
433+
434+ const column_type selector_col = {1 , 2 , 3 , 4 , 5 };
435+ assignment.fill_selector (1 , selector_col);
436+
437+ BOOST_ASSERT (assignment.selector_column_size (1 ) == 5 );
438+ std::set<uint32_t > used_rows = {0 , 1 , 2 , 3 , 4 };
439+ BOOST_ASSERT (assignment.get_used_rows () == used_rows);
440+ }
441+
442+ BOOST_AUTO_TEST_CASE (blueprint_proxy_call_pack_lookup_tables_test) {
443+ using BlueprintFieldType = typename nil::crypto3::algebra::curves::pallas::base_field_type;
444+ constexpr std::size_t WitnessColumns = 15 ;
445+ constexpr std::size_t PublicInputColumns = 1 ;
446+ constexpr std::size_t ConstantColumns = 5 ;
447+ constexpr std::size_t SelectorColumns = 35 ;
448+
449+ using ArithmetizationParams =
450+ nil::crypto3::zk::snark::plonk_arithmetization_params<WitnessColumns, PublicInputColumns, ConstantColumns, SelectorColumns>;
451+ using ArithmetizationType = nil::crypto3::zk::snark::plonk_constraint_system<BlueprintFieldType, ArithmetizationParams>;
452+ using var = nil::crypto3::zk::snark::plonk_variable<typename BlueprintFieldType::value_type>;
453+ using column_type = typename nil::crypto3::zk::snark::plonk_column<BlueprintFieldType>;
454+ typedef nil::crypto3::zk::snark::plonk_lookup_table<BlueprintFieldType> lookup_table_type;
455+
456+ auto bp_ptr = std::make_shared<circuit<ArithmetizationType>>();
457+ circuit_proxy<ArithmetizationType> bp (bp_ptr, 0 );
458+ auto assignment_ptr = std::make_shared<assignment<ArithmetizationType>>();
459+ assignment_proxy<ArithmetizationType> assignment (assignment_ptr, 0 );
460+
461+ std::vector<std::size_t > lookup_columns_indices = {0 , 1 , 2 , 3 , 4 };
462+ std::size_t usable_rows_amount = assignment.allocated_rows ();
463+ bp.reserve_table (" binary_xor_table/full" );
464+
465+ nil::crypto3::zk::snark::pack_lookup_tables (
466+ bp.get_reserved_indices (),
467+ bp.get_reserved_tables (),
468+ bp, assignment, lookup_columns_indices,
469+ usable_rows_amount);
470+
471+ std::set<uint32_t > used_rows = {0 , 1 , 2 , 3 , 4 };
472+ BOOST_ASSERT (assignment.get_used_rows () == used_rows);
392473}
0 commit comments