test_that("generate_numerical generates correct XML for a single answer", { # Inputs answer <- c("42", "0.01") a_values <- list() fb_answer <- "Correct!" fb_a_values <- NULL # Expected output expected_structure <- paste0( "\n", "\n 42", "\n ", "\n Correct!", "\n ", "\n 0.01", "\n", "\n 0", "\n 0.1000000", "\n 3", "\n 0" ) # Run the function result <- generate_numerical( answer = answer, a_values = a_values, fb_answer = fb_answer, fb_a_values = fb_a_values ) # Check if the result matches the expected structure expect_equal(result, expected_structure) }) test_that("generate_numerical handles multiple answers with feedback", { # Inputs answer <- c("100", "0.5") a_values <- c("90<|>0.1", "110<|>0.1") fb_answer <- "Correct answer!" fb_a_values <- c("Close enough!", "Too high!") # Expected output expected_structure <- paste0( "\n", "\n 100", "\n ", "\n Correct answer!", "\n ","\n 0.5", "\n", "\n 90","\n ", "\n Close enough!", "\n ", "\n 0.1", "\n", "\n 110","\n ", "\n Too high!", "\n ", "\n 0.1", "\n", "\n 0", "\n 0.1000000", "\n 3", "\n 0" ) # Run the function result <- generate_numerical( answer = answer, a_values = a_values, fb_answer = fb_answer, fb_a_values = fb_a_values ) # Check if the result matches the expected structure expect_equal(result, expected_structure) }) test_that("generate_numerical handles empty feedback and tolerance defaults to 0", { # Inputs answer <- c("50") a_values <- c("60") fb_answer <- "" fb_a_values <- NULL # Expected output expected_structure <- paste0( "\n", "\n 50", "\n ", "\n ", "\n ", "\n 0", "\n", "\n 60", "\n ", "\n ", "\n ", "\n 0", "\n", "\n 0", "\n 0.1000000", "\n 3", "\n 0" ) # Run the function result <- generate_numerical( answer = answer, a_values = a_values, fb_answer = fb_answer, fb_a_values = fb_a_values ) # Check if the result matches the expected structure expect_equal(result, expected_structure) }) test_that("generate_numerical handles empty inputs gracefully", { # Inputs answer <- "" a_values <- "" fb_answer <- "" fb_a_values <- NULL # Expected output expected_structure <- paste0( "\n", "\n ", "\n ", "\n ", "\n ", "\n 0", "\n", "\n 0", "\n 0.1000000", "\n 3", "\n 0" ) # Run the function result <- generate_numerical( answer = answer, a_values = a_values, fb_answer = fb_answer, fb_a_values = fb_a_values ) # Check if the result matches the expected structure expect_equal(result, expected_structure) })