tests/testthat/test-bind_into_vpts.R

test_that("bind_into_vpts() returns error on incorrect parameters", {
  # non vpts inputs
  expect_error(
    bind_into_vpts(
      example_vpts[2:5],
      example_vpts[1],
      "not_a_vpts",
      example_vpts[6:9]
    ),
    regexp = "requires vpts objects as input",
    fixed = TRUE
  )
  # non vp objects input
  expect_error(
    bind_into_vpts.vp(
      example_vpts[2:5],
      example_vpts[1]
    ),
    regexp = "requires vp objects as input",
    fixed = TRUE
  )
  # unexpected objects in list
  expect_error(
    suppressWarnings(
      bind_into_vpts(list("a", example_vpts[2:5]))
      ),
    regexp = "requires list of vp objects as input",
    fixed = TRUE
  )
  # must have same radar
  example_vpts_radar_modified <- example_vpts
  example_vpts_radar_modified$radar <- "seang"
  expect_error(
    bind_into_vpts(example_vpts, example_vpts_radar_modified),
    regexp = "Vertical profiles are not from a single radar",
    fixed = TRUE
  )
  # different quantities in vertical profiles
  example_vpts_dbzh_delete <- example_vpts
  example_vpts_dbzh_delete$data$DBZH <- NULL
  expect_error(
    bind_into_vpts(example_vpts_dbzh_delete, example_vpts),
    regexp = "Vertical profiles have different quantities",
    fixed = TRUE
  )
  # Vertical profiles with different altitude layer widths
  example_vpts_interval_edit <- example_vpts
  example_vpts_interval_edit$attributes$where$interval <- 189
  expect_error(
    bind_into_vpts(example_vpts_interval_edit, example_vpts),
    regexp = "Vertical profiles with different altitude layer widths",
    fixed = TRUE
  )
  # Vertical profiles with different numbers of altitude layers
  example_vpts_layer_edit <- example_vpts
  example_vpts_layer_edit$attributes$where$levels <- 23
  expect_error(
    bind_into_vpts(example_vpts_layer_edit, example_vpts),
    regexp = "Vertical profiles with different numbers of altitude layers",
    fixed = TRUE
  )
  # vp: Vertical profiles of radar contain different quantities.
  example_vp_dbzh_delete <- example_vp
  example_vp_dbzh_delete$data$DBZH <- NULL
  expect_error(
    bind_into_vpts(list(example_vp_dbzh_delete, example_vp)),
    regexp = "Vertical profiles of radar seang contain different quantities.",
    fixed = TRUE
  )
  # vp: Vertical profiles with different altitude layer widths
  example_vp_interval_edit <- example_vp
  example_vp_interval_edit$attributes$where$interval <- 189
  expect_error(
    bind_into_vpts(list(example_vp_interval_edit, example_vp)),
    regexp = "Vertical profiles with different altitude layer widths",
    fixed = TRUE
  )
  # vp: Vertical profiles with different numbers of altitude layers
  example_vp_layer_edit <- example_vp
  example_vp_layer_edit$attributes$where$levels <- 23
  expect_error(
    bind_into_vpts(list(example_vp_layer_edit, example_vp)),
    regexp = "Vertical profiles with different numbers of altitude layers",
    fixed = TRUE
  )
})

test_that("bind_into_vpts() warns for multiple different radars", {
  expect_warning(
    bind_into_vpts(
      example_vp,
      example_vpts[1]
    ),
    regexp = "Vertical profiles are not from a single radar.",
    fixed = TRUE
  )
})

test_that("vpts based on vp, multiple vp or vector of vp", {
  data(example_vpts)
  expect_s3_class(bind_into_vpts(example_vpts[1]), "vpts")
  expect_s3_class(bind_into_vpts(example_vpts[1], example_vpts[2]), "vpts")
  expect_s3_class(bind_into_vpts(c(example_vpts[1], example_vpts[2], example_vpts[3])), "vpts")
})

test_that("vpts based on vpts or multiple vpts", {
  data(example_vpts)
  expect_s3_class(bind_into_vpts(example_vpts[1:10]), "vpts")
  expect_s3_class(bind_into_vpts(example_vpts[1:10], example_vpts[11:20]), "vpts")
})

test_that("vp with different heights", {
  data(example_vp)
  lower <- example_vp
  lower$data <- lower$data[1:20, ]
  lower$attributes$where$levels = 20
  higher <- example_vp
  higher$data <- higher$data[3:25, ]
  lower$attributes$where$levels = 23
  expect_s3_class(bind_into_vpts(example_vp, lower), "vpts")
  expect_s3_class(bind_into_vpts(list(example_vp, higher)), "vpts")
  expect_s3_class(bind_into_vpts(example_vp, higher), "vpts")
  vpts <- bind_into_vpts(lower, higher)
  expect_s3_class(vpts, "vpts")
  expect_equal(vpts$attributes$where$levels, example_vpts$attributes$where$levels)
  higher$data$height <- higher$data$height + 1
  expect_error(bind_into_vpts(example_vp, higher),
               regexp = "Not all data has the same alignment of altitude bins",
               fixed = TRUE)
})

test_that("vpts with different heights", {
  data(example_vpts)
  lower <- example_vpts
  lower$height <- lower$height[1:20]
  lower$attributes$where$levels = 20
  lower$data <- lapply(lower$data, head, 20)
  vpts <- bind_into_vpts(lower, example_vpts)
  expect_s3_class(vpts,'vpts')
  expect_equal(vpts$attributes$where$levels, example_vpts$attributes$where$levels)
})

test_that("vplist_to_vpts() returns error for unknown radar", {
  expect_error(
    vplist_to_vpts(list(example_vp,example_vp), radar = "not_a_radar"),
    regexp = "no profiles found for radar not_a_radar",
    fixed = TRUE
  )
})

test_that("vplist_to_vpts() returns vpts object", {
  expect_type(
    vplist_to_vpts(list(example_vp, example_vp), radar = "seang"),
    "list")
  expect_s3_class(
    vplist_to_vpts(list(example_vp, example_vp), radar = "seang"),
    "vpts"
  )
})

test_that("combined_heights() returns error on incorrect parameters", {
  expect_error(
    combined_heights("a"),
    regexp = "x is not a list",
    fixed = TRUE
  )
  expect_error(
    combined_heights(as.list(example_vpts$height)),
    regexp = "Not all data has the same size of altitude bins",
    fixed = TRUE
  )
})

Try the bioRad package in your browser

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

bioRad documentation built on Oct. 20, 2023, 5:06 p.m.