code: def test_signature_construction():
      signature = ModelSignature(
          inputs=Schema([ColSpec(DataType.binary)])
      )
      assert signature.to_dict() == {
          "inputs": '[{"type": "binary", "required": true}]',
          "outputs": None,
          "params": None,
      }
  
      signature = ModelSignature(
          outputs=Schema([ColSpec(DataType.double)])
      )
      assert signature.to_dict() == {
          "inputs": None,
          "outputs": '[{"type": "double", "required": true}]',
          "params": None,
      }
  
      signature = ModelSignature(
          params=ParamSchema(
              [ParamSpec("param1", DataType.string, "test")]
          )
      )
      assert signature.to_dict() == {
          "inputs": None,
          "outputs": None,
          "params": '[{"name": "param1", "type": "string", "default": "test", "shape": null}]',
      }
  
imports: import json
  import numpy
  import pandas
  import pyspark
  import pytest
  from sklearn.ensemble import RandomForestRegressor
  import mlflow
  from mlflow.exceptions import MlflowException
  from mlflow.models import Model, ModelSignature, infer_signature, set_signature
  from mlflow.models.model import get_model_info
  from mlflow.types import DataType
  from mlflow.types.schema import Array, ColSpec, ParamSchema, ParamSpec, Schema, TensorSpec
label_desc: Use image node_id 12 for calling a global function with example usage: test_signature_construction() without return types