tests/testthat/test-extract_metadata.R

test_that("extract_metadata works for prostate preset without pattern_col", {
  sample_file <- system.file("extdata", "sample_data.csv", package = "RiskyCNV")
  result <- extract_metadata(
    file_path    = sample_file,
    column_name  = "gleason_score",
    disease_type = "prostate",
    output_dir   = tempdir()
  )

  expect_type(result, "list")
  expect_true(any(c("Grade Group 1", "Grade Group 2",
                    "Grade Group 4", "Grade Group 5") %in% names(result)))
  expect_true(length(result[["Grade Group 1"]]) > 0)
})

test_that("extract_metadata works for prostate preset with pattern_col", {
  sample_file <- system.file("extdata", "sample_data.csv", package = "RiskyCNV")
  result <- extract_metadata(
    file_path    = sample_file,
    column_name  = "gleason_score",
    disease_type = "prostate",
    pattern_col  = "pattern1",
    output_dir   = tempdir()
  )

  expect_type(result, "list")
  # With pattern_col, Grade Group 2 and 3 can both appear
  expect_true(any(c("Grade Group 2", "Grade Group 3") %in% names(result)))
})

test_that("extract_metadata works for breast preset", {
  sample_file <- system.file("extdata", "sample_data.csv", package = "RiskyCNV")
  result <- extract_metadata(
    file_path    = sample_file,
    column_name  = "gleason_score",
    disease_type = "breast",
    output_dir   = tempdir()
  )

  expect_type(result, "list")
  expect_true(any(c("Grade 1", "Grade 2", "Grade 3") %in% names(result)))
})

test_that("extract_metadata works for lung preset", {
  sample_file <- system.file("extdata", "sample_data.csv", package = "RiskyCNV")
  result <- extract_metadata(
    file_path    = sample_file,
    column_name  = "pattern1",
    disease_type = "lung",
    output_dir   = tempdir()
  )

  expect_type(result, "list")
  expect_true(any(c("Stage I", "Stage II",
                    "Stage III", "Stage IV") %in% names(result)))
})

test_that("extract_metadata auto mode returns correct number of groups", {
  sample_file <- system.file("extdata", "sample_data.csv", package = "RiskyCNV")
  result <- extract_metadata(
    file_path    = sample_file,
    column_name  = "gleason_score",
    disease_type = "auto",
    n_groups     = 3,
    group_type   = "grade",
    output_dir   = tempdir()
  )

  expect_type(result, "list")
  expect_equal(length(result), 3)
})

test_that("extract_metadata auto mode works with stage labels", {
  sample_file <- system.file("extdata", "sample_data.csv", package = "RiskyCNV")
  result <- extract_metadata(
    file_path    = sample_file,
    column_name  = "gleason_score",
    disease_type = "auto",
    n_groups     = 4,
    group_type   = "stage",
    output_dir   = tempdir()
  )

  expect_type(result, "list")
  expect_true(any(grepl("Stage", names(result))))
})

test_that("extract_metadata auto mode works with risk labels", {
  sample_file <- system.file("extdata", "sample_data.csv", package = "RiskyCNV")
  result <- extract_metadata(
    file_path    = sample_file,
    column_name  = "gleason_score",
    disease_type = "auto",
    n_groups     = 3,
    group_type   = "risk",
    output_dir   = tempdir()
  )

  expect_type(result, "list")
  expect_true(any(grepl("risk", names(result))))
})

test_that("extract_metadata works with custom thresholds", {
  sample_file <- system.file("extdata", "sample_data.csv", package = "RiskyCNV")
  result <- extract_metadata(
    file_path    = sample_file,
    column_name  = "gleason_score",
    disease_type = "custom",
    thresholds   = list(
      "Stage I"   = function(x) x <= 6,
      "Stage II"  = function(x) x == 7,
      "Stage III" = function(x) x == 8,
      "Stage IV"  = function(x) x > 8
    ),
    output_dir   = tempdir()
  )

  expect_type(result, "list")
  expect_true("Stage I"  %in% names(result))
  expect_true("Stage IV" %in% names(result))
  expect_true(length(result[["Stage I"]]) > 0)
})

test_that("extract_metadata throws error for unsupported disease_type", {
  sample_file <- system.file("extdata", "sample_data.csv", package = "RiskyCNV")

  expect_error(
    extract_metadata(
      file_path    = sample_file,
      column_name  = "gleason_score",
      disease_type = "kidney",
      output_dir   = tempdir()
    ),
    "Unsupported disease_type"
  )
})

test_that("extract_metadata throws error when custom thresholds missing", {
  sample_file <- system.file("extdata", "sample_data.csv", package = "RiskyCNV")

  expect_error(
    extract_metadata(
      file_path    = sample_file,
      column_name  = "gleason_score",
      disease_type = "custom",
      output_dir   = tempdir()
    ),
    "you must supply a named list"
  )
})

test_that("extract_metadata saves output CSV file", {
  sample_file <- system.file("extdata", "sample_data.csv", package = "RiskyCNV")
  out_dir     <- tempdir()

  extract_metadata(
    file_path    = sample_file,
    column_name  = "gleason_score",
    disease_type = "prostate",
    output_dir   = out_dir
  )

  saved_files <- list.files(out_dir, pattern = "grade_groups", full.names = TRUE)
  expect_true(length(saved_files) > 0)
})

Try the RiskyCNV package in your browser

Any scripts or data that you put into this service are public.

RiskyCNV documentation built on June 5, 2026, 5:07 p.m.