Skip to content

Commit ce122a9

Browse files
authored
Merge pull request #181 from kgoldfeld/genSpline_error_fix
Fixing genSpline error checking
2 parents f940cae + 5a6a0ac commit ce122a9

File tree

2 files changed

+26
-32
lines changed

2 files changed

+26
-32
lines changed

R/generate_data.R

+18-24
Original file line numberDiff line numberDiff line change
@@ -888,33 +888,27 @@ genSpline <- function(dt, newvar, predictor, theta,
888888

889889
# Check arguments
890890

891-
if (!exists(deparse(substitute(dt)), envir = parent.frame())) {
892-
stop("Data table does not exist.")
893-
}
894-
895-
if (!predictor %in% names(dt)) {
896-
stop(paste0("Variable ", predictor, " not in data.table"))
897-
}
898-
899-
900-
if (!is.character(newvar)) {
901-
stop("newvar must be a string")
902-
}
891+
assertNotMissing(
892+
dt = missing(dt),
893+
newvar = missing(newvar),
894+
predictor = missing(predictor),
895+
theta = missing(theta)
896+
)
897+
898+
assertClass(dt = dt, class = "data.table")
899+
assertInDataTable(predictor, dt)
900+
assertClass(newvar = newvar, class = "character")
903901

904902
if (!(is.null(newrange))) {
905-
rangestr <- unlist(strsplit(as.character(newrange), split = ";", fixed = TRUE))
906-
rangenum <- as.numeric(rangestr)
907-
908-
if (length(rangenum) != 2) {
909-
stop("Range not specified as two values")
910-
}
911-
912-
if (!(all(!is.na(rangenum)))) {
913-
stop("Non-numbers entered in range")
914-
}
903+
904+
newrange <- unlist(strsplit(as.character(newrange), split = ";", fixed = TRUE))
905+
906+
assertLength(newrange = newrange, length = 2)
907+
newrange <- tryCatch(as.numeric(newrange), warning = function(x) NULL)
908+
assertClass(newrange = newrange, class = "numeric")
915909

916-
newmin <- min(rangenum)
917-
newmax <- max(rangenum)
910+
newmin <- min(newrange)
911+
newmax <- max(newrange)
918912
}
919913

920914
### All checks passed

tests/testthat/test-generate_data.R

+8-8
Original file line numberDiff line numberDiff line change
@@ -783,22 +783,22 @@ test_that("genSpline throws errors", {
783783
expect_error(genSpline( dt = ddd, newvar = "weight",
784784
predictor = "x1", theta = theta1,
785785
knots = knots, degree = 3,
786-
noise.var = .025), regexp = "Data table does not exist.")
786+
noise.var = .025), regexp = "object 'ddd' not found")
787787
expect_error(genSpline( dt = dt, newvar = "weight",
788788
predictor = "x2", theta = theta1,
789789
knots = knots, degree = 3,
790-
noise.var = .025), regexp = "not in data.table")
790+
noise.var = .025), regexp = "Variable x2 not previously defined!")
791791
expect_error(genSpline( dt = dt, newvar = 5,
792792
predictor = "x1", theta = theta1,
793793
knots = knots, degree = 3,
794-
noise.var = .025), regexp = "newvar must be a string")
794+
noise.var = .025), regexp = "newvar should be a character")
795795
expect_error(genSpline( dt = dt, newvar = "weight",
796796
predictor = "x1", theta = theta1,
797797
knots = knots, degree = 3, newrange = "4;3;2",
798-
noise.var = .025), regexp = "Range not specified as two values")
799-
# expect_error(genSpline( dt = dt, newvar = "weight",
800-
# predictor = "x1", theta = theta1,
801-
# knots = knots, degree = 3, newrange = "1;a",
802-
# noise.var = .025), regexp = "Non-numbers entered in range")
798+
noise.var = .025), regexp = "newrange should be of length 2!")
799+
expect_error(genSpline( dt = dt, newvar = "weight",
800+
predictor = "x1", theta = theta1,
801+
knots = knots, degree = 3, newrange = "1;a",
802+
noise.var = .025), regexp = "newrange should be a numeric!")
803803
})
804804

0 commit comments

Comments
 (0)