# Tests for HTML equation formatters in format_results.R # -- format_component_html_ ---------------------------------------------------- test_that("format_component_html_ handles dir=1 (positive hinge)", { comp <- list(base_var = "sq_ft", is_factor = FALSE, dir = 1, cut = 1500) result <- earthUI:::format_component_html_(comp) expect_equal(result, "max(0, sq_ft - 1500)") }) test_that("format_component_html_ handles dir=-1 (negative hinge)", { comp <- list(base_var = "sq_ft", is_factor = FALSE, dir = -1, cut = 1500) result <- earthUI:::format_component_html_(comp) expect_equal(result, "max(0, 1500 - sq_ft)") }) test_that("format_component_html_ handles dir=2 (linear predictor)", { comp <- list(base_var = "wt", is_factor = FALSE, dir = 2) result <- earthUI:::format_component_html_(comp) expect_equal(result, "wt") }) test_that("format_component_html_ handles factor indicator", { comp <- list(base_var = "condition", is_factor = TRUE, level = "Good") result <- earthUI:::format_component_html_(comp) expect_equal(result, "I{condition = Good}") }) # -- format_term_html_ --------------------------------------------------------- test_that("format_term_html_ formats intercept (degree 0)", { term <- list(coefficient = 42.5, degree = 0L, components = list()) result <- earthUI:::format_term_html_(term, is_first = TRUE, digits = 4L) expect_equal(result, "42.5") }) test_that("format_term_html_ formats first term (no sign prefix)", { comp <- list(base_var = "wt", is_factor = FALSE, dir = 1, cut = 3.0) term <- list(coefficient = -5.2, degree = 1L, components = list(comp)) result <- earthUI:::format_term_html_(term, is_first = TRUE, digits = 4L) expect_match(result, "^-5\\.2 \\* max\\(0, wt - 3\\)") }) test_that("format_term_html_ formats non-first positive term with + sign", { comp <- list(base_var = "hp", is_factor = FALSE, dir = -1, cut = 200) term <- list(coefficient = 3.7, degree = 1L, components = list(comp)) result <- earthUI:::format_term_html_(term, is_first = FALSE, digits = 4L) expect_match(result, "^\\+ 3\\.7 \\* max\\(0, 200 - hp\\)") }) test_that("format_term_html_ formats non-first negative term with - sign", { comp <- list(base_var = "hp", is_factor = FALSE, dir = 1, cut = 100) term <- list(coefficient = -2.5, degree = 1L, components = list(comp)) result <- earthUI:::format_term_html_(term, is_first = FALSE, digits = 4L) expect_match(result, "^- 2\\.5 \\* max\\(0, hp - 100\\)") }) test_that("format_term_html_ formats interaction (degree 2)", { comp1 <- list(base_var = "wt", is_factor = FALSE, dir = 1, cut = 3.0) comp2 <- list(base_var = "hp", is_factor = FALSE, dir = -1, cut = 200) term <- list(coefficient = 1.5, degree = 2L, components = list(comp1, comp2)) result <- earthUI:::format_term_html_(term, is_first = FALSE, digits = 4L) expect_match(result, "max\\(0, wt - 3\\) \\* max\\(0, 200 - hp\\)") }) test_that("format_term_html_ escapes HTML characters in output", { # Variable name with special chars would need escaping comp <- list(base_var = "a 0L) { for (comp in ti$components) { out <- earthUI:::format_component_html_(comp) expect_type(out, "character") expect_true(nchar(out) > 0L) } } } } })