tests/testthat/test-models.R

test_that("models are structured as expected", {
  # test raw model types
  expect_type(ep_model, "raw")
  expect_type(cp_model, "raw")
  expect_type(wp_model, "raw")
  expect_type(wp_model_spread, "raw")
  expect_type(xpass_model, "raw")
  expect_type(xyac_model, "raw")
  expect_type(fg_model, "list")

  # test length of raw model vectors
  expect_length(ep_model, 9737490L)
  expect_length(cp_model, 925080L)
  expect_length(wp_model, 106989L)
  expect_length(wp_model_spread, 1219925L)
  expect_length(xpass_model, 8378743L)
  expect_length(xyac_model, 48418214L)
  expect_length(fg_model, 54L)

  # load raw models in xgboost
  parsed_ep_model <- xgboost::xgb.load.raw(ep_model)
  parsed_cp_model <- xgboost::xgb.load.raw(cp_model)
  parsed_wp_model <- xgboost::xgb.load.raw(wp_model)
  parsed_wp_model_spread <- xgboost::xgb.load.raw(wp_model_spread)
  parsed_xpass_model <- xgboost::xgb.load.raw(xpass_model)
  parsed_xyac_model <- xgboost::xgb.load.raw(xyac_model)

  # verify class of all parsed models
  expect_s3_class(parsed_ep_model, "xgb.Booster")
  expect_s3_class(parsed_cp_model, "xgb.Booster")
  expect_s3_class(parsed_wp_model, "xgb.Booster")
  expect_s3_class(parsed_wp_model_spread, "xgb.Booster")
  expect_s3_class(parsed_xpass_model, "xgb.Booster")
  expect_s3_class(parsed_xyac_model, "xgb.Booster")
  expect_s3_class(fg_model, c("bam", "gam", "glm", "lm"), exact = TRUE)

  # snapshot print method of xgboost models
  # just as an additional layer of security guarding against breaking
  # xgboost changes
  expect_snapshot(print(parsed_ep_model), cran = TRUE)
  expect_snapshot(print(parsed_cp_model), cran = TRUE)
  expect_snapshot(print(parsed_wp_model), cran = TRUE)
  expect_snapshot(print(parsed_wp_model_spread), cran = TRUE)
  expect_snapshot(print(parsed_xpass_model), cran = TRUE)
  expect_snapshot(print(parsed_xyac_model), cran = TRUE)
})

Try the fastrmodels package in your browser

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

fastrmodels documentation built on Feb. 7, 2026, 5:07 p.m.