tests/testthat/test_files.R

context("Reading and writing files")

# Records ----

test_that("Writing all channels and overwriting with events", {

  # First write
  write_mdf(edfPath = "data/subject1.edf",
            mdfPath = "data/sample")
  expect_equal(length(list.dirs("data/sample")), 91)

  # Overwrite
  events <- read_events_noxturnal(
    "data/noxturnal_events_example_unicode.csv")
  write_mdf(
    edfPath = "data/subject1.edf",
    mdfPath = "data/sample",
    channels = c("Activity","Airflow"),
    events = read_events_noxturnal(
      "data/noxturnal_events_example_unicode.csv"))
  expect_equal(length(list.dirs("data/sample")), 3)

  events.write <- jsonlite::read_json(
    "data/sample/events.json",simplifyVector = TRUE)
  expect_equal(length(events.write), length(events))
  expect_equal(nrow(events.write), nrow(events))
})

test_that("Do not write channels", {
  write_mdf(edfPath = "data/subject1.edf",
            mdfPath = "data/sample",
            channels = c())
  expect_equal(length(list.dirs("data/sample")), 1)
  unlink("data/sample", recursive = TRUE)
})

test_that("Corrupted", {
  expect_warning({
    write_channel(channel = "F4",
                  signals = NULL,
                  headers = edfReader::readSignal("data/subject1.edf"),
                  mdfPath = "data/sample",
                  endian = "little")
  })
})

test_that("Missing mdfPath argument", {
  expect_error({
    write_channel(channel = "F4",
                  signals = list("F4"=list("signal"=c(1:100))),
                  headers = edfReader::readEdfHeader("data/subject1.edf"),
                  endian = "little")
  })
})

test_that("Read file", {
  write_mdf(edfPath = "data/subject1.edf",
            mdfPath = "data/sample",
            channels = c(),
            events = read_events_noxturnal("data/noxturnal_events_example_unicode.csv"))
  r <- read_mdf("data/sample",channels = c())
  expect_equal(nrow(r$events), 1411)
  unlink("data/sample",recursive = TRUE)
})

test_that("Read selected channels from MDF", {
  write_mdf(edfPath = "data/subject1.edf",
            mdfPath = "data/sample",
            channels = c("Airflow"),
            events = read_events_noxturnal("data/noxturnal_events_example_unicode.csv"))
  r <- read_mdf("data/sample",channels = c("Airflow"))
  expect_equal(nrow(r$events), 1411)
  unlink("data/sample",recursive = TRUE)
})

# Resmed ----

test_that("Read events Noxturnal 2", {
  events <- read_events_noxturnal("data/noxturnal_events_example_unicode_2.csv")
  expect_equal(nrow(events), 1412)
})

test_that("Read events Noxturnal 3", {
  events <- read_events_noxturnal("data/noxturnal_events_example_unicode_3.csv")
  expect_equal(nrow(events), 2073)
})

# Compumedics ----

test_that("Read and write Compumedics file", {

  ex_file <- file.path(tempdir(), "hyp_compumedics.txt")
  write.table(data.frame(x=c(0,1,0,2)),ex_file)
  hypnogram <- read_events_compumedics(ex_file,startTime = Sys.time())
  expect_equal(nrow(hypnogram), 4)
  write_hypnogram_compumedics(hypnogram,
                              file.path(tempdir(), "hyp_compumedics.xml"))
})

Try the rsleep package in your browser

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

rsleep documentation built on Nov. 6, 2023, 1:06 a.m.