test_that("generate_multichoice generates correct XML for single correct answer", { # Inputs answer <- "Correct Answer" a_values <- c("Wrong Answer 1", "Wrong Answer 2") correct_feedback <- "Correct!" incorrect_feedback <- "Incorrect!" fb_partially <- "Almost there!" # Expected output n <- length(a_values) value <- sprintf("-%2.15f", 100 / n) expected_structure <- paste0( "\ntrue", "\ntrue", "\nnone", "\n0", "\n Correct! ", "\n Almost there! ", "\n Incorrect! ", "\n", "\n Correct Answer", "\n Correct! ", "\n", "\n", "\n Wrong Answer 1", "\n Incorrect! ", "\n", "\n", "\n Wrong Answer 2", "\n Incorrect! ", "\n" ) # Run the function result <- generate_multichoice( answer = answer, a_values = a_values, correct_feedback = correct_feedback, incorrect_feedback = incorrect_feedback, fb_partially = fb_partially, fb_answer = '', fb_a_values = NULL, fraction = 1 ) # Check if the result matches the expected structure expect_equal(result, expected_structure) }) test_that("generate_multichoice handles custom feedback for a_values answers", { # Inputs answer <- "Correct Answer" a_values <- c("Wrong Answer 1", "Wrong Answer 2") correct_feedback <- "Correct!" incorrect_feedback <- "Incorrect!" fb_partially <- "Almost there!" fb_a_values <- c("Custom Feedback 1", "Custom Feedback 2") # Expected output n <- length(a_values) value <- sprintf("-%2.15f", 100 / n) expected_structure <- paste0( "\ntrue", "\ntrue", "\nnone", "\n0", "\n Correct! ", "\n Almost there! ", "\n Incorrect! ", "\n", "\n Correct Answer", "\n Correct! ", "\n","\n", "\n Wrong Answer 1", "\n Custom Feedback 1 ", "\n", "\n", "\n Wrong Answer 2", "\n Custom Feedback 2 ", "\n" ) # Run the function result <- generate_multichoice( answer = answer, a_values = a_values, correct_feedback = correct_feedback, incorrect_feedback = incorrect_feedback, fb_partially = fb_partially, fb_a_values = fb_a_values, fb_answer = '', fraction = 1 ) # Check if the result matches the expected structure expect_equal(result, expected_structure) })