tests/testthat/test-files_download.R

dl_folder <- file.path(tempdir(), "prism")
cur_path <- getOption("prism.path")
setup({prism_set_dl_dir(dl_folder)})
teardown({prism_set_dl_dir(cur_path)})


cat("\n\n***************************************")
cat("\nmake sure you run this 2x or less in any given day!!!!\n")
cat("****************************************\n")

# skip flags -----------------
skip_normals <- TRUE
skip_annual <- TRUE
skip_monthly <- TRUE
skip_daily <- TRUE
skip_daily_3 <- TRUE

# Normals ---------------
test_that("normals download", {
  skip_on_cran()
  skip_if(skip_normals)
  
  get_prism_normals("tmean", resolution = "4km", annual = TRUE)
  get_prism_normals("tmax", resolution = "4km", mon = 1)
  get_prism_normals("tmin", resolution = "4km", mon = 2)
  get_prism_normals("tdmean", resolution = "4km", mon = 6)
  get_prism_normals("vpdmin", resolution = "4km", mon = 12)
  get_prism_normals("vpdmax", resolution = "4km", mon = 9)
  get_prism_normals("ppt", resolution = "800m", mon = 11)
  get_prism_normals('solclear', '800m', mon = 1)
  get_prism_normals('solslope', '800m', annual = TRUE)
  get_prism_normals('soltotal', '800m', annual = TRUE)
  get_prism_normals('soltrans', '800m', mon = 3:4)
  get_prism_normals('ppt', '4km', NULL, FALSE, TRUE, c('0101', '0301'))
  get_prism_normals('ppt', '4km', 2, FALSE, TRUE, TRUE)
  get_prism_normals('tmean', '800m', NULL, FALSE, TRUE, as.Date('2000-07-04'))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_tmean_us_25m_2020_avg_30y.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_tmean_us_25m_2020_avg_30y")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_tmax_us_25m_202001_avg_30y.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_tmax_us_25m_202001_avg_30y")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_tmin_us_25m_202002_avg_30y.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_tmin_us_25m_202002_avg_30y")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_tdmean_us_25m_202006_avg_30y.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_tdmean_us_25m_202006_avg_30y")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_vpdmin_us_25m_202012_avg_30y.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_vpdmin_us_25m_202012_avg_30y")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_vpdmax_us_25m_202009_avg_30y.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_vpdmax_us_25m_202009_avg_30y")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_ppt_us_30s_202011_avg_30y.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_ppt_us_30s_202011_avg_30y")
  ))
  
  expect_true(dir.exists(
    file.path(dl_folder, "prism_solclear_us_25m_202001_avg_30y.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_solslope_us_25m_2020_avg_30y.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_soltotal_us_30s_2020_avg_30y.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_soltrans_us_30s_202003_avg_30y.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_soltrans_us_30s_202004_avg_30y.zip")
  ))
  
  # daily normals
  expect_true(all(dir.exists(
    file.path(
      dl_folder, 
      paste0('prism_ppt_us_25m_202002',sprintf("%02d",1:29), '_avg_30y')
    )
  )))
  expect_true(all(dir.exists(file.path(
    dl_folder, 
    c('prism_ppt_us_25m_20200201_avg_30y', 
      'prism_ppt_us_25m_20200301_avg_30y')
  ))))
  expect_true(dir.exists(
    file.path(dl_folder, 'prism_tmean_us_30s_20200704_avg_30y')
  ))
})

# annual -----------------------

test_that("annuals download", {
  skip_on_cran()
  skip_if(skip_annual)
  
  get_prism_annual("tmean", years = 2010)
  get_prism_annual("tmax",  years = 2011)
  get_prism_annual("tmin",  years = 2012)
  get_prism_annual("tdmean", years = 1944)
  get_prism_annual("vpdmin", years = 1982)
  get_prism_annual("vpdmax", years = 1933)
  get_prism_annual("ppt", years = 1999)
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_tmean_us_25m_2010.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_tmean_us_25m_2010")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_tmax_us_25m_2011.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_tmax_us_25m_2011")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_tmin_us_25m_2012.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_tmin_us_25m_2012")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_tdmean_us_25m_1944.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_tdmean_us_25m_1944")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_vpdmin_us_25m_1982.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_vpdmin_us_25m_1982")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_vpdmax_us_25m_1933.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_vpdmax_us_25m_1933")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_ppt_us_25m_1999.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_ppt_us_25m_1999")
  ))
})

