tests/testthat/test.misc.r

foreach::registerDoSEQ()

test_that("conversione da ts a data.frame", {
  tt <- stats::ts(runif(10), start = c(1990, 1), frequency = 1)
  df <-  to_data_frame(tt, "test")
  expect_true(is.data.frame(df))
  expect_true(all(c("name", "anno", "periodo", "freq", "dati") %in% names(df)))

  tt <- stats::ts(runif(10), start = c(1990, 1), frequency = 4)
  df <-  to_data_frame(tt, "test")
  expect_true(is.data.frame(df))
  expect_true(all(c("name", "anno", "periodo", "freq", "dati") %in% names(df)))


  tt <- stats::ts(runif(10), start = c(1990, 1), frequency = 12)
  df <-  to_data_frame(tt, "test")
  expect_true(is.data.frame(df))
  expect_true(all(c("name", "anno", "periodo", "freq", "dati") %in% names(df)))
})

test_that("conversione da data.frame a bimets", {
  df <- as.data.frame(
    list(name = "TEST",
      anno = 1990,
      periodo = 1,
      freq = 1,
      dati = "[1,2,3,4,5]"),
    stringsAsFactors = FALSE)

  tt <- from_data_frame(df)
  expect_true(is.list(tt))

  tt <- tt[["TEST"]]
  expect_true(stats::is.ts(tt))
  expect_equal(stats::start(tt)[[1]], 1990)
  expect_equal(stats::start(tt)[[2]], 1)
  expect_equal(stats::frequency(tt), 1)

  df <- as.data.frame(
    list(name = "TEST",
      anno = 1990,
      periodo = 1,
      freq = 12,
      dati = "[1,2,3,4,5]"),
    stringsAsFactors = FALSE)

  tt <- from_data_frame(df)

  expect_true(is.list(tt))
  tt <- tt[["TEST"]]
  expect_true(stats::is.ts(tt))
  expect_equal(stats::start(tt)[[1]], 1990)
  expect_equal(stats::start(tt)[[2]], 1)
  expect_equal(stats::frequency(tt), 12)

  df <- as.data.frame(
    list(name = "TEST",
      anno = 1990,
      periodo = 1,
      freq = 4,
      dati = "[1,2,3,4,5]"),
    stringsAsFactors = FALSE)

  tt <- from_data_frame(df)
  expect_true(is.list(tt))
  tt <- tt[["TEST"]]
  expect_true(stats::is.ts(tt))
  expect_equal(stats::start(tt)[[1]], 1990)
  expect_equal(stats::start(tt)[[2]], 1)
  expect_equal(stats::frequency(tt), 4)
})

test_that("valori null passati a from_data_frame vengono convertiti in NA", {
  df <- as.data.frame(
    list(name = "TEST",
      anno = 1990,
      periodo = 1,
      freq = 4,
      dati = "[null, 1,2,3,4,null]"),
    stringsAsFactors = FALSE)

  tt <- from_data_frame(df)
  expect_true(is.list(tt))
  tt <- tt[["TEST"]]
  expect_true(stats::is.ts(tt))
  expect_true(is.na(xts::last(tt)))
  expect_true(is.na(xts::first(tt)))
})


test_that("tsdiff returns FALSE if two timeseries are equal",  {
  a <- b <- stats::ts(runif(10), start = c(1990, 1), frequency = 1)
  expect_true(!tsdiff(a, b))
  a <- b <- stats::ts(runif(10), start = c(1990, 1), frequency = 4)
  expect_true(!tsdiff(a, b))
  a <- b <- stats::ts(runif(10), start = c(1990, 1), frequency = 12)
  expect_true(!tsdiff(a, b))
})

test_that("tsdiff returns TRUE if two timeseries differ",  {
  a <- stats::ts(runif(10), start = c(1990, 1), frequency = 1)
  b <- stats::ts(runif(10), start = c(1990, 1), frequency = 1)
  expect_true(tsdiff(a, b))
  a <- stats::ts(runif(10), start = c(1990, 1), frequency = 4)
  b <- stats::ts(runif(10), start = c(1990, 1), frequency = 4)
  expect_true(tsdiff(a, b))
  a <- stats::ts(runif(10), start = c(1990, 1), frequency = 12)
  b <- stats::ts(runif(10), start = c(1990, 1), frequency = 12)
  expect_true(tsdiff(a, b))
})

test_that("tsdiff returns TRUE if two timeseries have different index",  {
  a <- stats::ts(runif(10), start = c(1990, 1), frequency = 1)
  b <- stats::ts(runif(10), start = c(1990, 1), frequency = 12)
  expect_true(tsdiff(a, b))
  a <- stats::ts(runif(10), start = c(1990, 1), frequency = 4)
  b <- stats::ts(runif(10), start = c(1990, 1), frequency = 12)
  expect_true(tsdiff(a, b))
  a <- stats::ts(runif(10), start = c(1990, 1), frequency = 1)
  b <- stats::ts(runif(10), start = c(1990, 1), frequency = 4)
  expect_true(tsdiff(a, b))
})

test_that("tsdiff returns TRUE if two timeseries have different dimensions",  {
  v1 <- c(1, 2, 3, 4, 5)
  v2 <- c(v1, 6)
  a <- stats::ts(v1, start = c(1990, 1), frequency = 1)
  b <- stats::ts(v2, start = c(1990, 1), frequency = 1)
  expect_true(tsdiff(a, b))
  a <- stats::ts(v1, start = c(1990, 1), frequency = 4)
  b <- stats::ts(v2, start = c(1990, 1), frequency = 4)
  expect_true(tsdiff(a, b))
  a <- stats::ts(v1, start = c(1990, 1), frequency = 12)
  b <- stats::ts(v2, start = c(1990, 1), frequency = 12)
  expect_true(tsdiff(a, b))
})


test_that(" to_data_frame correctly converts a single obs timeseries", {
  anno <- 1990
  period <- 1
  freq <- 4
  dati <- 1

  tt <- stats::ts(dati, start = c(anno, period), frequency = freq)
  x <-  to_data_frame(tt)

  expect_equal(x[, "anno"], anno)
  expect_equal(x[, "freq"], freq)
  expect_equal(x[, "periodo"], period)
  expect_equal(x[, "dati"], "[1]")
})

test_that("to_data_frame converts a single obs ts produced by formula", {
  anno <- 1990
  period <- 1
  freq <- 4
  dati <- 1

  g <- GrafoDB("test")
  on.exit(delete_graph("test"))

  g["A"] <- g["B"] <- stats::ts(c(1, 2, 3), start = c(anno, period), frequency = freq)
  g["C"] <- function(A, B) { # nolint voglio solo l'ultimo periodo
    C <- window(A + B, start = c(1990, 1 + 2)) # nolint
  }

  x <-  to_data_frame(g$C)
  expect_equal(x[, "anno"], anno)
  expect_equal(x[, "freq"], freq)
  expect_equal(x[, "periodo"], period + 2)
  expect_equal(x[, "dati"], "[6]")

  expect_equal(length(g$C), 1)
})
giupo/GrafoDB documentation built on Oct. 12, 2022, 9:43 a.m.