# ferdo R Lab | Lesson 3 | Actual RStudio acceptance
# Run from extracted ZIP root: source("scripts/acceptance_test.R")
files <- c("data/class_synthetic.csv", "scripts/check_setup.R",
           "scripts/lesson03_demo.R","scripts/lesson03_practice.R")
stopifnot(all(file.exists(files)))
invisible(lapply(files[-1], function(path) parse(file=path)))
check_env <- new.env(parent=globalenv())
sys.source("scripts/check_setup.R",envir=check_env)

pdf_out <- tempfile(fileext=".pdf")
grDevices::pdf(pdf_out)
tryCatch({
  demo_env <- new.env(parent=globalenv())
  sys.source("scripts/lesson03_demo.R",envir=demo_env)
  stopifnot(
    identical(as.character(demo_env$high$student_id),
              c("S06","S07","S08","S11")),
    identical(as.integer(demo_env$group_size),c(6L,6L)),
    identical(as.integer(demo_env$valid_n),c(5L,6L)),
    identical(as.integer(demo_env$high_count),c(2L,2L)),
    sum(demo_env$ok)==10L,
    isTRUE(all.equal(as.numeric(demo_env$group_means),
                     c(65.2,392/6))),
    isTRUE(all.equal(as.numeric(demo_env$high_share),
                     c(2/5,2/6))),
    isTRUE(all.equal(as.numeric(demo_env$complete_means),
                     c(65.2,65))),
    isTRUE(all.equal(as.numeric(demo_env$score_summary$quiz_score),
                     c(65.2,392/6)))
  )
}, finally=grDevices::dev.off())
stopifnot(file.exists(pdf_out),file.info(pdf_out)$size>0)
unlink(pdf_out)
practice_env <- new.env(parent=globalenv())
sys.source("scripts/lesson03_practice.R",envir=practice_env)
stopifnot(identical(dim(practice_env$d),c(12L,4L)))
cat("R LAB LESSON 3 ACCEPTANCE TEST PASS\n")
