require(xgboost)

context("monotone constraints")

set.seed(1024)
x <- rnorm(1000, 10)
y <- -1 * x + rnorm(1000, 0.001) + 3 * sin(x)
train <- matrix(x, ncol = 1)


test_that("monotone constraints for regression", {
    bst <- xgboost(data = train, label = y, max_depth = 2,
                   eta = 0.1, nthread = 2, nrounds = 100, verbose = 0,
                   monotone_constraints = -1)

    pred <- predict(bst, train)

    ind <- order(train[, 1])
    pred.ord <- pred[ind]
    expect_true({
        !any(diff(pred.ord) > 0)
    }, "Monotone constraint satisfied")
})
