From 2de588a0089db9c03488bd087ed0634efdb163f4 Mon Sep 17 00:00:00 2001
From: samuelsmock <smock.samuel@gmail.com>
Date: Fri, 26 Jan 2024 15:44:27 +0100
Subject: [PATCH] additional unit tests for bcoeff and reasonability of results

---
 R/sim_all.R                   |  47 ++++++++++++++++++++++----
 tests/testthat/Rplots.pdf     | Bin 188068 -> 234011 bytes
 tests/testthat/test-sim_all.R |  60 ++++++++++++++++++++++++++--------
 3 files changed, 88 insertions(+), 19 deletions(-)

diff --git a/R/sim_all.R b/R/sim_all.R
index eda7472..4c38495 100644
--- a/R/sim_all.R
+++ b/R/sim_all.R
@@ -4,8 +4,8 @@
 #' @param resps Number of respondents you want to simulate
 #' @param destype Is it a design created with ngene or with spdesign. Ngene desings should be stored as the standard .ngd output. spdesign should be the spdesign object design$design
 #' @param designpath The path to the folder where the designs are stored. For example "c:/myfancydec/Designs"
-#' @param u A list with utility functions. The list can incorporate as many decision rule groups as you want. However, each group must be in a list in this list. If you just use one group (the normal),  this  group still  has to be in a list in  the u list.
-#' @param bcoefficients List of coefficients for the utility function. List content/length can vary based on application, but item names should be in namespace: {bsq, bredkite, bdistance, bcost, bfarm2, bfarm3, bheight2, bheight3}
+#' @param u A list with utility functions. The list can incorporate as many decision rule groups as you want. However, each group must be in a list in this list. If you just use one group (the normal),  this  group still  has to be in a list in  the u list. As a convention name betacoefficients starting with a lower case "b"
+#' @param bcoefficients List of coefficients for the utility function. List content/length can vary based on application, but should all begin with b and be the same as those entered in the utility functions
 #'
 #' @return A list, with all information on the simulation. This list an be easily processed by the user and in the rmarkdown template.
 #' @export
@@ -28,7 +28,7 @@
 sim_all <- function(nosim=2, resps, destype="ngene", designpath, u, bcoeff){
 
 
-
+  ########### validate the utility function ########
   if (missing(u) || !(is.list(u) && any(sapply(u, is.list)))){
     stop(" 'u' must be provided and must be a list containing at least one list element.")
   }
@@ -40,9 +40,44 @@ sim_all <- function(nosim=2, resps, destype="ngene", designpath, u, bcoeff){
   if (!dir.exists(designpath)) {
     stop(" The folder where your designs are stored does not exist. \n Check if designpath is correctly specified")
   }
-
-
-
+  
+  ########## validate the bcoeff list ################
+  # Check if bcoeff is provided
+  if (missing(bcoeff)) {
+    stop("Argument 'bcoeff' is required.")
+  }
+  
+  # Check if bcoeff is a list
+  if (!is.list(bcoeff)) {
+    stop("Argument 'bcoeff' must be a list.")
+  }
+  
+  # Check if values in bcoeff are numeric
+  if (!all(sapply(bcoeff, is.numeric))) {
+    stop("Values in 'bcoeff' must be numeric.")
+  }
+  
+  #### check that all the coefficients in utility function have a cooresponding value in bcoeff ####
+    # Extract coefficients from utility function starting with "b"
+  coeff_names_ul <- unique(unlist(lapply(u, function(u) {
+    formula_strings <- unlist(u)
+    coef_names <- unique(unlist(lapply(formula_strings, function(f) {
+      # Parse the formula to extract coefficient names
+      all_vars <- all.vars(as.formula(f))
+      coef_vars <- all_vars[grep("^b", all_vars)]
+      return(coef_vars)
+    })))
+    return(coef_names)
+  })))
+  
+  # Check if all utility function coefficients starting with "b" are covered in bcoeff list
+  missing_coeffs <- coeff_names_ul[!(coeff_names_ul %in% names(bcoeff))]
+  if (length(missing_coeffs) > 0) {
+    stop(paste("Missing coefficients in 'bcoeff':", paste(missing_coeffs, collapse = ", "), ". Perhaps there is a typo?"))
+  }
+  
+  ### end input validation tests ##
+  
   designfile<-list.files(designpath,full.names = T)
   designname <- stringr::str_remove_all(list.files(designpath,full.names = F),
                                "(.ngd|_|.RDS)")  ## Make sure designnames to not contain file ending and "_", as the may cause issues when replace
diff --git a/tests/testthat/Rplots.pdf b/tests/testthat/Rplots.pdf
index 808a8ac27e818a18df9efda098e22658c88f2c2f..5395fa31505edc5a9a1307ef3509f29514e401ae 100644
GIT binary patch
delta 40417
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

delta 367
zcmbQegm1}S?g<v`riLaa7AEEs?L}eC#^}~)#;wsz%T7+KVgAP*tDx_kUz%5<U~Dwq
zv6eZ&+T2LNKp{xM&W=mpwW7p5xFoS8Rl&waLEk;tP{G_7ED2;AnVKt@n;>`=3g)KU
z&(t#C;9@d2T)wP>nUTrdX!?pyW`ALGLzs!Fc`5lxSzPAE({s9*Wu~ijF$*)9n}9g-
z)1$hW1(?iDK^!wCbF=A7x|kiOn@(UB(=j%%FjX)B0fjsTE)Z>KVQge<jwxntuwA{I
zS%5Xf)Y1$?i<yxT(DfjIFviT-2<SL;F>?b9F%v_}>8B?$OM_hYVj{B|uc3vRiJ1kL
Ks;aBM8y5gZuv*{%

diff --git a/tests/testthat/test-sim_all.R b/tests/testthat/test-sim_all.R
index c1dc19e..8c7db5a 100644
--- a/tests/testthat/test-sim_all.R
+++ b/tests/testthat/test-sim_all.R
@@ -36,35 +36,32 @@ ul<- list(u1= list(
 
 
 
-test_that("  u is not a list", {
+test_that("u is not a list of lists", {
   expect_error(sim_all(nosim = nosim, resps=resps, destype = destype,
-                       designpath = designpath, u=data.frame(u=" alp")),
-               "must be provided and must be a list containing ")
+                       designpath = designpath, u=data.frame(u=" alp"), bcoeff = bcoeff),
+               "must be provided and must be a list containing at least one list")
 })
 
 test_that("no value provided for  utility", {
   expect_error(sim_all(nosim = nosim, resps=resps, destype = destype,
-                       designpath = designpath),
-               "must be provided and must be a list containing ")
+                       designpath = designpath, bcoeff = bcoeff),
+               "must be provided and must be a list containing at least one list")
 })
 
 
 test_that("wrong designtype", {
   expect_error(sim_all(nosim = nosim, resps=resps, destype = "ng",
-                       designpath = designpath, u=ul),"Invalid value for design. Please provide either 'ngene' or 'spdesign'.")
+                       designpath = designpath, u=ul, bcoeff = bcoeff),"Invalid value for design. Please provide either 'ngene' or 'spdesign'.")
 })
 
 
 test_that("folder does not exist", {
   expect_error(sim_all(nosim = nosim, resps=resps, destype = destype,
-                       designpath = system.file("da/bullshit", package = "simulateDCE"), u=ul)
+                       designpath = system.file("da/bullshit", package = "simulateDCE"), u=ul, bcoeff = bcoeff)
     ,
                "The folder where your designs are stored does not exist.")
 })
 
