tests/testthat/test-utils.R

# specify_parameters() tests ----------------------------------------------

test_that("specify_parameters() error handling works", {
  data <- read_acc(test_path("test-data-hip-imu.csv"))

  expect_error(
    specify_parameters(data, 1, 80),
    "`acc_placement` must be character; not double",
    class = "error_argument_type"
  )
  expect_error(
    specify_parameters(data, "hip", "80"),
    "`subj_body_mass` must be numeric; not character",
    class = "error_argument_type"
  )
  expect_error(
    specify_parameters(data, "waist", 80),
    "`acc_placement` must be one of \"ankle\", \"back\" or \"hip\"",
    class = "error_argument_value"
  )
  expect_error(
    data |>
      specify_parameters("hip", 78) |>
      specify_parameters("hip", 78),
    glue::glue(
      "`Accelerometer placement` and `Subject body mass` attributes were \\
      updated by a second call of specify_parameters()"
    )
  )
})

test_that("attributes have the correct values", {
  data <- read_acc(test_path("test-data-hip-imu.csv"))
  out <- specify_parameters(data, "hip", 80)

  expect_equal(attributes(out)$acc_placement, "hip")
  expect_equal(attributes(out)$subj_body_mass, 80)
})

# define_region() tests ---------------------------------------------------

test_that("define_region() error handling works", {
  data <- read_acc(test_path("test-data-hip-imu.csv"))

  expect_error(
    define_region(data, 15, "2017-12-09 15:03:00"),
    "`start_time` must be character; not double.",
    class = "error_argument_type"
  )
  expect_error(
    define_region(data, "2017-12-09 15:01:00", 15),
    "`end_time` must be character; not double.",
    class = "error_argument_type"
  )
  expect_error(
    define_region(data, "2017-12-09 5:10:00", "2017-12-09 15:15:00"),
    "`start_time` must be in the `YYYY-MM-DD HH:MM:SS` format."
  )
  expect_error(
    define_region(data, "2017-12-09 15:10:00", "2017-12-09 15:65:00"),
    "`end_time` must be in the `YYYY-MM-DD HH:MM:SS` format."
  )
  expect_error(
    define_region(data, "2017-12-09 13:00:00", "2017-12-09 16:00:00"),
    "`start_time` must not be before `data` Start time"
  )
  expect_error(
    define_region(data, "2017-12-09 15:01:00", "2017-12-09 16:00:00"),
    "`end_time` must not be after the last `data` timestamp"
  )
  expect_error(
    define_region(data, "2017-12-09 15:01:00", "2017-12-09 14:00:00"),
    "`end_time` must not be before `start_time`."
  )
})

test_that("define_region() works", {
  data <- read_acc(test_path("test-data-long.csv"))
  out <- define_region(data, "2017-12-09 15:00:01", "2017-12-09 15:00:03")

  expect_equal(nrow(out), 200)
})
verasls/impactr documentation built on Aug. 14, 2022, 12:44 p.m.