/** * Copyright (c) 2023, XGBoost contributors */ #pragma once #include // for Registry #include #include // for ObjFunctionReg #include // for transform #include // for back_insert_iterator, back_inserter #include // for string #include // for vector namespace xgboost { inline auto MakeObjNamesForTest() { auto list = ::dmlc::Registry<::xgboost::ObjFunctionReg>::List(); std::vector names; std::transform(list.cbegin(), list.cend(), std::back_inserter(names), [](auto const* entry) { return entry->name; }); return names; } template inline std::string ObjTestNameGenerator(const ::testing::TestParamInfo& info) { auto name = std::string{info.param}; // Name must be a valid c++ symbol auto it = std::find(name.cbegin(), name.cend(), ':'); if (it != name.cend()) { name[std::distance(name.cbegin(), it)] = '_'; } return name; }; /** * @brief Construct random label for testing. */ void MakeLabelForObjTest(std::shared_ptr p_fmat, std::string const& obj); std::shared_ptr MakeFmatForObjTest(std::string const& obj, bst_idx_t n_samples, bst_feature_t n_features); } // namespace xgboost