library(acousticTS) test_that("validation registry derives family statuses consistently", { expect_equal( acousticTS:::.validation_family_status("hpa"), c("benchmarked", "validated") ) expect_equal( acousticTS:::.validation_family_status("bcms"), c("unvalidated", "experimental") ) expect_equal( acousticTS:::.validation_family_status("bbfm"), c("unvalidated", "experimental") ) expect_equal( acousticTS:::.validation_family_status("tmm"), c("benchmarked", "partially_validated", "experimental") ) }) test_that("validation registry tables cover every documented family", { meta <- acousticTS:::.validation_family_registry() status_table <- acousticTS:::.validation_family_status_table() evidence_table <- acousticTS:::.validation_evidence_table( type = c( "benchmark", "validated", "partially_validated", "experimental" ) ) expect_equal(nrow(status_table), nrow(meta)) expect_setequal(status_table$Family, meta$display) expect_true(all(c("Family", "Status") %in% names(status_table))) expect_true(all(c( "Family", "Evidence type", "Source", "Scope", "Summary" ) %in% names(evidence_table))) }) test_that("family status metadata stays aligned with evidence rows", { meta <- acousticTS:::.validation_family_registry() for (family in meta$family) { meta_row <- acousticTS:::.validation_family_meta(family) evidence <- acousticTS:::.validation_family_evidence(family) validation_rows <- evidence$evidence_type %in% c( "validated", "partially_validated" ) expect_identical( isTRUE(meta_row$benchmarked[[1]]), any(evidence$evidence_type == "benchmark") ) if (identical(meta_row$validation_status[[1]], "validated")) { expect_true(any(evidence$evidence_type == "validated")) expect_false(any(evidence$evidence_type == "partially_validated")) } else if (identical( meta_row$validation_status[[1]], "partially_validated" )) { expect_true(any(evidence$evidence_type == "partially_validated")) } else { expect_false(any(validation_rows)) } expect_identical( isTRUE(meta_row$experimental[[1]]), any(evidence$evidence_type == "experimental") ) } }) test_that("validation registry helper branches reject invalid inputs cleanly", { expect_error( acousticTS:::.validation_status_badge("mystery"), "Unknown model status" ) expect_equal( acousticTS:::.validation_normalize_family("SoEmS"), "calibration" ) expect_error( acousticTS:::.validation_normalize_family(""), "`family` must be a single non-empty string." ) expect_error( acousticTS:::.validation_normalize_family("unknown"), "Unknown model family" ) meta <- acousticTS:::.validation_family_meta("tmm") expect_equal(meta$validation_status[[1]], "partially_validated") expect_true(any(grepl( "validated", acousticTS:::.validation_family_validation("tmm") ))) policy <- as.character(acousticTS:::.validation_status_policy()) expect_match(policy, "