def METHOD_NAME(self):
    self.gen_data()
    param_obj = FeatureBinningParam(bin_num=4)
    binning_obj = QuantileBinning(param_obj)
    binning_obj.fit_split_points(self.dense_table)
    data_bin, bin_splitpoints, bin_sparse = binning_obj.convert_feature_to_bin(self.dense_table)
    bin_result = dict([(key, inst.features) for key, inst in data_bin.collect()])
    # print(bin_result)
    for i in range(100):
        self.assertTrue((bin_result[i] == np.ones(20, dtype='int') * ((i % 16) // 4)).all())
        if i < 20:
            # col_name = 'x' + str(i)
            col_idx = i
            split_point = np.array(bin_splitpoints[col_idx])
            self.assertTrue((split_point == np.asarray([3, 7, 11, 15], dtype='int')).all())
    for split_points in bin_splitpoints:
        self.assertTrue(len(split_points) <= 4)