Nothing
# Tests for the interval R6 class
test_that("interval constructor creates valid object with defaults", {
# Given: Default constructor call
# When: Creating an interval
i <- interval$new()
# Then: Object represents the entire real line
expect_s3_class(i, "interval")
expect_equal(i$lower, -Inf)
expect_equal(i$upper, Inf)
expect_false(i$lower_closed)
expect_false(i$upper_closed)
})
test_that("interval constructor creates bounded interval", {
# Given: Specific bounds
i <- interval$new(lower = 0, upper = 10, lower_closed = TRUE, upper_closed = FALSE)
# Then: Bounds are set correctly
expect_equal(i$lower, 0)
expect_equal(i$upper, 10)
expect_true(i$lower_closed)
expect_false(i$upper_closed)
})
test_that("interval constructor handles vector bounds for multivariate", {
# Given: Vector bounds (for multivariate support)
lower <- c(0, -1, -Inf)
upper <- c(10, 1, Inf)
i <- interval$new(lower = lower, upper = upper)
expect_equal(i$lower, lower)
expect_equal(i$upper, upper)
expect_equal(i$dim(), 3)
})
test_that("interval constructor replicates bounds to match lengths", {
# Given: Mismatched length bounds
i <- interval$new(lower = c(0, 0), upper = 10)
# Then: upper should be replicated
expect_equal(i$lower, c(0, 0))
expect_equal(i$upper, c(10, 10))
})
test_that("interval constructor replicates closed flags", {
i <- interval$new(lower = c(0, 0), upper = c(1, 1),
lower_closed = TRUE, upper_closed = FALSE)
expect_equal(i$lower_closed, c(TRUE, TRUE))
expect_equal(i$upper_closed, c(FALSE, FALSE))
})
test_that("interval$has correctly checks membership for closed interval", {
# [0, 10]
i <- interval$new(lower = 0, upper = 10, lower_closed = TRUE, upper_closed = TRUE)
expect_true(i$has(0))
expect_true(i$has(5))
expect_true(i$has(10))
expect_false(i$has(-1))
expect_false(i$has(11))
})
test_that("interval$has correctly checks membership for open interval", {
# (0, 10)
i <- interval$new(lower = 0, upper = 10, lower_closed = FALSE, upper_closed = FALSE)
expect_false(i$has(0))
expect_true(i$has(5))
expect_false(i$has(10))
expect_true(i$has(0.001))
expect_true(i$has(9.999))
})
test_that("interval$has correctly checks membership for half-open interval", {
# [0, 10)
i <- interval$new(lower = 0, upper = 10, lower_closed = TRUE, upper_closed = FALSE)
expect_true(i$has(0))
expect_true(i$has(5))
expect_false(i$has(10))
})
test_that("interval$has handles infinite bounds correctly", {
# (-Inf, Inf) - the real line
i <- interval$new()
expect_true(i$has(0))
expect_true(i$has(-1e100))
expect_true(i$has(1e100))
})
test_that("interval$has handles vector input for multivariate", {
i <- interval$new(lower = c(0, 0), upper = c(1, 1),
lower_closed = TRUE, upper_closed = TRUE)
expect_true(all(i$has(c(0.5, 0.5))))
expect_true(all(i$has(c(0, 0))))
expect_true(all(i$has(c(1, 1))))
expect_false(all(i$has(c(0.5, 2))))
})
test_that("interval$infimum returns lower bound", {
i <- interval$new(lower = 5, upper = 10)
expect_equal(i$infimum(), 5)
})
test_that("interval$infimum returns vector for multivariate", {
i <- interval$new(lower = c(1, 2, 3), upper = c(4, 5, 6))
expect_equal(i$infimum(), c(1, 2, 3))
})
test_that("interval$supremum returns upper bound", {
i <- interval$new(lower = 5, upper = 10)
expect_equal(i$supremum(), 10)
})
test_that("interval$supremum returns vector for multivariate", {
i <- interval$new(lower = c(1, 2, 3), upper = c(4, 5, 6))
expect_equal(i$supremum(), c(4, 5, 6))
})
test_that("interval$dim returns 1 for univariate", {
i <- interval$new(lower = 0, upper = 1)
expect_equal(i$dim(), 1)
})
test_that("interval$dim returns correct dimension for multivariate", {
i <- interval$new(lower = rep(0, 5), upper = rep(1, 5))
expect_equal(i$dim(), 5)
})
test_that("interval$is_empty detects empty intervals", {
# Empty: lower > upper
i1 <- interval$new(lower = 10, upper = 5)
expect_true(i1$is_empty())
# Empty: same bound but not both closed
i2 <- interval$new(lower = 5, upper = 5, lower_closed = TRUE, upper_closed = FALSE)
expect_true(i2$is_empty())
# Not empty: same bound and both closed (single point)
i3 <- interval$new(lower = 5, upper = 5, lower_closed = TRUE, upper_closed = TRUE)
expect_false(i3$is_empty())
})
test_that("has.interval S3 wrapper works correctly", {
i <- interval$new(lower = 0, upper = 1, lower_closed = TRUE, upper_closed = TRUE)
expect_true(has(i, 0.5))
expect_false(has(i, 2))
})
test_that("infimum.interval S3 wrapper works correctly", {
i <- interval$new(lower = 3, upper = 7)
expect_equal(infimum(i), 3)
})
test_that("supremum.interval S3 wrapper works correctly", {
i <- interval$new(lower = 3, upper = 7)
expect_equal(supremum(i), 7)
})
test_that("dim.interval S3 wrapper works correctly", {
i <- interval$new(lower = c(0, 0), upper = c(1, 1))
expect_equal(dim(i), 2)
})
test_that("print.interval produces output without error", {
i <- interval$new(lower = 0, upper = 1, lower_closed = TRUE, upper_closed = FALSE)
expect_output(print(i), "\\[0, 1\\)")
})
test_that("print.interval shows correct brackets for different closedness", {
# Open interval
i1 <- interval$new(lower = 0, upper = 1, lower_closed = FALSE, upper_closed = FALSE)
expect_output(print(i1), "\\(0, 1\\)")
# Closed interval
i2 <- interval$new(lower = 0, upper = 1, lower_closed = TRUE, upper_closed = TRUE)
expect_output(print(i2), "\\[0, 1\\]")
})
test_that("interval handles semi-infinite intervals", {
# [0, Inf)
i1 <- interval$new(lower = 0, upper = Inf, lower_closed = TRUE, upper_closed = FALSE)
expect_true(i1$has(0))
expect_true(i1$has(1e100))
expect_false(i1$has(-1))
# (-Inf, 0]
i2 <- interval$new(lower = -Inf, upper = 0, lower_closed = FALSE, upper_closed = TRUE)
expect_true(i2$has(0))
expect_true(i2$has(-1e100))
expect_false(i2$has(1))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.