context("fetchHenry and related") test_that("month2season() works as expected", { x <- c('Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Jan', 'Feb', 'Mar', 'Apr', 'May') res <- month2season(x) # classification expect_equal( as.character(res), c("Summer", "Summer", "Summer", "Fall", "Fall", "Fall", "Winter", "Winter", "Winter", "Spring", "Spring", "Spring") ) # factor levels expect_equal( levels(res), c("Winter", "Spring", "Summer", "Fall") ) # bogus input expect_true( is.na(month2season('da')) ) }) test_that("summarizeSoilTemperature() works as expected", { ## this is kind of stupid, consider a new sample dataset x <- structure( list( sid = rep(469L, 749), date_time = paste0(seq(as.Date("2007-12-05"), as.Date("2009-12-22"), length.out = 749), " 00:00:00"), sensor_value = c(8.23, 8.555, 8.82, 8.953, 8.62, 8.49, 8.23, 7.963, 7.83, 7.63, 7.43, 7.088, 7.02, 7.02, 7.02, 7.02, 7.02, 6.953, 6.687, 6.62, 6.62, 6.552, 6.21, 6.21, 6.01, 5.81, 5.943, 6.21, 6.077, 6.077, 6.21, 6.143, 6.143, 5.81, 5.81, 5.81, 5.81, 5.81, 5.81, 5.81, 5.81, 5.81, 5.81, 5.81, 5.537, 5.4, 5.4, 5.4, 5.19, 4.98, 4.912, 4.57, 4.57, 4.775, 4.98, 4.98, 4.57, 4.57, 4.29, 4.15, 4.01, 3.73, 3.73, 3.59, 3.73, 3.73, 3.73, 4.15, 4.57, 4.707, 4.98, 4.98, 4.98, 4.57, 4.57, 4.912, 4.98, 5.12, 5.4, 5.4, 5.33, 4.98, 4.98, 4.98, 5.33, 5.605, 5.81, 6.143, 6.143, 5.877, 5.81, 5.81, 5.81, 6.077, 6.21, 6.21, 6.21, 6.62, 6.887, 7.02, 7.02, 7.02, 6.753, 6.21, 6.21, 6.21, 6.347, 6.483, 6.483, 6.62, 6.687, 7.02, 7.02, 7.02, 7.02, 7.02, 7.293, 7.225, 7.02, 7.02, 7.362, 7.43, 7.497, 7.697, 7.763, 7.43, 7.43, 7.43, 7.63, 7.897, 8.36, 8.953, 9.02, 8.687, 8.62, 8.82, 9.02, 9.02, 8.555, 8.23, 8.23, 8.23, 8.23, 8.555, 9.02, 9.615, 9.877, 9.877, 9.68, 9.42, 9.81, 9.81, 9.877, 10.21, 10.47, 10.6, 10.6, 10.6, 10.99, 10.99, 10.99, 11.12, 11.38, 11.965, 12.477, 12.93, 13.247, 13.31, 13.31, 13.057, 12.735, 12.477, 12.095, 11.77, 11.51, 11.38, 11.38, 11.38, 11.77, 11.77, 12.16, 12.16, 12.54, 12.413, 12.54, 12.54, 12.54, 12.735, 12.93, 13.31, 13.31, 13.31, 13.763, 14.08, 14.08, 14.46, 14.46, 14.46, 14.85, 15.04, 15.23, 15.357, 15.357, 15.547, 15.61, 15.61, 15.61, 15.935, 16, 16, 16, 16, 16.123, 16, 16, 16.37, 16.63, 17.068, 17.455, 17.583, 17.583, 17.583, 17.647, 17.9, 17.9, 17.9, 17.837, 17.9, 17.9, 17.9, 17.647, 17.52, 17.583, 17.647, 17.837, 17.9, 17.9, 17.9, 17.773, 17.52, 17.647, 17.773, 17.9, 17.9, 17.963, 18.027, 18.28, 18.28, 18.28, 18.217, 17.963, 18.217, 18.28, 18.533, 18.66, 18.977, 19.04, 19.04, 18.787, 18.533, 18.28, 18.28, 18.28, 18.66, 18.66, 18.66, 18.66, 18.66, 18.913, 19.04, 18.977, 18.597, 18.28, 18.09, 18.153, 18.28, 18.28, 18.28, 18.533, 18.407, 18.28, 18.027, 17.9, 17.9, 17.9, 17.9, 17.9, 17.9, 17.9, 17.773, 17.52, 17.195, 17.007, 16.76, 16.76, 16.76, 17.13, 17.13, 17.13, 17.13, 17.195, 17.455, 17.52, 17.325, 17.068, 16.565, 16.123, 15.935, 15.805, 15.61, 15.483, 14.783, 14.207, 13.698, 13.31, 13.31, 13.505, 13.7, 14.08, 14.08, 14.08, 14.08, 14.08, 14.08, 14.08, 14.08, 14.08, 14.08, 14.08, 14.08, 14.08, 14.08, 14.08, 14.08, 13.57, 13.183, 12.735, 12.223, 11.965, 11.77, 11.77, 11.77, 11.38, 11.38, 11.38, 11.38, 11.38, 11.38, 11.575, 11.77, 11.77, 11.705, 11.445, 11.185, 10.99, 10.86, 10.86, 10.86, 10.99, 10.925, 10.6, 10.6, 10.6, 10.6, 10.405, 10.143, 9.81, 9.68, 9.42, 9.42, 9.087, 9.02, 8.753, 8.62, 8.62, 8.49, 8.097, 7.83, 7.43, 7.02, 6.753, 6.62, 6.21, 6.21, 6.21, 6.21, 5.943, 5.81, 5.537, 5.4, 5.4, 5.4, 5.4, 5.4, 5.537, 5.81, 5.742, 5.4, 5.4, 5.468, 5.742, 5.81, 5.81, 5.81, 5.81, 5.81, 6.143, 6.21, 6.21, 6.21, 6.552, 6.62, 6.62, 6.62, 6.887, 7.088, 7.563, 7.763, 7.293, 6.887, 6.415, 6.21, 6.21, 6.21, 6.21, 6.21, 6.21, 6.552, 6.62, 6.82, 6.887, 6.953, 6.82, 6.415, 6.01, 5.81, 5.468, 5.4, 4.98, 4.98, 4.638, 4.57, 4.57, 4.57, 4.912, 5.05, 5.468, 5.877, 6.21, 6.21, 6.483, 6.21, 6.552, 6.82, 7.02, 6.953, 6.552, 6.21, 6.21, 6.01, 5.74, 5.4, 5.33, 5.4, 5.4, 5.537, 5.81, 6.077, 6.21, 6.62, 6.953, 7.293, 7.43, 7.697, 6.82, 6.21, 6.21, 6.62, 7.02, 7.362, 7.83, 7.63, 7.43, 7.497, 7.83, 7.83, 7.697, 7.43, 7.497, 7.897, 7.963, 7.83, 7.83, 7.83, 7.83, 8.163, 8.62, 8.227, 7.83, 7.83, 8.295, 9.02, 9.812, 10.535, 11.185, 11.51, 11.575, 10.86, 10.34, 10.21, 10.143, 9.81, 9.81, 9.943, 10.21, 10.21, 10.405, 10.925, 11.25, 11.445, 11.77, 12.16, 12.223, 12.54, 12.54, 12.54, 12.54, 12.605, 12.993, 13.505, 14.08, 14.46, 14.46, 14.27, 14.397, 14.46, 14.46, 14.27, 14.27, 14.525, 14.913, 15.23, 15.357, 15.61, 15.61, 15.357, 15.04, 14.913, 14.527, 13.89, 13.7, 13.89, 14.08, 14.08, 14.08, 14.08, 14.08, 14.08, 14.08, 14.08, 14.46, 14.85, 15.23, 15.42, 15.23, 14.977, 15.23, 15.61, 16, 16.123, 16.37, 16.76, 17.13, 17.52, 17.455, 17.52, 17.52, 17.647, 17.647, 17.583, 17.325, 17.068, 16.945, 16.883, 16.945, 17.13, 17.13, 17.39, 17.583, 17.963, 18.28, 18.66, 18.723, 19.04, 19.103, 19.04, 19.04, 19.04, 18.913, 19.04, 19.04, 19.23, 19.293, 19.42, 19.42, 19.357, 19.23, 19.103, 18.977, 18.787, 18.47, 17.71, 17.52, 17.647, 17.963, 18.343, 18.66, 18.787, 18.787, 18.407, 18.217, 18.28, 18.47, 18.723, 19.04, 19.103, 19.357, 19.23, 18.85, 18.787, 18.723, 18.66, 18.913, 19.04, 19.04, 19.103, 19.167, 19.04, 19.357, 19.357, 19.167, 18.787, 18.343, 18.027, 17.9, 18.027, 18.28, 18.66, 18.47, 18.027, 17.325, 17.13, 17.13, 17.52, 17.583, 17.71, 17.583, 17.9, 17.9, 17.9, 17.9, 17.9, 18.09, 18.09, 17.963, 17.01, 16.185, 16, 15.805, 15.42, 14.718, 14.207, 14.08, 14.08, 14.08, 14.08, 14.08, 14.08, 13.953, 13.7, 14.017, 14.08, 14.46, 14.525, 14.655, 14.017, 13.375, 13.057, 13.183, 13.31, 13.31, 13.31, 13.247, 12.543, 11.575, 11.12, 10.99, 11.324, 11.445, 11.835, 12.16, 12.03, 11.64, 11.445, 11.185, 10.925, 10.99, 10.99, 10.99, 10.47, 9.943, 9.615, 9.42, 9.42, 9.42, 9.287, 9.02, 9.02, 8.82, 8.753, 8.62, 8.62, 8.62, 8.62, 8.62, 8.23, 7.83, 7.83, 7.83, 7.563, 7.43, 7.43, 7.02, 6.687, 6.278, 6.143, 5.81, 5.81, 5.943, 6.21, 6.21, 6.21, 6.347, 6.62, 6.62, 6.62, 6.687, 7.02, 7.02) ), class = "data.frame", row.names = c(NA, 749L) ) s <- .formatDates(x, gran = 'day', pad.missing.days = TRUE) salt <- .formatDates(x, gran = 'day', pad.missing.days = FALSE) expect_equal(nrow(s), 1096) # filled expect_equal(nrow(salt), 749) # not filled res <- summarizeSoilTemperature(s) expect_equal(nrow(res), 1) expect_equal(res$days.of.data, 749L) expect_equal(res$gap.index, 0.32) expect_equal(res$functional.yrs, 2L) expect_equal(res$complete.yrs, 1L) expect_equal(res$MAST, 11.65) expect_equal(res$Winter, 6.16) expect_equal(res$Summer, 16.92) expect_equal(as.character(res$STR), 'mesic') }) test_that(".fill_missing_days() works as expected", { x <- data.frame( sid = 1, date_time = as.POSIXct('2010-02-17 00:00:00'), sensor_value = 1, year = 2010, doy = 48, month = 'Feb', season = 'Winter', water_year = 2010, water_day = 140 ) res <- .fill_missing_days(x) # there should be 365 records expect_true(nrow(res) == 365) ## TODO more tests }) test_that(".formatDates() works as expected", { ## TODO: be careful with timezones x <- data.frame( sid = c(1L, 2L), date_time = c("2010-02-17 10:00:00", "2021-01-01 10:00:00"), sensor_value = c(40.000, 5.5), stringsAsFactors = FALSE ) # .formatDates tz argument ensures consistency of tests across platforms/locales res <- soilDB:::.formatDates(x, gran = 'day', pad.missing.days = FALSE, tz = "GMT") # expected structure expect_true(nrow(res) == nrow(x)) expect_equal(res$sid, x$sid) expect_true(inherits(res$date_time, 'POSIXct')) expect_equal(res$sensor_value, x$sensor_value) expect_equal(res$year, c(2010L, 2021L)) expect_equal(res$doy, c(48L, 1L)) expect_equal(as.character(res$month), c('Feb', 'Jan')) expect_equal(res$water_year, c(2010L, 2021L)) expect_equal(res$water_day, c(140L, 93L)) }) test_that("fetchHenry() works as expected", { expect_true(TRUE) })