R/util_assert.R

Defines functions assert_integer assert_scalar_integer assert_character assert_scalar_character assert_scalar assert_is match_value

match_value <- function(arg, choices, name = deparse(substitute(arg))) {
  assert_scalar_character(arg)
  if (!(arg %in% choices)) {
    stop(sprintf("'%s' must be one of %s",
                 name, paste(squote(choices), collapse = ", ")))
  }
  arg
}

assert_is <- function(x, what, name = deparse(substitute(x))) {
  if (!inherits(x, what)) {
    stop(sprintf("'%s' must be a %s", name, paste(what, collapse = " / ")),
         call. = FALSE)
  }
  invisible(x)
}


assert_scalar <- function(x, name = deparse(substitute(x))) {
  if (length(x) != 1) {
    stop(sprintf("'%s' must be a scalar", name), call. = FALSE)
  }
}

assert_scalar_character <- function(x, name = deparse(substitute(x))) {
  assert_scalar(x, name)
  assert_character(x, name)
}

assert_character <- function(x, name = deparse(substitute(x))) {
  if (!is.character(x)) {
    stop(sprintf("'%s' must be a character", name), call. = FALSE)
  }
}

assert_scalar_integer <- function(x, name = deparse(substitute(x))) {
  assert_scalar(x, name)
  assert_integer(x, name)
}

assert_integer <- function(x, name = deparse(substitute(x))) {
  if (!(is.integer(x) || all(x - round(x) == 0))) {
    stop(sprintf("'%s' must be an integer", name), call. = FALSE)
  }
}
mrc-ide/didehpc documentation built on Aug. 20, 2023, 10:27 a.m.