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)
})