def METHOD_NAME(self, draw):
    in_shape_tmp = draw(
        st.lists(
            st.integers(
                min_value=1, max_value=8), min_size=1, max_size=4))
    in_shape = draw(st.sampled_from([in_shape_tmp, []]))
    min_val = float(np.random.randint(0, 100) / 100)
    max_val = min_val + 0.5
    min_max_shape = draw(st.integers(min_value=1, max_value=1))
    case_type = draw(st.sampled_from(["c1", "c2"]))
    def generate_input(*args, **kwargs):
        return np.random.random(in_shape).astype(np.float32)
    def generate_min(*args, **kwargs):
        return np.random.random(min_max_shape).astype(np.float32)
    def generate_max(*args, **kwargs):
        return np.random.random(min_max_shape).astype(np.float32) + 1.0
    if case_type == "c1":
        clip_op = OpConfig(
            type="clip",
            inputs={
                "X": ["input_data"],
                "Min": ["min_data"],
                "Max": ["max_data"]
            },
            outputs={"Out": ["output_data"]},
            attrs={"min": 0,
                   "max": 0})
        program_config = ProgramConfig(
            ops=[clip_op],
            weights={},
            inputs={
                "input_data":
                TensorConfig(data_gen=partial(generate_input)),
                "min_data": TensorConfig(data_gen=partial(generate_min)),
                "max_data": TensorConfig(data_gen=partial(generate_max)),
            },
            outputs=["output_data"])
    else:
        clip_op = OpConfig(
            type="clip",
            inputs={"X": ["input_data"]},
            outputs={"Out": ["output_data"]},
            attrs={"min": min_val,
                   "max": max_val})
        program_config = ProgramConfig(
            ops=[clip_op],
            weights={},
            inputs={
                "input_data":
                TensorConfig(data_gen=partial(generate_input))
            },
            outputs=["output_data"])
    return program_config