Nothing
test_that("mixed units work", {
m = c(set_units(1:3, km), set_units(4:6, g), allow_mixed = TRUE)
# select a subset
expect_s3_class(m[3:4], "mixed_units")
expect_s3_class(m[3], "mixed_units")
# select a single units object:
expect_s3_class(m[[3]], "units")
m <- set_units(m, c(rep(c("m", "kg"), each = 3)))
expect_s3_class(m, "mixed_units")
units(m) = rep(c("mm", "mg"), each = 3)
expect_s3_class(m, "mixed_units")
# does the value get recycled?
expect_s3_class(set_units(m[1:3], "m"), "mixed_units")
# convert to units:
expect_s3_class(as_units( m[1:3] ), "units")
# round-trip via units:
m0 <- mixed_units(as_units(m[1:3]))
expect_identical(m[1:3], m0)
# Ops using by single unit: needs to be explicitly coerced to mixed_units:
expect_s3_class(m[1:3] * mixed_units(set_units(1, mm)), "mixed_units")
expect_s3_class(m[1:3] / mixed_units(set_units(1, mm)), "mixed_units")
expect_s3_class(m[1:3] + mixed_units(set_units(1, mm)), "mixed_units")
expect_s3_class(m[1:3] - mixed_units(set_units(1, mm)), "mixed_units")
expect_type(m[1:3] == mixed_units(set_units(1, mm)), "logical")
expect_type(m[1:3] != mixed_units(set_units(1, mm)), "logical")
expect_error(m[1:3] ^ mixed_units(set_units(1, mm)))
# FIXME: Ops.mixed_units and Ops.units must be the same method
# to avoid the warning and the error.
# We can discriminate by switchpatching.
expect_error(expect_warning(m[1:3] * set_units(1, mm)))
expect_s3_class(units(m), "mixed_symbolic_units")
expect_type(format(m), "character")
expect_type(as.character(units(m)), "character")
expect_equal(drop_units(m), sapply(m, as.numeric))
units_options(allow_mixed = TRUE)
m = c(set_units(1:3, km), set_units(4:6, g))
expect_s3_class(m, "mixed_units")
expect_equal(m, mixed_units(1:6, c(rep("km", 3), rep("g", 3))))
units_options(allow_mixed = FALSE)
})
test_that("order is preserved", {
x <- 1:10
u <- rep(c("m", "l"), 5)
m <- mixed_units(x, u)
m <- set_units(m, paste0("k", u), mode = "standard")
expect_equal(as.numeric(m), x / 1000)
})
test_that("unique.mixed_units works", {
x <- c(set_units(c(1, 1, 2), kg), set_units(c(4, 4, 5), s), allow_mixed = TRUE)
expect_equal(unique(x), c(set_units(c(1, 2), kg), set_units(c(4, 5), s), allow_mixed = TRUE))
y <- c(set_units(c(1, 1, 1), m/s), set_units(c(1, 1, 1), kg/s), allow_mixed = TRUE)
expect_equal(unique(y), c(set_units(1, m/s), set_units(1, kg/s), allow_mixed = TRUE))
z <- c(set_units(c(1, 2), kg), set_units(c(3, 4), s), set_units(c(2, 3), kg), allow_mixed = TRUE)
expect_equal(unique(z), c(set_units(c(1, 2), kg), set_units(c(3, 4), s), set_units(3, kg), allow_mixed = TRUE))
})
test_that("as.data.frame.mixed_units works", {
x <- 1:3
x_units <- set_units(x, "m")
x_mixed <- mixed_units(x_units)
df1 <- data.frame(x)
df1$x_units <- x_units
df1$x_mixed <- x_mixed
df2 <- data.frame(x, x_units, x_mixed)
expect_equal(df1, df2)
})
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.