# ferdo R Lab | Lesson 5 v1.0 | Real RStudio acceptance
# Run from the extracted package root: source("scripts/acceptance_test.R")
required <- c("data/class_synthetic.csv","scripts/check_setup.R",
              "scripts/lesson05_demo.R","scripts/lesson05_practice.R")
stopifnot(all(file.exists(required)))
invisible(lapply(required[-1],function(f)parse(file=f)))

setup_env <- new.env(parent=globalenv())
sys.source("scripts/check_setup.R",envir=setup_env)
plot_file <- tempfile(fileext=".pdf")
grDevices::pdf(plot_file,width=12,height=8)
tryCatch({
  e <- new.env(parent=globalenv())
  sys.source("scripts/lesson05_demo.R",envir=e)
  same <- function(a,b) isTRUE(all.equal(unname(as.numeric(a)),
                                       unname(as.numeric(b)),
                                       tolerance=1e-8))
  stopifnot(
    nrow(e$paired)==10L,
    identical(as.character(e$excluded_ids),c("S09","S10")),
    same(e$r_value,0.989681733792589),
    same(e$model_coefficients,c(32.4098360655738,9.61475409836065)),
    same(e$r_squared,0.979469934202705),
    same(e$prediction_four,70.8688524590164),
    same(e$prediction_ten,128.557377049180),
    same(e$sensitivity_r,0.63185524137802),
    length(e$model_residuals)==10L,
    abs(sum(e$model_residuals))<1e-8,
    isTRUE(all.equal(as.numeric(e$paired$quiz_score-e$paired$fitted_quiz),
                     as.numeric(e$model_residuals),tolerance=1e-8))
  )
},finally=grDevices::dev.off())
stopifnot(file.exists(plot_file),file.info(plot_file)$size>0)
unlink(plot_file)
p <- new.env(parent=globalenv())
sys.source("scripts/lesson05_practice.R",envir=p)
stopifnot(nrow(p$paired)==10L)
cat("R LAB LESSON 5 ACCEPTANCE TEST PASS\n")
