MCPcopy Create free account
hub / github.com/ciphermodelabs/ciphercore / test_nested_iterate

Function test_nested_iterate

ciphercore-base/src/inline/inline_ops.rs:724–784  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

722
723 #[test]
724 fn test_nested_iterate() {
725 let helper = |mode| -> Result<()> {
726 let c = create_context()?;
727
728 let g0 = c.create_graph()?;
729 {
730 let i01 = g0.input(scalar_type(BIT))?;
731 let i02 = g0.input(scalar_type(BIT))?;
732 let sum12 = g0.add(i01.clone(), i02.clone())?;
733 let out = g0.create_tuple(vec![sum12.clone(), sum12.clone()])?;
734 g0.set_output_node(out)?;
735 g0.finalize()?;
736 }
737 let g1 = c.create_graph()?;
738 {
739 let i21 = g1.input(scalar_type(BIT))?;
740 let i22 = g1.input(scalar_type(BIT))?;
741 let i23 = i21.clone();
742 let o1 = g1.tuple_get(g1.call(g0.clone(), vec![i21, i22])?, 0)?;
743 let input_vec = g1.repeat(i23, 5)?;
744 let o2 = g1.iterate(g0.clone(), o1, input_vec)?;
745 g1.set_output_node(o2.clone())?;
746 g1.finalize()?;
747 }
748 let g2 = c.create_graph()?;
749 {
750 let i21 = g2.input(scalar_type(BIT))?;
751 let i22 = g2.input(scalar_type(BIT))?;
752 let i23 = g2.input(scalar_type(BIT))?;
753 let o1 = g2.tuple_get(g2.call(g0.clone(), vec![i21.clone(), i22.clone()])?, 0)?;
754 let input_vec = g2.create_vector(
755 scalar_type(BIT),
756 vec![
757 i21.clone(),
758 i22.clone(),
759 i23.clone(),
760 o1.clone(),
761 o1.clone(),
762 o1.clone(),
763 ],
764 )?;
765 let o2 = g2.iterate(g1.clone(), o1, input_vec)?;
766 g2.set_output_node(o2.clone())?;
767 g2.finalize()?;
768 }
769 c.set_main_graph(g2.clone())?;
770 c.finalize()?;
771 let c_out = inline_operations(
772 c.clone(),
773 InlineConfig {
774 default_mode: mode,
775 ..Default::default()
776 },
777 )?;
778 assert_eq!(c_out.get_graphs().len(), 1);
779 verify_on_all_inputs(g2.clone(), c_out.get_main_graph()?)?;
780 Ok(())
781 };

Callers

nothing calls this directly

Calls 15

inline_operationsFunction · 0.85
verify_on_all_inputsFunction · 0.85
cloneMethod · 0.80
create_contextFunction · 0.50
scalar_typeFunction · 0.50
create_graphMethod · 0.45
inputMethod · 0.45
addMethod · 0.45
create_tupleMethod · 0.45
set_output_nodeMethod · 0.45
finalizeMethod · 0.45
tuple_getMethod · 0.45

Tested by

no test coverage detected