# Note: most of the tests are from survival::coxph doc # teardown({ # detach("package:survival", unload = TRUE) # }) test_that("error when object is not coxph", { skip_if_not_installed("survival") library(survival) expect_error(pmml.coxph("foo"), "Not a legitimate coxph object") }) test_that("no error for stratified model", { skip_if_not_installed("survival") library(survival) # stratified model test1 <- list( time = c(4, 3, 1, 1, 2, 2, 3), status = c(1, 1, 1, 0, 1, 1, 0), x = c(0, 2, 1, 1, 1, 0, 0), sex = c(0, 0, 0, 0, 1, 1, 1) ) fit1 <- coxph(Surv(time, status) ~ x + strata(sex), test1) expect_error(pmml(fit1), NA) # expect no error # time-dependent model test2 <- list( start = c(1, 2, 5, 2, 1, 7, 3, 4, 8, 8), stop = c(2, 3, 6, 7, 8, 9, 9, 9, 14, 17), event = c(1, 1, 1, 1, 1, 1, 1, 0, 0, 0), x = c(1, 0, 0, 1, 0, 1, 1, 1, 0, 0) ) fit2 <- coxph(Surv(start, stop, event) ~ x, test2) expect_error(pmml(fit2), NA) # expect no error }) test_that("Error for multiplicative strata variables", { skip_if_not_installed("survival") library(survival) # stratified model clustered on patients # data(bladder) bladder1 <- bladder[bladder$enum < 5, ] fit3 <- coxph(Surv(stop, event) ~ (rx + size + number) * strata(enum) + cluster(id), bladder1) expect_error(pmml(fit3), "Multiplicative strata variables not yet supported in PMML") }) test_that("Error for model with time-transform", { skip_if_not_installed("survival") library(survival) # time transform model using current age fit4 <- coxph(Surv(time, status) ~ ph.ecog + tt(age), data = lung, tt = function(x, t, ...) pspline(x + t / 365.25) ) expect_error( pmml(fit4), "Special model equation terms 'cluster' and 'tt' not yet supported in PMML" ) })