Skip to content

Commit

Permalink
explicitly list assertions in each test
Browse files Browse the repository at this point in the history
  • Loading branch information
jameslamb committed Apr 4, 2022
1 parent 42e660f commit 04b743f
Showing 1 changed file with 91 additions and 17 deletions.
108 changes: 91 additions & 17 deletions R-package/tests/testthat/test_Predictor.R
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ test_that("start_iteration works correctly", {
}
expect_false(is.null(rnames))
expect_true(is.vector(rnames))
expect_true(length(rnames) > 0L)
expect_equal(row.names(X), rnames)
}

Expand All @@ -133,7 +134,27 @@ test_that("start_iteration works correctly", {
}
}

.expect_row_names_kept <- function(bst, X, multiclass = FALSE) {
test_that("predict() keeps row names from data (regression)", {
data("mtcars")
X <- as.matrix(mtcars[, -1L])
y <- as.numeric(mtcars[, 1L])
dtrain <- lgb.Dataset(
X
, label = y
, params = list(
max_bins = 5L
, min_data_in_bin = 1L
)
)
bst <- lgb.train(
data = dtrain
, obj = "regression"
, nrounds = 5L
, verbose = VERBOSITY
, params = list(min_data_in_leaf = 1L)
)

# dense matrix with row names
pred <- predict(bst, X)
.expect_has_row_names(pred, X)
pred <- predict(bst, X, rawscore = TRUE)
Expand All @@ -143,11 +164,13 @@ test_that("start_iteration works correctly", {
pred <- predict(bst, X, predcontrib = TRUE)
.expect_has_row_names(pred, X)

# dense matrix without row names
Xcopy <- X
row.names(Xcopy) <- NULL
pred <- predict(bst, Xcopy)
.expect_doesnt_have_row_names(pred)

# sparse matrix with row names
Xcsc <- as(X, "CsparseMatrix")
pred <- predict(bst, Xcsc)
.expect_has_row_names(pred, Xcsc)
Expand All @@ -158,24 +181,11 @@ test_that("start_iteration works correctly", {
pred <- predict(bst, Xcsc, predcontrib = TRUE)
.expect_has_row_names(pred, Xcsc)

# sparse matrix without row names
Xcopy <- Xcsc
row.names(Xcopy) <- NULL
pred <- predict(bst, Xcopy)
.expect_doesnt_have_row_names(pred)
}

test_that("predict() keeps row names from data (regression)", {
data("mtcars")
X <- as.matrix(mtcars[, -1L])
y <- as.numeric(mtcars[, 1L])
dtrain <- lgb.Dataset(X, label = y, params = list(max_bins = 5L))
bst <- lgb.train(
data = dtrain
, obj = "regression"
, nrounds = 5L
, verbose = VERBOSITY
)
.expect_row_names_kept(bst, X, FALSE)
})

test_that("predict() keeps row names from data (binary classification)", {
Expand All @@ -190,7 +200,39 @@ test_that("predict() keeps row names from data (binary classification)", {
, nrounds = 5L
, verbose = VERBOSITY
)
.expect_row_names_kept(bst, X, FALSE)

# dense matrix with row names
pred <- predict(bst, X)
.expect_has_row_names(pred, X)
pred <- predict(bst, X, rawscore = TRUE)
.expect_has_row_names(pred, X)
pred <- predict(bst, X, predleaf = TRUE)
.expect_has_row_names(pred, X)
pred <- predict(bst, X, predcontrib = TRUE)
.expect_has_row_names(pred, X)

# dense matrix without row names
Xcopy <- X
row.names(Xcopy) <- NULL
pred <- predict(bst, Xcopy)
.expect_doesnt_have_row_names(pred)

# sparse matrix with row names
Xcsc <- as(X, "CsparseMatrix")
pred <- predict(bst, Xcsc)
.expect_has_row_names(pred, Xcsc)
pred <- predict(bst, Xcsc, rawscore = TRUE)
.expect_has_row_names(pred, Xcsc)
pred <- predict(bst, Xcsc, predleaf = TRUE)
.expect_has_row_names(pred, Xcsc)
pred <- predict(bst, Xcsc, predcontrib = TRUE)
.expect_has_row_names(pred, Xcsc)

# sparse matrix without row names
Xcopy <- Xcsc
row.names(Xcopy) <- NULL
pred <- predict(bst, Xcopy)
.expect_doesnt_have_row_names(pred)
})

test_that("predict() keeps row names from data (multi-class classification)", {
Expand All @@ -206,7 +248,39 @@ test_that("predict() keeps row names from data (multi-class classification)", {
, nrounds = 5L
, verbose = VERBOSITY
)
.expect_row_names_kept(bst, X, TRUE)

# dense matrix with row names
pred <- predict(bst, X)
.expect_has_row_names(pred, X)
pred <- predict(bst, X, rawscore = TRUE)
.expect_has_row_names(pred, X)
pred <- predict(bst, X, predleaf = TRUE)
.expect_has_row_names(pred, X)
pred <- predict(bst, X, predcontrib = TRUE)
.expect_has_row_names(pred, X)

# dense matrix without row names
Xcopy <- X
row.names(Xcopy) <- NULL
pred <- predict(bst, Xcopy)
.expect_doesnt_have_row_names(pred)

# sparse matrix with row names
Xcsc <- as(X, "CsparseMatrix")
pred <- predict(bst, Xcsc)
.expect_has_row_names(pred, Xcsc)
pred <- predict(bst, Xcsc, rawscore = TRUE)
.expect_has_row_names(pred, Xcsc)
pred <- predict(bst, Xcsc, predleaf = TRUE)
.expect_has_row_names(pred, Xcsc)
pred <- predict(bst, Xcsc, predcontrib = TRUE)
.expect_has_row_names(pred, Xcsc)

# sparse matrix without row names
Xcopy <- Xcsc
row.names(Xcopy) <- NULL
pred <- predict(bst, Xcopy)
.expect_doesnt_have_row_names(pred)
})

test_that("predictions for regression and binary classification are returned as vectors", {
Expand Down

0 comments on commit 04b743f

Please sign in to comment.