library(xpectr)
context("smpl()")
test_that("smpl() samples correctly", {
# Vectors
vec_1 <- c(1,2,3,4,5)
expect_equal(smpl(vec_1, n = 3),
c(1, 4, 5))
expect_equal(smpl(c(1,2,3,4,5), n = 3),
c(1, 4, 5))
expect_equal(smpl(c(1,2,3,4,5), n = 3, seed = 3),
c(1, 2, 4))
expect_equal(smpl(as.character(vec_1), n = 3),
c("1", "4", "5"))
expect_equal(smpl(as.character(vec_1), n = 3, keep_order = FALSE),
c("5", "4", "1"))
# lists (are vectors)
## Testing 'smpl(list(1,2,4,2,1,4,6,1,3,3), n = 3)' ####
## Initially generated by xpectr
# Assigning output
output_18303 <- smpl(list(1,2,4,2,1,4,6,1,3,3), n = 3)
# Testing class
expect_equal(
class(output_18303),
"list",
fixed = TRUE)
# Testing type
expect_type(
output_18303,
type = "list")
# Testing values
expect_equal(
output_18303,
list(4, 3, 3))
# Testing names
expect_equal(
names(output_18303),
NULL,
fixed = TRUE)
# Testing length
expect_equal(
length(output_18303),
3L)
# Testing sum of element lengths
expect_equal(
sum(xpectr::element_lengths(output_18303)),
3L)
## Finished testing 'smpl(list(1,2,4,2,1,4,6,1,3,3), n = 3)' ####
# Factors
fac_1 <- factor(c(1,2,1,2,3,1,5,7))
fac_2 <- factor(as.character(c(1,2,1,2,3,1,5,7)))
fac_3 <- factor(c("a", "b", "c", "d", "e", "f"))
expect_equal(smpl(fac_1, n = 3),
structure(c(2L, 4L, 5L), levels = c("1", "2", "3", "5", "7"), class = "factor"))
expect_equal(smpl(fac_2, n = 3),
structure(c(2L, 4L, 5L), levels = c("1", "2", "3", "5", "7"), class = "factor"))
expect_equal(smpl(fac_2, n = 3, seed = 3),
structure(c(2L, 1L, 1L), levels = c("1", "2", "3", "5", "7"), class = "factor"))
expect_equal(smpl(fac_3, n = 3, seed = 7),
structure(c(1L, 2L, 6L), levels = c("a", "b", "c", "d", "e", "f"), class = "factor"))
# Data Frames
set_test_seed(1)
df_1 <- data.frame("a" = runif(10), "b" = runif(10))
set_test_seed(1)
df_2 <- tibble::tibble("a" = runif(10), "b" = runif(10))
expect_equal(smpl(df_1, n = 3),
structure(list(a = c(0.572853363351896, 0.62911404389888, 0.0617862704675645
), b = c(0.687022846657783, 0.380035179434344, 0.777445221319795)),
row.names = c(3L, 9L, 10L), class = "data.frame"), tolerance = 1e-7)
expect_equal(as.data.frame(smpl(df_2, n = 3)),
structure(list(a = c(0.572853363351896, 0.62911404389888, 0.0617862704675645
), b = c(0.687022846657783, 0.380035179434344, 0.777445221319795)),
row.names = c(NA,-3L), class = "data.frame"), tolerance = 1e-7)
expect_equal(as.data.frame(smpl(df_2, n = 3, seed = 7)),
structure(list(a = c(0.2655086631421, 0.908207789994776, 0.0617862704675645
), b = c(0.205974574899301, 0.384103718213737, 0.777445221319795
)), row.names = c(NA,-3L), class = "data.frame"),
tolerance = 1e-7)
# Data Frames
set_test_seed(1)
dt_1 <- data.table::data.table("a" = runif(10), "b" = runif(10))
set_test_seed(1)
dt_2 <- data.table::data.table("a" = runif(10), "b" = runif(10))
expect_equal(as.data.frame(smpl(dt_1, n = 3)),
structure(list(a = c(0.572853363351896, 0.62911404389888, 0.0617862704675645
), b = c(0.687022846657783, 0.380035179434344, 0.777445221319795)),
row.names = c(NA,-3L), class = "data.frame"), tolerance = 1e-7)
expect_equal(as.data.frame(smpl(dt_2, n = 3)),
structure(list(a = c(0.572853363351896, 0.62911404389888, 0.0617862704675645
), b = c(0.687022846657783, 0.380035179434344, 0.777445221319795)),
row.names = c(NA,-3L), class = "data.frame"), tolerance = 1e-7)
expect_equal(as.data.frame(smpl(dt_2, n = 3, seed = 7)),
structure(list(a = c(0.2655086631421, 0.908207789994776, 0.0617862704675645
), b = c(0.205974574899301, 0.384103718213737, 0.777445221319795
)), row.names = c(NA,-3L), class = "data.frame"),
tolerance = 1e-7)
smpled_df_2 <- smpl(df_2, n = 3, seed = 7)
smpled_dt_2 <- smpl(dt_2, n = 3, seed = 7)
## Testing 'smpled_df_2' ####
## Initially generated by xpectr
# Testing class
expect_equal(
class(smpled_df_2),
c("tbl_df", "tbl", "data.frame"),
fixed = TRUE)
# Testing column values
expect_equal(
smpled_df_2[["a"]],
c(0.26551, 0.90821, 0.06179),
tolerance = 1e-4)
expect_equal(
smpled_df_2[["b"]],
c(0.20597, 0.3841, 0.77745),
tolerance = 1e-4)
# Testing column names
expect_equal(
names(smpled_df_2),
c("a", "b"),
fixed = TRUE)
# Testing column classes
expect_equal(
xpectr::element_classes(smpled_df_2),
c("numeric", "numeric"),
fixed = TRUE)
# Testing column types
expect_equal(
xpectr::element_types(smpled_df_2),
c("double", "double"),
fixed = TRUE)
# Testing dimensions
expect_equal(
dim(smpled_df_2),
3:2)
# Testing group keys
expect_equal(
colnames(dplyr::group_keys(smpled_df_2)),
character(0),
fixed = TRUE)
## Finished testing 'smpled_df_2' ####
## Testing 'smpled_dt_2' ####
## Initially generated by xpectr
xpectr::set_test_seed(42)
# Testing class
expect_equal(
class(smpled_dt_2),
c("data.table", "data.frame"),
fixed = TRUE)
# Testing column values
expect_equal(
smpled_dt_2[["a"]],
c(0.26551, 0.90821, 0.06179),
tolerance = 1e-4)
expect_equal(
smpled_dt_2[["b"]],
c(0.20597, 0.3841, 0.77745),
tolerance = 1e-4)
# Testing column names
expect_equal(
names(smpled_dt_2),
c("a", "b"),
fixed = TRUE)
# Testing column classes
expect_equal(
xpectr::element_classes(smpled_dt_2),
c("numeric", "numeric"),
fixed = TRUE)
# Testing column types
expect_equal(
xpectr::element_types(smpled_dt_2),
c("double", "double"),
fixed = TRUE)
# Testing dimensions
expect_equal(
dim(smpled_dt_2),
3:2)
# Testing group keys
expect_equal(
colnames(dplyr::group_keys(smpled_dt_2)),
character(0),
fixed = TRUE)
## Finished testing 'smpled_dt_2' ####
# Other types
## Testing 'smpl(matrix(1,3,3), n = 3)' ####
## Initially generated by xpectr
# Testing side effects
expect_error(
xpectr::strip_msg(smpl(matrix(1,3,3), n = 3)),
xpectr::strip("Only vectors, factors and data frames are currently supported."),
fixed = TRUE)
## Finished testing 'smpl(matrix(1,3,3), n = 3)' ####
})
test_that("smpl() restores random state correctly", {
# Vectors
vec_1 <- c(1,2,3,4,5)
set_test_seed(98)
current_random_state <- head(.Random.seed, 10)
expect_equal(smpl(vec_1, 2), c(4, 5))
exist_random_state <- head(.Random.seed, 10)
expect_equal(current_random_state, exist_random_state)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.