# monthly ----------------------

test_that("monthlys download", {
  skip_on_cran()
  skip_if(skip_monthly)
  
  get_prism_monthlys("tmean", years = 2010, mon = 1)
  get_prism_monthlys("tmax", years = 1983, mon = 12)
  get_prism_monthlys("tmin", years = 2015, mon = 9)
  get_prism_monthlys("tdmean", years = 2000, mon = 3)
  get_prism_monthlys("vpdmin", years = 2002, mon = 6)
  get_prism_monthlys("vpdmax", years = 1970, mon = 1)
  get_prism_monthlys("ppt", years = 1925, mon = 3)
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_tmean_us_25m_201001.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_tmean_us_25m_201001")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_tmax_us_25m_198312.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_tmean_us_25m_201001")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_tmin_us_25m_201509.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_tmean_us_25m_201001")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_tdmean_us_25m_200003.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_tmean_us_25m_201001")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_vpdmin_us_25m_200206.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_tmean_us_25m_201001")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_vpdmax_us_25m_197001.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_vpdmax_us_25m_197001")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_ppt_us_25m_192503.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_ppt_us_25m_192503")
  ))
  
  # three consecutive --------------
  # Download three months to make sure that the middle month is downloaded.
  get_prism_monthlys(type = "tmean", mon = 2:4, year = 2014, keepZip = FALSE)
  for (i in 2:4) {
    expect_true(dir.exists(file.path(
      dl_folder, 
      paste0("prism_tmean_us_25m_2014", prism:::mon_to_string(i), "")
    )))
  }
})

# daily ------------------------

test_that("daily download", {
  skip_on_cran()
  skip_if(skip_daily)
  
  get_prism_dailys("tmean", dates = "1981-01-01")
  get_prism_dailys("tmax", dates = "1985-02-20")
  get_prism_dailys("tmin", dates = "1991-06-01")
  get_prism_dailys("tdmean", dates = "1997-09-27")
  get_prism_dailys("vpdmax", dates = "2006-12-31")
  get_prism_dailys("vpdmin", dates = "2012-01-01")
  get_prism_dailys("ppt", dates = "2015-11-05")
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_tmean_us_25m_19810101.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_tmean_us_25m_19810101")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_tmax_us_25m_19850220.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_tmax_us_25m_19850220")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_tmin_us_25m_19910601.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_tmin_us_25m_19910601")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_tdmean_us_25m_19970927.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_tdmean_us_25m_19970927")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_vpdmax_us_25m_20061231.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_vpdmax_us_25m_20061231")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_vpdmin_us_25m_20120101.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_vpdmin_us_25m_20120101")
  ))
  
  expect_true(file.exists(
    file.path(dl_folder, "prism_ppt_us_25m_20151105.zip")
  ))
  expect_true(dir.exists(
    file.path(dl_folder, "prism_ppt_us_25m_20151105")
  ))
})

# daily 3 in row ------------------
test_that("daily gets 3 in a row", {
  # Day = 13 to make sure months and days don't get confused.
  # Download three days to make sure that the middle day is downloaded.
  # Stable
  skip_on_cran()
  skip_if(skip_daily_3)
  
  get_prism_dailys(type = "tmean", minDate = "2014-01-13", 
                   maxDate = "2014-01-15",
                   keepZip = FALSE)
  get_prism_dailys(type = "ppt", minDate = "2000-06-13", maxDate = "2000-06-15",
                   keepZip = FALSE)
  
  for (i in 13:15) {
    expect_true(dir.exists(
      file.path(dl_folder, paste0("prism_ppt_us_25m_200006",i ,""))
    ))
    
    expect_true(dir.exists(
      file.path(dl_folder, paste0("prism_tmean_us_25m_201401", i,""))
    ))
  }
})

Try the prism package in your browser

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

prism documentation built on Nov. 15, 2025, 1:06 a.m.