code: def test_builder_to_backend_smoke(self, use_cpu_only, backend):
      def body(a, b):
          return mb.add(x=a, y=np.float32(1)), b
  
      def cond(a, b):
          return mb.less(x=a, y=b)
  
      input_placeholders = {
          "a": mb.placeholder(shape=(1,)),
          "b": mb.placeholder(shape=(1,)),
      }
  
      def build(a, b):
          return mb.while_loop(_cond=cond, _body=body, loop_vars=(a, b))
  
      input_values = {
          "a": np.array([1], dtype=np.float32),
          "b": np.array([2], dtype=np.float32),
      }
  
      expected_output_types = [
          (1, types.fp32),
          (1, types.fp32),
      ]
  
      expected_outputs = [
          np.array([2], dtype=np.float32),
          np.array([2], dtype=np.float32),
      ]
      run_compare_builder(
          build,
          input_placeholders,
          input_values,
          expected_output_types,
          expected_outputs,
          use_cpu_only=use_cpu_only,
          frontend_only=False,
          backend=backend,
      )
  
file_path: turicreate/src/external/coremltools_wrap/coremltools/coremltools/converters/mil/mil/ops/tests/test_control_flow.py
imports: from coremltools.converters.mil import testing_reqs
  from coremltools.converters.mil.testing_reqs import *
  from .testing_utils import run_compare_builder, UNK_SYM
label_desc: Use image node_id 1 for calling the TestWhileLoop obj's underlying member method code with example usage: obj.test_builder_to_backend_smoke(use_cpu_only, backend) and returns: mb,  b, mb, mb