code: def test_pipeline(tmp_path):
      accumulator = Accumulate()
  
      pipeline = Pipeline(max_loops_allowed=10)
      pipeline.add_component("add_one", AddFixedValue(add=1))
      pipeline.add_component(
          "merge",
          MergeLoop(expected_type=int, inputs=["in_1", "in_2", "in_3"]),
      )
      pipeline.add_component("below_10", Threshold(threshold=10))
      pipeline.add_component("below_5", Threshold(threshold=5))
      pipeline.add_component("add_three", AddFixedValue(add=3))
      pipeline.add_component("accumulator", accumulator)
      pipeline.add_component("add_two", AddFixedValue(add=2))
  
      pipeline.connect("add_one.result", "merge.in_1")
      pipeline.connect("merge.value", "below_10.value")
      pipeline.connect("below_10.below", "accumulator.value")
      pipeline.connect("accumulator.value", "below_5.value")
      pipeline.connect("below_5.above", "add_three.value")
      pipeline.connect("below_5.below", "merge.in_2")
      pipeline.connect("add_three.result", "merge.in_3")
      pipeline.connect("below_10.above", "add_two.value")
  
      pipeline.draw(tmp_path / "double_loop_pipeline.png")
  
      results = pipeline.run({"add_one": {"value": 3}})
  
      assert results == {"add_two": {"result": 13}}
      assert accumulator.state == 8
  
label_desc: Use image node_id 1 for calling a global function with example usage: test_pipeline(tmp_path) without return types