tests/testthat/test-check_options.R

testthat::test_that("check_options evaluates in immediate parent environment", {
    x <- 10
    y <- "test"

    call <- quote(list(a = x, b = y))
    result <- saros:::check_options(call, default_values = list(a = NA, b = NA))

    testthat::expect_equal(result$a, 10)
    testthat::expect_equal(result$b, "test")
})

testthat::test_that("check_options finds variables in higher stack frames", {
    outer_var <- 100

    nested_fun <- function() {
        inner_var <- 200
        call <- quote(list(a = outer_var, b = inner_var))
        saros:::check_options(call, default_values = list(a = NA, b = NA))
    }

    result <- nested_fun()
    testthat::expect_equal(result$a, 100)
    testthat::expect_equal(result$b, 200)
})

testthat::test_that("check_options handles default values correctly", {
    default_vals <- list(
        x = 1,
        y = "default",
        z = TRUE
    )

    call <- quote(list(x = 5))
    result <- saros:::check_options(call, default_values = default_vals)

    testthat::expect_equal(result$x, 5)
    testthat::expect_equal(result$y, "default")
    testthat::expect_equal(result$z, TRUE)
})

testthat::test_that("check_options handles undefined variables gracefully", {
    fun <- function(a) {
        call <- match.call()
        saros:::check_options(call, default_values = list(a = 999))
    }
    result <- fun()

    testthat::expect_equal(result$a, 999)
})

testthat::test_that("check_options respects ignore_args", {
    x <- 10
    call <- quote(list(ignored = x, keep = x))

    result <- saros:::check_options(
        call,
        default_values = list(ignored = NA, keep = NA),
        ignore_args = "ignored"
    )

    testthat::expect_false("ignored" %in% names(result))
    testthat::expect_true("keep" %in% names(result))
    testthat::expect_equal(result$keep, 10)
})

testthat::test_that("check_options evaluates nested expressions", {
    x <- 5
    y <- 10

    call <- quote(list(a = x + y, b = paste(x, y)))
    result <- saros:::check_options(call, default_values = list(a = NA, b = NA))

    testthat::expect_equal(result$a, 15)
    testthat::expect_equal(result$b, "5 10")
})

Try the saros package in your browser

Any scripts or data that you put into this service are public.

saros documentation built on June 8, 2025, 10:43 a.m.