tests/testthat/test-expectedValues.R

context("core functions return expected structures and values")
library(tbrf)

set.seed(1)

df <- tibble(
  date = sample(seq(as.Date('2000-01-01'), as.Date('2005/12/30'), by = "day"), 10),
  value = rexp(10, 1/100)
)


test_that("tbr_mean provides same results as mean", {

  x1 <- df %>% tbr_mean(x = value,
                       tcolumn = date,
                       unit = "years",
                       n = 5) %>%
    rename(results = mean)

  x2 <- df %>% tbr_misc(x = value,
                        tcolumn = date,
                        unit = "years",
                        n = 5,
                        func = mean)

  expect_equivalent(x1[2:10,3], x2[2:10,3])
  
  })


test_that("tbr_median provides same results as median", {

  x1 <- df %>% tbr_median(x = value,
                        tcolumn = date,
                        unit = "years",
                        n = 5)
  expect_s3_class(x1, "tbl_df")
  x2 <- df %>% tbr_misc(x = value,
                        tcolumn = date,
                        unit = "years",
                        n = 5,
                        func = median)
  expect_equivalent(sum(x1$median[2:10], na.rm = TRUE), 
               sum(x2$results[2:10], na.rm = TRUE))
})


test_that("tbr_sum provides expected values", {

  df <- data.frame(
    date = (as.Date(c('2001-01-01', '2002-01-01',
                      '2003-01-01', '2004-01-01',
                      '2005-01-01', '2006-01-01',
                      '2007-01-01', '2008-01-01',
                      '2009-01-01', '2010-01-01'))),
    value = 1
  )

  x1 <- df %>% tbr_sum(x = value,
                          tcolumn = date,
                          unit = "years",
                          n = 5)

  expect_equal(sum(x1$sum), 45)
})

randomTimes <- function(n, st = "2012/01/01", et = "2012/01/02") {
  st <- as.POSIXct(as.Date(st))
  et <- as.POSIXct(as.Date(et))
  dt <- as.numeric(difftime(et,st,unit = "sec"))
  ev <- sort(runif(n, 0, dt))
  rt <- st + ev
  rt
}

test_that("core functions work with different time units", {
  df <- data.frame(
    date = randomTimes(100),
    value = rexp(100, 1/100)
  )

  expect_s3_class(df %>% tbr_mean(x = value,
                                  tcolumn = date,
                                  unit = "minutes",
                                  n = 60),
                  "tbl_df")

  expect_s3_class(df %>% tbr_misc(x = value,
                                  tcolumn = date,
                                  unit = "minutes",
                                  n = 60,
                                  func = mean),
                  "tbl_df")
})
mps9506/tbrf documentation built on May 20, 2022, 10:49 a.m.