tests/testthat/test-h5.R

context("Testing write_h5 and read_h5")

if (require("hdf5r")) {
  obj <- get_h5_test_data()

  test_that("write_h5 and read_h5 works", {
    file <- tempfile()
    on.exit(file.remove(file))

    write_h5(obj, file)

    obj2 <- read_h5(file)

    testthat::expect_equivalent(obj2, obj)
  })

  test_that("test_h5_installation works", {
    expect_true(test_h5_installation())
    expect_message(test_h5_installation(detailed = TRUE), "HDF5 test successful")

    expect_output(expect_error(test_h5_installation_write(detailed = TRUE, obj = list(x = print))))
    expect_output(expect_error(test_h5_installation_read(detailed = TRUE, file = tempfile())))
    expect_output(expect_error(test_h5_installation_equal(detailed = TRUE, obj = 1, obj2 = 2)))
  })

  test_that("is_sparse works", {
    expect_false(is_sparse(matrix(c(1:10))))

    m <- Matrix::Matrix(matrix(c(1:10)), sparse = FALSE)
    expect_false(is_sparse(m))
    expect_true(is_sparse(methods::as(m, "CsparseMatrix")))
    expect_false(is_sparse(methods::as(m, "denseMatrix")))
  })


  test_that("errors gracefully", {
    file <- tempfile()
    on.exit(file.remove(file))

    h5file <- hdf5r::H5File$new(file, mode = "w")
    h5file[["a"]] <- 1
    h5file$close_all()

    expect_error(read_h5(file), regexp = "Object class not found")
  })

}

Try the dynutils package in your browser

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

dynutils documentation built on Oct. 11, 2022, 5:07 p.m.