()
| 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 | }; |
nothing calls this directly
no test coverage detected