-
-
-
 test_that("seed setting makes code reproducible", {
   set.seed(3333)
   bcoeff <-list(bsq=0.00,
@@ -91,9 +88,6 @@ test_that("seed setting makes code reproducible", {
   expect_identical(result1[["summaryall"]], result2[["summaryall"]])
 })
 
-
-
-
 test_that("No seed setting makes code results different", {
 
   result1 <- sim_all(nosim = nosim, resps = resps, destype = destype, designpath = designpath, u = ul, bcoeff = bcoeff)
@@ -104,3 +98,43 @@ test_that("No seed setting makes code results different", {
   expect_failure(expect_identical(result1[["summaryall"]], result2[["summaryall"]]))
 })
 
+
+########### Additional Tests ##############
+test_that("bcoeff is provided", {
+    expect_error(sim_all(nosim = nosim, resps = resps, destype = destype,
+                         designpath = designpath, u = ul))
+})
+
+test_that("bcoeff contains valid values", {
+  expect_error(sim_all(nosim = nosim, resps = resps, destype = destype,
+                       designpath = designpath, u = ul, bcoeff = list(bsq = "invalid")))
+})
+
+test_that("bcoeff is a list", {
+  expect_error(sim_all(nosim = nosim, resps = resps, destype = destype,
+                       designpath = designpath, u = ul, bcoeff = "not a list")
+  )
+})
+
+test_that("B coefficients in the utility functions dont match those in the bcoeff list", {
+  expect_error(sim_all(nosim = nosim, resps=resps, destype = destype,
+                       designpath = designpath, u = ul, bcoeff <- list(bWRONG = 0.00)))
+})
+
+test_that("Utility functions are valid", {
+  expect_no_error(eval(ul$u1$v1))
+  expect_no_error(eval(ul$u1$v2))
+})
+
+test_that("Function behavior matches documentation", {
+  expect_true(sim_all %in% names(simulateDCE:::NAMESPACE))
+})
+
+test_that("Simulation results are reasonable", {
+  
+  result1 <- sim_all(nosim = nosim, resps = resps, destype = destype, designpath = designpath, u = ul, bcoeff = bcoeff)
+  
+  expect_gt(result1$est_bsq, -1)
+  expect_lt(result1$est_bsq, 1)
+  
+})
-- 
GitLab