Nothing
library(ggdiagram)
library(testthat)
test_that("add, subtract, multiply, divide, and exponentiate degrees, radians, and turns",
{
purrr::map(list(degree, radian, turn), \(.f) {
expect_equal(S7::prop(.f(.1), S7::S7_class(.f(0))@name), .1)
expect_equal(.f(.1) + .f(.1), .f(.2))
expect_equal(.f(.1) - .f(.1), .f(0))
expect_equal(.f(.1) * .1, .f(.01))
expect_equal(.f(.1) / 2, .f(.05))
expect_equal(.f(.1)^2, .f(.01))
})
})
test_that("ob_angle equality", {
expect_equal(c(degree(90)), c(ob_angle(degree = 90)))
expect_equal(c(radian(1)), c(ob_angle(radian = 1)))
expect_equal(c(turn(.1)), c(ob_angle(turn = .1)))
})
test_that("trig functions work with ob_angle", {
expect_equal(cos(turn(1)), cospi(2))
expect_equal(sin(turn(.25)), sinpi(.5))
expect_equal(tan(turn(.5)), tanpi(1))
})
test_that("equality with ob_angle", {
tidyr::crossing(tibble::tibble(
.f = list(degree, radian, turn, ob_angle),
ratio = c(360, 2 * pi, 1, 1)
),
.g = list(`>`, `<`, `<=`, `>=`, `==`, `!=`)) |>
dplyr::mutate(
t1 = .2,
t2 = .3,
a1 = purrr::map2(.f, t1, \(f, t) f(t)),
a2 = purrr::map2(.f, t2, \(f, t) f(t)),
n1 = ratio * t1,
n2 = ratio * t2,
ta = purrr::pmap_lgl(list(.g, a1, a2), \(g, aa1, aa2) g(aa1, aa2)),
tn = purrr::pmap_lgl(list(.g, n1, n2), \(g, aa1, aa2) g(aa1, aa2)),
test = ta == tn
) |>
dplyr::pull(test) |>
all() |>
expect_true()
})
test_that("trig angles", {
my_turn <- 1 / 8
purrr::map2(list(degree, radian, turn, ob_angle), c(360, 2 * pi, 1, 1), \(.f, ratio) {
expect_equal(sin(.f(ratio * my_turn)), sinpi(2 * my_turn))
expect_equal(cos(.f(ratio * my_turn)), cospi(2 * my_turn))
expect_equal(tan(.f(ratio * my_turn)), tanpi(2 * my_turn))
})
})
test_that("negative x: x@positive becomes positive", {
expect_equal(degree(-90)@positive@degree, degree(270)@degree)
expect_equal(degree(-90 - 360)@positive@degree, degree(270)@degree)
expect_equal(degree(-90 - 360 * 2)@positive@degree, degree(270)@degree)
})
test_that("positive x: x@positive stays positive", {
expect_equal(degree(90)@positive@degree, degree(90)@degree)
expect_equal(degree(90 + 360)@positive@degree, degree(90)@degree)
expect_equal(degree(90 + 360 * 2)@positive@degree, degree(90)@degree)
})
test_that("negative x: x@negative stays negative", {
expect_equal(degree(-90)@negative@degree, degree(-90)@degree)
expect_equal(degree(-90 - 360)@negative@degree, degree(-90)@degree)
expect_equal(degree(-90 - 360 * 2)@negative@degree, degree(-90)@degree)
})
test_that("positive x: x@negative becomes negative", {
expect_equal(degree(90)@negative@degree, degree(-270)@degree)
expect_equal(degree(90 + 360)@negative@degree, degree(-270)@degree)
expect_equal(degree(90 + 360 * 2)@negative@degree, degree(-270)@degree)
})
test_that("misc angle", {
expect_equal(degree("north")@degree, radian("north")@degree)
expect_equal(degree("north")@degree, turn("north")@degree)
expect_equal(degree("north")@degree, turn(turn(.25))@degree)
expect_identical(unbind(degree(1:2)), list(degree(1), degree(2)))
expect_identical(degree(1:2)[1], degree(1))
expect_identical(as.character(degree(2)), "2°")
expect_identical(as.character(degree(0), digits = 2), "0°")
expect_identical(as.character(degree(c(1,2))), c("1°", "2°"))
expect_identical(as.character(degree(-2), digits = 2), "−2°")
expect_identical(as.character(degree(2.45), digits = 2), "2.45°")
expect_identical(as.character(radian(2)), "0.64π")
expect_identical(as.character(radian(0)), "0π")
expect_identical(as.character(radian(pi)), "π")
expect_identical(as.character(radian(-pi)), "−π")
expect_identical(as.character(radian(2 * pi)), "0π")
expect_identical(as.character(radian(-2 * pi)), "0π")
expect_identical(as.character(radian(-.1 * pi)), "−0.1π")
expect_identical(as.character(turn(.5)), ".50")
expect_identical(as.character(turn(0)), "0")
expect_identical(as.character(turn(1)), "0")
expect_identical(as.character(turn(-.5)), "−.50")
a <- degree(0)
a@degree <- 20
expect_identical(a@degree, 20)
a@radian <- pi
expect_identical(a@radian, pi)
a@turn <- 0.5
expect_identical(a@turn, 0.5)
expect_no_error(capture.output(print(a), file = nullfile()))
})
test_that(
"selection and assignment with angles", {
x <- degree(1:20)
expect_identical(x[1:10], degree(1:10))
x[2] <- degree(100)
expect_identical(x, degree(c(1,100, 3:20)))
}
)
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.