tests/testthat/test-Points-methods.R

context("Points-methods")

test_that("coercion from Points to Quantiles works", {
  expect_that(as(new("Points", dimvalues = c(0.025, 0.5, 0.975)), "Quantiles"),
              is_identical_to(new("Quantiles", dimvalues = c(0.025, 0.5, 0.975))))
  expect_that(as(new("Points"), "Quantiles"),
              is_identical_to(new("Quantiles")))
  expect_that(as(new("Points", dimvalues = c(0.025, 0.5, 2)), "Quantiles"),
              throws_error("labels not valid for dimscale"))
})


test_that("coercion from Points to Intervals works", {
  expect_that(as(new("Points", dimvalues = 0:2), "Intervals"),
              is_identical_to(new("Intervals", dimvalues = c(0, 1, 2, 3))))
  expect_that(as(new("Points", dimvalues = c(0.5, 3, 7.5, 12.5)), "Intervals"),
              throws_error("labels not valid for dimscale"))
  expect_that(as(new("Points"), "Intervals"),
              is_identical_to(new("Intervals")))
  expect_that(as(new("Points", dimvalues = c(-1, 0, 1)), "Intervals"),
              is_identical_to(new("Intervals", dimvalues = c(-1, 0, 1, 2))))
})


test_that("coercion from Points to Iterations works", {
  expect_that(as(new("Points", dimvalues = c(1, 2, 3)), "Iterations"),
              is_identical_to(new("Iterations", dimvalues = 1:3)))
  expect_that(as(new("Points", dimvalues = c(0.5, 1.5, 2.5)), "Iterations"),
              throws_error("labels not valid for dimscale"))
  expect_that(as(new("Points"), "Iterations"),
              is_identical_to(new("Iterations")))
})

test_that("dbindDimScales method for Points works", {
    dbindDimScales <- dembase:::dbindDimScales
    e1 <- new("Points", dimvalues = c(0.1, 0.5))
    e2 <- new("Points", dimvalues = 0.9)
    ans.obtained <- dbindDimScales(e1 = e1, e2 = e2, along = "pts")
    ans.expected <- new("Points", dimvalues = c(0.1, 0.5, 0.9))
    expect_identical(ans.obtained, ans.expected)
    e1 <- new("Points", dimvalues = c(0.1, 0.5))
    e2 <- new("Points", dimvalues = 0.5)
    expect_error(dbindDimScales(e1 = e1, e2 = e2, along = "pts"),
                 "\"pts\" dimensions overlap")
})

test_that("length method for DimScale works when used on Points", {
  expect_that(length(new("Points", dimvalues = c(0, 1, 2))),
              is_identical_to(3L))
  expect_that(length(new("Points")),
              is_identical_to(0L))
})

test_that("dimscales method for DimScales works when used on Points", {
  expect_that(dimscales(new("Points", dimvalues = c(0, 1, 2))),
              is_identical_to("Points"))
})

test_that("dimvalues method for DimScales works when used on Points", {
  dimvalues <- dembase:::dimvalues
  expect_that(dimvalues(new("Points", dimvalues = c(0, 1, 2))),
              is_identical_to(c(0, 1, 2)))
  expect_that(dimvalues(new("Points")),
              is_identical_to(numeric()))
})

test_that("e1IsFirstDimScale works", {
    e1IsFirstDimScale <- dembase:::e1IsFirstDimScale
    e1 <- new("Points", dimvalues = c(0, 5, 10))
    e2 <- new("Points", dimvalues = c(15, 20))
    expect_true(e1IsFirstDimScale(e1 = e1, e2 = e2))
    e1 <- new("Points", dimvalues = numeric())
    e2 <- new("Points", dimvalues = numeric())
    expect_true(e1IsFirstDimScale(e1 = e1, e2 = e2))
    e1 <- new("Points", dimvalues = c(10, 15))
    e2 <- new("Points", dimvalues = c(0, 5))
    expect_false(e1IsFirstDimScale(e1 = e1, e2 = e2))
    e1 <- new("Points", dimvalues = c(10, 15))
    e2 <- new("Points", dimvalues = c(0, 5, 11))
    expect_true(e1IsFirstDimScale(e1 = e1, e2 = e2))
})

test_that("labels method for DimScales works when used on Points", {
  expect_that(labels(new("Points", dimvalues = c(1, 2))),
              is_identical_to(c("1", "2")))
  expect_that(labels(new("Points")),
              is_identical_to(character()))
})

test_that("stepLengths method for Points works", {
  stepLengths <- dembase:::stepLengths
  expect_that(stepLengths(new("Points", dimvalues = c(1, 2, 4))),
              is_identical_to(c(1, 2)))
})

test_that("incrementDimScale method for Points works", {
    incrementDimScale <- dembase:::incrementDimScale
    x <- new("Points", dimvalues = 2001:2010)
    ans.obtained <- incrementDimScale(x, n = 10)
    ans.expected <- new("Points", dimvalues = 2011:2020)
    expect_identical(ans.obtained, ans.expected)
    x <- new("Points", dimvalues = 2001:2010)
    ans.obtained <- incrementDimScale(x, n = -5)
    ans.expected <- new("Points", dimvalues = 1996:2000)
    expect_identical(ans.obtained, ans.expected)
    x <- new("Points", dimvalues = c(0, 5))
    ans.obtained <- incrementDimScale(x, n = 1)
    ans.expected <- new("Points", dimvalues = 10)
    expect_identical(ans.obtained, ans.expected)
    x <- new("Points", dimvalues = numeric())
    expect_error(incrementDimScale(x, n = 5),
                 "\"along\" dimension has length 0")
    x <- new("Points", dimvalues = c(0, 5, 11))
    expect_error(incrementDimScale(x, n = 5),
                 "points on \"along\" dimension not regularly spaced")
})

test_that("inferDimvalues method for Points works", {
  inferDimvalues <- dembase:::inferDimvalues
  expect_that(inferDimvalues(new("Points"), labels = c("1", "2")),
              is_identical_to(c(1, 2)))
  expect_that(inferDimvalues(new("Points"), labels = character()),
              is_identical_to(numeric()))
  expect_that(inferDimvalues(new("Points"), labels = NULL),
              is_identical_to(numeric()))
  expect_that(inferDimvalues(new("Points"), labels = c("2", "1")),
              is_identical_to(c(1, 2)))
  expect_that(inferDimvalues(new("Points"), labels = c("2", "1", "a")),
              is_identical_to(NULL))
})
StatisticsNZ/dembase documentation built on Dec. 25, 2021, 4:49 p.m.