tests/testthat/test_readmri3d.R

context("Test of reading mri3d files")
testFile = function(filename){
  f = system.file("extdata", filename, package = "Dmri3d")  
  print(f)
  print(file.exists(f))
  f
}

checkFileValid = function(filename, specialCheck=NULL){  
  filename= testFile(filename)
#  filename = testFile("rec1.mat") 
  # Default: no reduction in slice sampling, dwin = NULL
  mri = readMri3d(filename)
  expect_equal(names(mri),
               c("vars","slices","slicearea","sdata",
                 #"phi3d","x3d","y3d","z3d",
                 "indices","vertices"))
  expect_that(length(mri$vars)>= 42, is_true())
  expect_is(mri$vars$FileName,"character")
  expect_is(mri$vars$examination.date,"POSIXlt")
  expect_is(mri$slices,"data.frame")
  expect_is(mri$slicearea,"data.frame")
  expect_is(mri$indices,"list")
  expect_is(mri$indices[[1]][1,1],"integer")  
  
  expect_is(mri$vertices,"list")
  expect_is(mri$vertices[[1]][1,1],"numeric")  
  expect_more_than(nrow(mri$slices),10)
  expect_equal(ncol(mri$slicearea),4)
  expect_more_than(ncol(mri$indices[[1]]),1000)
  expect_more_than(ncol(mri$vertices[[1]]),500)
  area = mri$slicearea$area
  expect_more_than(length(area),3)
  if (!is.null(specialCheck))
    specialCheck(mri)
  invisible(mri)
}

checkNames = function(mri,expectNames = c("Stomach","Content","Capsule")){
  expect_equal(names(mri$indices),expectNames)
  expect_equal(names(mri$vertices),expectNames)
}

checkNamesExist = function(mri){
  expect_is(names(mri$indices),"character")
  expect_is(names(mri$vertices),"character")
}



test_that("Valid files must return standard parameters",{
  checkFileValid("rec1.mat")
  expect_warning(checkFileValid("vargrouperror.mat",checkNamesExist),"Group 5 has")
  expect_warning(checkFileValid("hasemptygroup.mat",checkNames),"Group 4")
  expect_warning(checkFileValid("nopill.mat"),"Capsule")
  expect_warning(checkFileValid("withcat.mat",checkNamesExist),"Envelope")
  checkFileValid("withsdata.mat",checkNamesExist)

  expect_warning(checkFileValid("A.mat",checkNamesExist),"Content")
  checkFileValid("B.mat",checkNamesExist)
  checkFileValid("C.mat",checkNames)
  expect_warning(checkFileValid("D.mat",checkNamesExist),"Content")
  # uses radical search
  #expect_warning(checkFileValid("E.mat",checkNamesExist),"radical")
  #expect_warning(checkFileValid("F.mat",checkNamesExist),"radical")
  expect_warning(checkFileValid("E.mat",checkNamesExist),"Group 5")
  expect_warning(checkFileValid("F.mat",checkNamesExist),"Group 5")
  expect_warning(checkFileValid("G.mat",checkNamesExist),"Duplicate")
  expect_warning(checkFileValid("H.mat",checkNamesExist),"volume")
  expect_warning(checkFileValid("voloutofbounds.mat"),"no volume")
  
})

test_that("Files with data from slice image stack must return sdata",{
  filename = "withsdata.mat" 
  mri = readMri3d(testFile(filename))
  expect_equal(length(mri$sdata),17)
  expect_equal(dim(mri$sdata["click.pt",,]$click.pt),c(3,3))
})  

test_that("Files without volume data must return NULL for indices and vertices",{
  filename = system.file("extdata", "no3d.mat", package = "Dmri3d")  
  expect_warning(mri <- readMri3d(filename))
  expect_equal(names(mri),
               c("vars","slices","slicearea","sdata",
                 #"phi3d","x3d","y3d","z3d",
                 "indices","vertices"))
  expect_true(is.null(mri$vertices))
  expect_true(is.null(mri$x3d))
  expect_true(is.null(mri$y3d))
  expect_true(is.null(mri$z3d))
  expect_true(is.null(mri$indices))
})
dmenne/dmri3d documentation built on May 15, 2019, 9:32 a.m.