tests/testthat/test-simPregSamp.R

test_that("simPregSamp returns the expected structure", {
  data.prop <- simPregProp()
  data.samp <- simPregSamp(data.prop, 1000)

  expect_true(is.data.frame(data.samp))
  expect_named(data.samp, c("GA", "ExpGA", "Outcome", "Prop", "Freq"))
  expect_true(nrow(data.samp) > 0)
  expect_true(all(data.samp$Freq > 0))
  expect_equal(sum(data.samp$Freq), 1000)
})


test_that("simPregSamp samples the requested number of pregnancies", {
  data.prop <- simPregProp()
  data.samp <- simPregSamp(data.prop, 1000)

  expect_equal(sum(data.samp$Freq), 1000)
  expect_true(all(data.samp$Freq > 0))
})


test_that("simPregSamp expands sampled frequencies", {
  data.prop <- simPregProp()
  data.samp <- simPregSamp(data.prop, 1000, expand = TRUE)

  expect_true(is.data.frame(data.samp))
  expect_equal(nrow(data.samp), 1000)
  expect_true(all(data.samp$Freq == 1))
})


test_that("simPregSamp rejects invalid n", {
  data.prop <- simPregProp()

  expect_error(
    simPregSamp(data.prop, 0),
    "'n' must be a positive integer."
  )

  expect_error(
    simPregSamp(data.prop, 1.5),
    "'n' must be a positive integer."
  )

  expect_error(
    simPregSamp(data.prop, NA),
    "'n' must be a positive integer."
  )

  expect_error(
    simPregSamp(data.prop, Inf),
    "'n' must be a positive integer."
  )
})


test_that("simPregSamp rejects invalid df", {
  expect_error(
    simPregSamp(data.frame(Prop = 1), 100),
    "'df' must be a data frame with class 'preg.prop'."
  )
})


test_that("simPregSamp rejects df without Prop", {
  df <- data.frame(GA = 1:3)
  class(df) <- c("preg.prop", "data.frame")

  expect_error(
    simPregSamp(df, 100),
    "'df' is missing required column 'Prop'."
  )
})


test_that("simPregSamp rejects invalid proportions", {
  df <- data.frame(Prop = c(0.5, NA_real_))
  class(df) <- c("preg.prop", "data.frame")

  expect_error(
    simPregSamp(df, 100),
    "'df\\$Prop' must be a finite numeric vector of non-negative proportions."
  )

  df$Prop <- c(0.5, -0.1)

  expect_error(
    simPregSamp(df, 100),
    "'df\\$Prop' must be a finite numeric vector of non-negative proportions."
  )
})


test_that("simPregSamp rejects invalid expand", {
  data.prop <- simPregProp()

  expect_error(
    simPregSamp(data.prop, 100, expand = NA),
    "'expand' must be a single TRUE or FALSE value."
  )

  expect_error(
    simPregSamp(data.prop, 100, expand = c(TRUE, FALSE)),
    "'expand' must be a single TRUE or FALSE value."
  )
})

Try the simPreg package in your browser

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

simPreg documentation built on Sept. 27, 2026, 5:06 p.m.