1 // Copyright by Contributors
2 #include <xgboost/objective.h>
3 #include <xgboost/generic_parameters.h>
4 #include <limits>
5 
6 #include "../helpers.h"
7 
TEST(Objective,DeclareUnifiedTest (HingeObj))8 TEST(Objective, DeclareUnifiedTest(HingeObj)) {
9   xgboost::GenericParameter tparam = xgboost::CreateEmptyGenericParam(GPUIDX);
10   std::unique_ptr<xgboost::ObjFunction> obj {
11     xgboost::ObjFunction::Create("binary:hinge", &tparam)
12   };
13 
14   xgboost::bst_float eps = std::numeric_limits<xgboost::bst_float>::min();
15   CheckObjFunction(obj,
16                    {-1.0f, -0.5f, 0.5f, 1.0f, -1.0f, -0.5f,  0.5f, 1.0f},
17                    { 0.0f,  0.0f, 0.0f, 0.0f,  1.0f,  1.0f,  1.0f, 1.0f},
18                    { 1.0f,  1.0f, 1.0f, 1.0f,  1.0f,  1.0f,  1.0f, 1.0f},
19                    { 0.0f,  1.0f, 1.0f, 1.0f, -1.0f, -1.0f, -1.0f, 0.0f},
20                    {  eps,  1.0f, 1.0f, 1.0f,  1.0f,  1.0f,  1.0f, eps });
21   CheckObjFunction(obj,
22                    {-1.0f, -0.5f, 0.5f, 1.0f, -1.0f, -0.5f,  0.5f, 1.0f},
23                    { 0.0f,  0.0f, 0.0f, 0.0f,  1.0f,  1.0f,  1.0f, 1.0f},
24                    {},  // Empty weight.
25                    { 0.0f,  1.0f, 1.0f, 1.0f, -1.0f, -1.0f, -1.0f, 0.0f},
26                    {  eps,  1.0f, 1.0f, 1.0f,  1.0f,  1.0f,  1.0f, eps });
27 
28   ASSERT_NO_THROW(obj->DefaultEvalMetric());
29 }
30