def METHOD_NAME(self, draw):
    cast_in_type = draw(st.sampled_from([0]))
    cast_out_type = draw(st.sampled_from([2, 3, 5]))  #0,1,4 cannot
    in_shape_x = draw(
        st.lists(
            st.integers(
                min_value=1, max_value=64), min_size=4, max_size=4))
    in_shape_y = draw(
        st.lists(
            st.integers(
                min_value=1, max_value=64), min_size=1, max_size=1))
    axis = -1
    def generate_input_x(*args, **kwargs):
        return np.random.randint(in_shape_x).astype(np.float32)
    def generate_input_y(*args, **kwargs):
        return np.random.randint(in_shape_y).astype(np.float32)
    greater_than_op = OpConfig(
        type="greater_than",
        inputs={"X": ["input_data_x"],
                "Y": ["input_data_y"]},
        outputs={"Out": ["greater_than_output"]},
        attrs={"axis": axis,
               "force_cpu": False})
    cast_op = OpConfig(
        type="cast",
        inputs={"X": ["greater_than_output"]},
        outputs={"Out": ["output_data"]},
        attrs={"in_dtype": cast_in_type,
               "out_dtype": cast_out_type})
    ops = [greater_than_op, cast_op]
    program_config = ProgramConfig(
        ops=ops,
        weights={},
        inputs={
            "input_data_x":
            TensorConfig(data_gen=partial(generate_input_x)),
            "input_data_y":
            TensorConfig(data_gen=partial(generate_input_y))
        },
        outputs=["output_data"])
    return program_config