tests/testthat/test-ts_bind.R

test_that("ts_bind works as it should.", {
  expect_equal(
    AirPassengers,
    ts_bind(
      ts_span(AirPassengers, start = "1950-01-01"),
      ts_span(AirPassengers, end = "1949-12-01")
    )
  )
  expect_equal(
    ts_dt(AirPassengers),
    ts_bind(
      ts_span(ts_dt(AirPassengers), start = "1950-01-01"),
      ts_span(ts_dt(AirPassengers), end = "1949-12-01")
    )
  )
  expect_equal(
    ts_df(AirPassengers),
    ts_bind(
      AirPassengers = ts_span(ts_df(AirPassengers), start = "1950-01-01"),
      ts_span(ts_df(AirPassengers), end = "1949-12-01")
    )
  )
  expect_equal(
    ts_tbl(AirPassengers),
    ts_bind(
      AirPassengers = ts_span(ts_tbl(AirPassengers), start = "1950-01-01"),
      ts_span(ts_tbl(AirPassengers), end = "1949-12-01")
    )
  )

  expect_s3_class(ts_bind(ts_dt(mdeaths), AirPassengers), "data.table")

  expect_equal(
    c(ts_span(ts_bind(mdeaths, 1:10), start = "1980-09-01")),
    c(9, 10)
  )
})


test_that("ts_chain gives correct results", {
  x <- ts_chain(
    ts_span(mdeaths, start = "1975-01-01", end = "1975-12-01"),
    fdeaths
  )

  expect_equal(
    sum(ts_span((ts_pc(x) - ts_pc(fdeaths)), start = "1976-01-01")),
    0
  )
  expect_equal(
    sum(ts_span((ts_pc(x) - ts_pc(fdeaths)), end = "1974-12-01"), na.rm = TRUE),
    0
  )

  x.df <- ts_chain(
    ts_span(ts_df(mdeaths), start = "1975-01-01", end = "1975-12-01"),
    ts_df(fdeaths)
  )
  x.xts <- ts_chain(
    ts_span(ts_xts(mdeaths), start = "1975-01-01", end = "1975-12-01"),
    ts_xts(fdeaths)
  )
  x.tbl <- ts_chain(
    ts_span(ts_tbl(mdeaths), start = "1975-01-01", end = "1975-12-01"),
    ts_tbl(fdeaths)
  )

  expect_equal(x.df, ts_df(x))
  expect_equal(x.xts, ts_xts(x))
  expect_equal(x.tbl, ts_tbl(x))
})


test_that("ts_bind works with scalars", {
  expect_equal(as.numeric(window(ts_bind(mdeaths, 1), start = 1980)), 1)
  twoseries <- ts_bind(ts_c(mdeaths, fdeaths), 1)
  expect_equal(as.numeric(window(twoseries, start = 1980)[, "mdeaths"]), 1)
  expect_s3_class(ts_bind(EuStockMarkets, 1), "ts")
})

test_that("ts_bind works with short series and scalars (#197)", {
  ans <- ts_bind(ts_tbl(mdeaths)[1:1, ], 1)
  expect_s3_class(ans, "tbl_df")
})

#' @srrstats {G2.6} *Software which accepts one-dimensional input should ensure values are appropriately pre-processed regardless of class structures.*
test_that("ensure values are appropriately pre-processed regardless of class structures.", {
  x <- c(2, 2)
  class(x) <- "myclass"
  ans <- ts_bind(mdeaths, x)
  expect_s3_class(ans, "ts")
})

Try the tsbox package in your browser

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

tsbox documentation built on May 31, 2023, 6:41 p.m.