tests/testthat/test-get_gender_nn-inputs.R

# Tests for get_gender_nn input validation
# These do NOT require torch or model files

test_that("get_gender_nn rejects non-character names", {
  skip_if_not_installed("torch")
  expect_error(get_gender_nn(123), "'names' must be character")
  expect_error(get_gender_nn(TRUE), "'names' must be character")
  expect_error(get_gender_nn(as.factor("Ana")), "'names' must be character")
})

test_that("get_gender_nn rejects non-logical prob", {
  skip_if_not_installed("torch")
  expect_error(get_gender_nn("Ana", prob = "true"), "'prob' must be logical")
  expect_error(get_gender_nn("Ana", prob = 1), "'prob' must be logical")
})

test_that("get_gender_nn rejects non-numeric threshold", {
  skip_if_not_installed("torch")
  expect_error(get_gender_nn("Ana", threshold = "0.9"), "'threshold' must be numeric")
})

test_that("get_gender_nn rejects threshold outside [0, 1]", {
  skip_if_not_installed("torch")
  expect_error(get_gender_nn("Ana", threshold = -0.1), "'threshold' must be between 0 and 1")
  expect_error(get_gender_nn("Ana", threshold = 1.5), "'threshold' must be between 0 and 1")
})

test_that("get_gender_nn rejects invalid nn_size", {
  skip_if_not_installed("torch")
  expect_error(get_gender_nn("Ana", nn_size = 0), "positive integer")
  expect_error(get_gender_nn("Ana", nn_size = -1), "positive integer")
  expect_error(get_gender_nn("Ana", nn_size = 2.5), "positive integer")
})

test_that("get_gender_nn rejects invalid device", {
  skip_if_not_installed("torch")
  expect_error(get_gender_nn("Ana", device = "gpu"), "must be NULL")
})

test_that("get_gender_nn errors clearly when torch is unavailable", {
  testthat::local_mocked_bindings(.torch_available = function() FALSE)
  expect_error(get_gender_nn("Ana"), "torch")
  expect_error(get_gender_nn("Ana"), "install.packages")
})

Try the genderBR package in your browser

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

genderBR documentation built on July 13, 2026, 1:06 a.m.