tests/testthat/test-output-contract.R

test_that("native report output requires an explicit directory", {
  database <- biogeme_database(
    "output_contract",
    data.frame(choice = c(1, 2), x = c(0, 1))
  )
  model <- logit_model(
    database,
    choice = "choice",
    utilities = list(`1` = 0, `2` = biogeme_beta("b") * variable("x"))
  )

  expect_error(
    estimate(
      model,
      control = biogeme_control(generate_html = TRUE)
    ),
    "explicit output_directory"
  )
  expect_error(
    bayesian_estimate(model),
    "explicit output_directory"
  )
})

test_that("sampled-alternative reports require an explicit directory", {
  sampled_model <- sampled_alternatives_model(
    alternatives = data.frame(id = c(1, 2), attribute = c(0, 1)),
    individuals = data.frame(choice = c(1, 2)),
    choice_column = "choice",
    id_column = "id",
    utility = biogeme_beta("b") * variable("attribute"),
    partition = biogeme_sampling_partition(list(c(1, 2)), sample_sizes = 2),
    biogeme_file_name = file.path(tempdir(), "rbiogeme-sampled.dat")
  )

  expect_error(
    estimate_sampled_alternatives(
      sampled_model,
      control = biogeme_control(generate_html = TRUE)
    ),
    "explicit output_directory"
  )
})

test_that("persistent Pareto and diagnostic paths are explicit", {
  database <- biogeme_database(
    "path_contract",
    data.frame(choice = c(1, 2), x = c(0, 1))
  )
  model <- logit_model(
    database,
    choice = "choice",
    utilities = list(`1` = 0, `2` = biogeme_beta("b") * variable("x"))
  )
  fit <- structure(list(), class = c("biogeme_fit", "biogeme_result"))

  expect_error(
    assisted_specification(model),
    "pareto_file_name"
  )
  expect_error(
    check_monte_carlo_stability(model, fit),
    "output_directory"
  )
})

test_that("an explicit output directory is normalized and created", {
  output <- file.path(tempdir(), paste0("rbiogeme-output-", Sys.getpid()))
  normalized <- rbiogeme:::biogeme_validate_output_directory(output)
  expect_true(dir.exists(normalized))
  expect_identical(normalized, normalizePath(output, mustWork = TRUE))
})

Try the rbiogeme package in your browser

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

rbiogeme documentation built on Sept. 29, 2026, 5:09 p.m.