tests/testthat/test-integration.R

library(testthat)

test_that("Fully Parse CovidOISExPONTENT.csv plate data", {
  # Read plate
  path <- system.file("extdata", "CovidOISExPONTENT.csv", package = "PvSTATEM", mustWork = TRUE)
  expect_no_error(plate <- read_luminex_data(path, format = "xPONENT", verbose = FALSE))
  # Check basic properties
  expect_equal(plate$plate_name, "CovidOISExPONTENT")
  expect_equal(plate$sample_names[10:13], c("S", "S", "S", "Unknown2"))
  expect_equal(plate$sample_types[10:13], c("STANDARD CURVE", "STANDARD CURVE", "STANDARD CURVE", "TEST"))
  expect_equal(plate$sample_types[1], "BLANK")
  expect_true(all(is.na(plate$dilutions)))
  # Check plotting mfi for analyte
  expect_no_error(p <- plot_mfi_for_analyte(plate, "S2"))
  expect_true(inherits(p, "ggplot"))
  expect_no_error(p <- plot_mfi_for_analyte(plate, "S2", plot_type = "boxplot", plot_outliers = TRUE))
  expect_true(inherits(p, "ggplot"))
  # Check blank adjustment
  plate <- plate$blank_adjustment(in_place = FALSE)
  expect_equal(plate$blank_adjusted, TRUE)
})

test_that("Test error catching without the layout file", {
  # Read plate
  path <- system.file("extdata", "CovidOISExPONTENT.csv", package = "PvSTATEM", mustWork = TRUE)

  # sample names
  expect_no_error(plate <- read_luminex_data(path, format = "xPONENT", verbose = FALSE, use_layout_sample_names = FALSE))

  expect_equal(plate$sample_names[10:13], c("S", "S", "S", "Unknown2"))

  # sample types
  expect_no_error(plate <- read_luminex_data(path, format = "xPONENT", verbose = FALSE, use_layout_types = FALSE))

  expect_equal(plate$sample_types[10:13], c("STANDARD CURVE", "STANDARD CURVE", "STANDARD CURVE", "TEST"))
  expect_true(all(is.na(plate$dilutions)))

  # dilution values
  expect_no_error(plate <- read_luminex_data(path, format = "xPONENT", verbose = FALSE, use_layout_dilutions = FALSE))
  expect_true(all(is.na(plate$dilutions)))
})

test_that("Test reading with layout", {
  path <- system.file("extdata", "random_no_standard_curve.csv", package = "PvSTATEM", mustWork = TRUE)
  layout_path <- system.file("extdata", "random_layout_no_standard_curve.xlsx", package = "PvSTATEM", mustWork = TRUE)

  expect_error(read_luminex_data(path, format = "xPONENT", layout_filepath = layout_path, verbose = FALSE))
})

test_that("Fully Parse CovidOISExPONTENT_CO.csv plate data with layout", {
  # Read plate
  path <- system.file("extdata", "CovidOISExPONTENT.csv", package = "PvSTATEM", mustWork = TRUE)
  layout_path <- system.file("extdata", "CovidOISExPONTENT_layout.xlsx", package = "PvSTATEM", mustWork = TRUE)
  expect_no_error(plate <- read_luminex_data(path, format = "xPONENT", layout_filepath = layout_path, verbose = FALSE))
  # Check basic properties
  expect_equal(plate$plate_name, "CovidOISExPONTENT")
  expect_equal(plate$dilutions[1:4], c(NA, "1/50", "1/100", "1/200"))
  # Check S3 functions
  expect_output(print(plate))
  expect_output(summary(plate))
  # Test processing of a plate
  tmp_dir <- tempdir(check = TRUE)
  test_output_path <- file.path(tmp_dir, "output.csv")
  expect_no_error(
    capture.output(
      process_plate(plate, output_dir = tmp_dir, filename = "output.csv", verbose = FALSE),
      file = NULL
    )
  )
  expect_true(file.exists(test_output_path))
  expect_no_error(dilutions <- read.csv(test_output_path))
  file.remove(test_output_path)
})

test_that("Test parsing CovidOISExPONTENT_CO.csv with one function", {
  path <- system.file("extdata", "CovidOISExPONTENT.csv", package = "PvSTATEM", mustWork = TRUE)
  layout_path <- system.file("extdata", "CovidOISExPONTENT_layout.xlsx", package = "PvSTATEM", mustWork = TRUE)
  expect_no_error(
    capture.output(
      process_file(path, layout_path, verbose = FALSE)
    )
  )
})

test_that("Read a INTELLIFLEX mock file", {
  path <- system.file("extdata", "random_intelliflex.csv", package = "PvSTATEM", mustWork = TRUE)
  expect_no_error(output <- read_intelliflex_format(path, verbose = verbose))
  expect_no_error(postprocess_intelliflex(output, verbose = verbose))
})

test_that("Test xponent file with holes in the layout", {
  path <- system.file("extdata", "CovidOISExPONTENT_CO_with_holes.csv", package = "PvSTATEM", mustWork = TRUE)
  layout_path <- system.file("extdata", "CovidOISExPONTENT_CO_with_holes_layout.xlsx", package = "PvSTATEM", mustWork = TRUE)

  plate <- read_luminex_data(path, format = "xPONENT", layout_filepath = layout_path, verbose = FALSE)


  expect_equal(sum(plate$sample_types == "STANDARD CURVE"), 11)
  expect_equal(sum(plate$sample_types == "BLANK"), 1)

  expect_equal(plate$layout[96], "1/102400")
  expect_equal(plate$sample_locations[1], "H1")

  expect_equal(sum(!is.na(plate$dilutions)), 11)
  expect_equal(length(plate$sample_locations), 44)

  expect_equal(sum(is.na(plate$sample_names)), 0)
  expect_equal(sum(is.na(plate$sample_types)), 0)
})

test_that("Test ignoring datatypes with missing rows", {
  path <- system.file("extdata", "CovidOISExPONTENT_missing_rows.csv", package = "PvSTATEM", mustWork = TRUE)
  layout_path <- system.file("extdata", "CovidOISExPONTENT_layout.xlsx", package = "PvSTATEM", mustWork = TRUE)

  expect_warning(
    plate <- read_luminex_data(path, format = "xPONENT", layout_filepath = layout_path, verbose = FALSE)
  )

  expect_equal(sum(plate$sample_types == "STANDARD CURVE"), 11)
  expect_true("Median" %in% names(plate$data))
  expect_false("Net MFI" %in% names(plate$data))
  expect_equal(length(plate$sample_types), 96)
})

Try the PvSTATEM package in your browser

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

PvSTATEM documentation built on April 4, 2025, 4:34 a.m.