DFBA.Rcheck/tests/testthat/test-dfba_bayes_vs_t_power.R

# Bayes v t Power Tests

  Apow1 <- dfba_bayes_vs_t_power(n_min = 20,
                                 model = "weibull",
                                 delta = 0.8,
                                 shape1 = 0.8,
                                 shape2 = 0.8,
                                 design = "paired",
                                 samples = 300)

  bayespower <- Apow1$outputdf[[2]]
  tpower <- Apow1$outputdf[[3]]
  bayes70c <- bayespower[11]
  t70c <- tpower[11]


  # Test the errors

  test_that("Negative delta throws stop error",{
    expect_error(dfba_bayes_vs_t_power(n_min = 20,
                                       model = "weibull",
                                       delta = - 0.8,
                                       shape1 = 0.8,
                                       shape2 = 0.8,
                                       design = "paired",
                                       samples = 300),
                 "The function requires a nonnegative value for delta.")
  })

  test_that("stop n is a non-integer",{
    expect_error(dfba_bayes_vs_t_power(n_min = 20.1,
                                       model = "weibull",
                                       delta = 0.8,
                                       shape1 = 0.8,
                                       shape2 = 0.8,
                                       design = "paired",
                                       samples = 300),
                 "n_min must be an integer that is 20 or larger")
  })

  test_that("stop if n < 20",{
    expect_error(dfba_bayes_vs_t_power(n_min = 19,
                                       model = "weibull",
                                       delta = 0.8,
                                       shape1 = 0.8,
                                       shape2 = 0.8,
                                       design = "paired",
                                       samples = 300),
                 "n_min must be an integer that is 20 or larger")
  })

  test_that("Negative a0 produces stop error",{
    negative_a0 <- -77
    expect_error(dfba_bayes_vs_t_power(n_min = 20,
                                       model = "weibull",
                                       delta = 0.8,
                                       shape1 = 0.8,
                                       shape2 = 0.8,
                                       design = "paired",
                                       samples = 300,
                                       a0 = negative_a0),
                 "Both a0 and b0 must be positive and finite.")
  })

  test_that("Negative b0 produces stop error",{
    negative_b0 <- -77
    expect_error(dfba_bayes_vs_t_power(n_min = 20,
                                       model = "weibull",
                                       delta = 0.8,
                                       shape1 = 0.8,
                                       shape2 = 0.8,
                                       design = "paired",
                                       samples = 300,
                                       b0 = negative_b0),
                 "Both a0 and b0 must be positive and finite.")
  })

  test_that("model is not in the list",{
    mlist<-c("normal",
             "weibull",
             "cauchy",
             "lognormal",
             "chisquare",
             "logistic",
             "exponential",
             "gumbel",
             "pareto")
    modelstop <- paste0("The set of distributions for model are:"," ","\n",
                        "\t\t", paste0(mlist, collapse = "\n\t\t"), "\n",
                        "The stipulated model is not on the list")
    expect_error(dfba_bayes_vs_t_power(n_min = 20,
                                       model = "hansel",
                                       delta = 0.8,
                                       shape1 = 0.8,
                                       shape2 = 0.8,
                                       design = "paired",
                                       samples = 300),
                 modelstop)
  })


  test_that("design is not in the list",{
    designlist<-c("paired",
                  "independent")
    designstop <- paste0("The set of distributions for design are:"," ","\n",
                         "\t\t", paste0(designlist, collapse = "\n\t\t"), "\n",
                         "The stipulated design is not on the list")
    expect_error(dfba_bayes_vs_t_power(n_min = 20,
                                       model = "weibull",
                                       delta =  0.8,
                                       shape1 = 0.8,
                                       shape2 = 0.8,
                                       design = "paireddd",
                                       samples = 300),
                 designstop)
  })

  test_that("critical effect is between 0 and 1",{
    expect_error(dfba_bayes_vs_t_power(n_min = 20,
                                       model = "weibull",
                                       delta = 0.8,
                                       shape1 = 0.8,
                                       shape2 = 0.8,
                                       design = "paired",
                                       samples = 300,
                                       effect_crit = 42),
                 "The effect_crit value must be a number nonzero number less than 1.")
  })
  # Test function output
    test_that("Bayesian estimate is correct",{
    expect_lte(abs(bayes70c-.99422), 0.0483)
  })

  test_that("Classical power estimate is correct",{
    expect_lte(abs(t70c-.94205), 0.1170)
  })
danbarch/dfba documentation built on Jan. 30, 2024, 6:51 p.m.