tests/testthat/test-kernels.R

# Tests for kernel functions

test_that("kernel_bartlett produces correct values", {
  # At x = 0, should be 1
  expect_equal(kernel_bartlett(0), 1)

  # At x = 1, should be 0
  expect_equal(kernel_bartlett(1), 0)

  # At x = 0.5, should be 0.5
  expect_equal(kernel_bartlett(0.5), 0.5)

  # Symmetric in absolute value
  expect_equal(kernel_bartlett(-0.5), kernel_bartlett(0.5))

  # Outside [-1, 1], should be 0
  expect_equal(kernel_bartlett(2), 0)
  expect_equal(kernel_bartlett(-1.5), 0)
})

test_that("kernel_parzen produces correct values", {
  # At x = 0, should be 1
  expect_equal(kernel_parzen(0), 1)

  # At x = 1, should be 0
  expect_equal(kernel_parzen(1), 0)

  # Symmetric in absolute value
  expect_equal(kernel_parzen(-0.3), kernel_parzen(0.3))

  # Non-negative
  x <- seq(0, 1, by = 0.1)
  expect_true(all(kernel_parzen(x) >= 0))
})

test_that("kernel_qs produces correct values", {
  # At x = 0, should be 1
  expect_equal(kernel_qs(0), 1)

  # Symmetric in absolute value
  expect_equal(kernel_qs(-0.5), kernel_qs(0.5))

  # QS kernel can be negative for some values
  # But should be bounded
  x <- seq(0, 5, by = 0.1)
  vals <- kernel_qs(x)
  expect_true(all(abs(vals) <= 1.1))  # Allow small tolerance
})

test_that("get_kernel_function returns correct function", {
  expect_identical(get_kernel_function("bartlett"), kernel_bartlett)
  expect_identical(get_kernel_function("parzen"), kernel_parzen)
  expect_identical(get_kernel_function("qs"), kernel_qs)

  # Case insensitive
  expect_identical(get_kernel_function("BARTLETT"), kernel_bartlett)

  # Invalid kernel

  expect_error(get_kernel_function("invalid"), "Unknown kernel")
})

test_that("get_kernel_exponent returns correct values", {
  expect_equal(get_kernel_exponent("bartlett"), 1)
  expect_equal(get_kernel_exponent("parzen"), 2)
  expect_equal(get_kernel_exponent("qs"), 2)
})

test_that("get_kernel_constant returns correct values", {
  # Andrews (1991) rate constants
  expect_equal(get_kernel_constant("bartlett"), 1.1447)
  expect_equal(get_kernel_constant("parzen"), 2.6614)
  expect_equal(get_kernel_constant("qs"), 1.3221)
})

Try the rbfmvar package in your browser

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

rbfmvar documentation built on April 9, 2026, 9:08 a.m.