Nothing
library(rearrr)
context("Pipeline")
# TODO I have only tested a few very narrow use cases
# I should find some cases and build out some more examples
# Test print methods
test_that("testing printing Pipeline", {
xpectr::set_test_seed(42)
pipe <- Pipeline$new()
pipe$add_transformation(
fn = rotate_2d,
args = list(
x_col = "Index",
y_col = "A",
origin = c(0, 0),
degrees = 45,
suffix = "",
overwrite = TRUE
),
name = "rotate",
group_cols = "G"
)
pipe$add_transformation(
fn = cluster_groups,
args = list(
cols = c("Index", "A"),
suffix = "",
overwrite = TRUE,
multiplier = 0.05,
scale_min_fn = function(x){ # For testing shortening in print()
min(x)+min(x)^2
}
),
name = "cluster"
)
## Testing 'testthat::capture_output(print(pipe))' ####
## Initially generated by xpectr
xpectr::set_test_seed(42)
# Assigning output
output_11346 <- testthat::capture_output(print(pipe))
# Testing class
expect_equal(
class(output_11346),
"character",
fixed = TRUE)
# Testing type
expect_type(
output_11346,
type = "character")
# Testing values
expect_equal(
output_11346,
paste0("Pipeline: \n rotate\n Arguments: x_col=\"Index\", y_co",
"l=\"A\", origin=c(0, 0), degrees=45, suffix=\"\", overwrite=",
"TRUE\n Grouping columns: \"G\"\n cluster\n Arguments",
": cols=c(\"Index\", \"A\"), suffix=\"\", overwrite=TRUE, mu",
"ltiplier=0.05, scale_min_fn=function(x){min(x) +..."),
fixed = TRUE)
# Testing names
expect_equal(
names(output_11346),
NULL,
fixed = TRUE)
# Testing length
expect_equal(
length(output_11346),
1L)
# Testing sum of element lengths
expect_equal(
sum(xpectr::element_lengths(output_11346)),
1L)
## Finished testing 'testthat::capture_output(print(pipe))' ####
})
test_that("testing printing FixedGroupsPipeline", {
xpectr::set_test_seed(42)
# Idea for example:
agp <- FixedGroupsPipeline$new(3)
agp$add_transformation(
fn = rotate_2d,
args = list(
x_col = "Index",
y_col = "A",
origin = c(0, 0),
suffix = "",
overwrite = TRUE
),
var_args = list(degrees = list(45, 90, 120),
.apply = list(TRUE, FALSE, FALSE)),
name = "rotate"
)
agp$add_transformation(
fn = cluster_groups,
args = list(
cols = c("Index", "A"),
suffix = "",
overwrite = TRUE,
scale_min_fn = function(x){ # For testing shortening in print()
min(x)+min(x)^2
}
),
var_args = list(multiplier = list(0.05, 0.1, 0.2)),
name = "cluster"
)
## Testing 'testthat::capture_output(print(agp))' ####
## Initially generated by xpectr
xpectr::set_test_seed(42)
# Assigning output
output_10429 <- testthat::capture_output(print(agp))
# Testing class
expect_equal(
class(output_10429),
"character",
fixed = TRUE)
# Testing type
expect_type(
output_10429,
type = "character")
# Testing values
expect_equal(
output_10429,
paste0("FixedGroupsPipeline: \n No. expected groups: 3\n rotate\n",
" Constant arguments: x_col=\"Index\", y_col=\"A\", origi",
"n=c(0, 0), suffix=\"\", overwrite=TRUE\n Varying argument",
"s: degrees=list(45, 90, 120)\n Don't apply to these gro",
"ups: 2, 3\n cluster\n Constant arguments: cols=c(\"Ind",
"ex\", \"A\"), suffix=\"\", overwrite=TRUE, scale_min_fn=func",
"tion(x){min(x) +...\n Varying arguments: multiplier=lis",
"t(0.05, 0.1, 0.2)"),
fixed = TRUE)
# Testing names
expect_equal(
names(output_10429),
NULL,
fixed = TRUE)
# Testing length
expect_equal(
length(output_10429),
1L)
# Testing sum of element lengths
expect_equal(
sum(xpectr::element_lengths(output_10429)),
1L)
## Finished testing 'testthat::capture_output(print(agp))' ####
})
test_that("testing printing GeneratedPipeline", {
xpectr::set_test_seed(42)
agp <- GeneratedPipeline$new()
agp$add_transformation(
fn = rotate_2d,
args = list(
x_col = "Index",
y_col = "A",
suffix = "",
overwrite = TRUE
),
generators = list(degrees = function(){sample.int(360, 1)},
origin = function(){rnorm(2)}),
name = "rotate"
)
agp$add_transformation(
fn = cluster_groups,
args = list(
cols = c("Index", "A"),
suffix = "",
overwrite = TRUE,
scale_min_fn = function(x){ # For testing shortening in print()
min(x)+min(x)^2
}
),
generators = list(
multiplier = function() {
runif(1) * 3 ^ sample.int(5, 1)
},
.apply=function(){sample(c(TRUE, FALSE), 1)}
),
name = "cluster",
group_cols = "G"
)
## Testing 'testthat::capture_output(print(agp))' ####
## Initially generated by xpectr
xpectr::set_test_seed(42)
# Assigning output
output_11364 <- testthat::capture_output(print(agp))
# Testing class
expect_equal(
class(output_11364),
"character",
fixed = TRUE)
# Testing type
expect_type(
output_11364,
type = "character")
# Testing values
expect_equal(
output_11364,
paste0("GeneratedPipeline: \n rotate\n Constant arguments: x_c",
"ol=\"Index\", y_col=\"A\", suffix=\"\", overwrite=TRUE\n ",
"Generators: degrees={sample.int(360, 1)}, origin={rnorm(2)}",
"\n cluster\n Constant arguments: cols=c(\"Index\", \"A",
"\"), suffix=\"\", overwrite=TRUE, scale_min_fn=function(x){mi",
"n(x) +...\n Generators: multiplier={runif(1) * 3^sample.",
"int(5, 1)}\n Apply generator: {sample(c(TRUE, FALSE), 1)",
"}\n Grouping columns: \"G\""),
fixed = TRUE)
# Testing names
expect_equal(
names(output_11364),
NULL,
fixed = TRUE)
# Testing length
expect_equal(
length(output_11364),
1L)
# Testing sum of element lengths
expect_equal(
sum(xpectr::element_lengths(output_11364)),
1L)
## Finished testing 'testthat::capture_output(print(agp))' ####
})
# Test applying the pipelines
test_that("testing Pipeline", {
xpectr::set_test_seed(42)
# Create a data frame
df <- data.frame(
"Index" = 1:12,
"A" = c(1:4, 9:12, 15:18),
"G" = rep(1:3, each = 4)
)
pipe <- Pipeline$new()
pipe$add_transformation(
fn = rotate_2d,
args = list(
x_col = "Index",
y_col = "A",
origin_fn = centroid,
degrees = 45,
suffix = "",
overwrite = TRUE
),
name = "rotate",
group_cols = "G"
)
pipe$add_transformation(
fn = cluster_groups,
args = list(
cols = c("Index", "A"),
group_cols = "G",
suffix = "",
overwrite = TRUE,
multiplier = 0.05
),
name = "cluster",
group_cols = NULL # cluster_groups need entire dataset as context
)
# Because groups were defined in the transformations
# The initial grouping is ignored
expect_equal(pipe$apply(df),
xpectr::suppress_mw(pipe$apply(dplyr::group_by(df, G))))
## Testing 'pipe$apply(df)' ####
## Initially generated by xpectr
xpectr::set_test_seed(42)
# Assigning output
output_10374 <- pipe$apply(df)
# Testing class
expect_equal(
class(output_10374),
c("tbl_df", "tbl", "data.frame"),
fixed = TRUE)
# Testing column values
expect_equal(
output_10374[["Index"]],
c(2.5, 2.5, 2.5, 2.5, 6.5, 6.5, 6.5, 6.5, 10.5, 10.5, 10.5, 10.5),
tolerance = 1e-4)
expect_equal(
output_10374[["A"]],
c(0.76759, 0.85448, 0.94138, 1.02827, 10.59853, 10.68542, 10.77231,
10.85921, 17.97173, 18.05862, 18.14552, 18.23241),
tolerance = 1e-4)
expect_equal(
output_10374[["G"]],
c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3),
tolerance = 1e-4)
expect_equal(
output_10374[[".degrees"]],
c(45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45),
tolerance = 1e-4)
# Testing column names
expect_equal(
names(output_10374),
c("Index", "A", "G", ".origin", ".degrees"),
fixed = TRUE)
# Testing column classes
expect_equal(
xpectr::element_classes(output_10374),
c("numeric", "numeric", "integer", "list", "numeric"),
fixed = TRUE)
# Testing column types
expect_equal(
xpectr::element_types(output_10374),
c("double", "double", "integer", "list", "double"),
fixed = TRUE)
# Testing dimensions
expect_equal(
dim(output_10374),
c(12L, 5L))
# Testing group keys
expect_equal(
colnames(dplyr::group_keys(output_10374)),
character(0),
fixed = TRUE)
## Finished testing 'pipe$apply(df)' ####
# Manually applying transformations
step_1 <- rotate_2d(
data = dplyr::group_by(df, G),
x_col = "Index",
y_col = "A",
origin_fn = centroid,
degrees = 45,
suffix = "",
overwrite = TRUE
)
expect_true(!dplyr::is_grouped_df(step_1))
step_2 <- cluster_groups(
data = step_1,
cols = c("Index", "A"),
group_cols = "G",
suffix = "",
overwrite = TRUE,
multiplier = 0.05
)
expect_equal(step_2, pipe$apply(df))
## Not grouped
pipe <- Pipeline$new()
pipe$add_transformation(
fn = rotate_2d,
args = list(
x_col = "Index",
y_col = "A",
origin_fn = centroid,
degrees = 45,
suffix = "",
overwrite = TRUE
),
name = "rotate"
)
pipe$add_transformation(
fn = cluster_groups,
args = list(
cols = c("Index", "A"),
group_cols = "G",
suffix = "",
overwrite = TRUE,
multiplier = 0.05
),
name = "cluster"
)
## Testing 'pipe$apply(dplyr::group_by(df, G))' ####
## Initially generated by xpectr
xpectr::set_test_seed(42)
# Testing side effects
# Assigning side effects
side_effects_11387 <- xpectr::capture_side_effects(pipe$apply(dplyr::group_by(df, G)), reset_seed = TRUE)
expect_equal(
xpectr::strip(side_effects_11387[['warnings']]),
xpectr::strip("Ignoring groups in `data`. Only the `group_cols` grouping specifications are used."),
fixed = TRUE)
expect_equal(
xpectr::strip(side_effects_11387[['messages']]),
xpectr::strip(character(0)),
fixed = TRUE)
step_1 <- rotate_2d(
data = df,
x_col = "Index",
y_col = "A",
origin_fn = centroid,
degrees = 45,
suffix = "",
overwrite = TRUE
)
step_2 <- cluster_groups(
data = step_1,
cols = c("Index", "A"),
group_cols = "G",
suffix = "",
overwrite = TRUE,
multiplier = 0.05
)
expect_equal(step_2, pipe$apply(df))
})
test_that("testing FixedGroupsPipeline()", {
xpectr::set_test_seed(42)
# Create a data frame
df <- data.frame(
"Index" = 1:12,
"A" = c(1:4, 9:12, 15:18),
"G" = rep(1:3, each = 4)
)
agp <- FixedGroupsPipeline$new(3)
agp$add_transformation(
fn = rotate_2d,
args = list(
x_col = "Index",
y_col = "A",
origin = c(0, 0),
suffix = "",
overwrite = TRUE
),
var_args = list(degrees = list(45, 90, 120),
.apply = list(TRUE, FALSE, FALSE)),
name = "rotate"
)
agp$add_transformation(
fn = cluster_groups,
args = list(
cols = c("Index", "A"),
group_cols = "G", # Required as called separately per group with ungrouped subset
suffix = "",
overwrite = TRUE
),
var_args = list(multiplier = list(0.05, 0.1, 0.2)),
name = "cluster"
)
## Testing 'agp$apply(df)' ####
## Initially generated by xpectr
xpectr::set_test_seed(42)
# Testing side effects
# Assigning side effects
side_effects_11346 <- xpectr::capture_side_effects(agp$apply(df), reset_seed = TRUE)
expect_equal(
xpectr::strip(side_effects_11346[['error']]),
xpectr::strip("`data` did not have exactly 3 groups as expected."),
fixed = TRUE)
expect_equal(
xpectr::strip(side_effects_11346[['error_class']]),
xpectr::strip(c("simpleError", "error", "condition")),
fixed = TRUE)
## Finished testing 'agp$apply(df)' ####
# Note that we don't apply rotation to 2 and 3
## Testing 'agp$apply(dplyr::group_by(df, G))' ####
## Initially generated by xpectr
xpectr::set_test_seed(42)
# Assigning output
output_11387 <- agp$apply(dplyr::group_by(df, G))
# Testing class
expect_equal(
class(output_11387),
c("grouped_df", "tbl_df", "tbl", "data.frame"),
fixed = TRUE)
# Testing column values
expect_equal(
output_11387[["Index"]],
c(0, 0, 0, 0, 5.075, 6.025, 6.975, 7.925, 9.075, 10.025, 10.975,
11.925),
tolerance = 1e-4)
expect_equal(
output_11387[["A"]],
c(1.52028, 2.86378, 4.20729, 5.55079, 9.075, 10.025, 10.975, 11.925,
15.075, 16.025, 16.975, 17.925),
tolerance = 1e-4)
expect_equal(
output_11387[["G"]],
c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3),
tolerance = 1e-4)
expect_equal(
output_11387[[".degrees"]],
c(45, 45, 45, 45, NA, NA, NA, NA, NA, NA, NA, NA),
tolerance = 1e-4)
# Testing column names
expect_equal(
names(output_11387),
c("Index", "A", "G", ".origin", ".degrees"),
fixed = TRUE)
# Testing column classes
expect_equal(
xpectr::element_classes(output_11387),
c("numeric", "numeric", "integer", "list", "numeric"),
fixed = TRUE)
# Testing column types
expect_equal(
xpectr::element_types(output_11387),
c("double", "double", "integer", "list", "double"),
fixed = TRUE)
# Testing dimensions
expect_equal(
dim(output_11387),
c(12L, 5L))
# Testing group keys
expect_equal(
colnames(dplyr::group_keys(output_11387)),
"G",
fixed = TRUE)
## Finished testing 'agp$apply(dplyr::group_by(df, G))' ####
})
test_that("testing GeneratedPipeline()", {
xpectr::set_test_seed(42)
# Create a data frame
df <- data.frame(
"Index" = 1:12,
"A" = c(1:4, 9:12, 15:18),
"G" = rep(1:3, each = 4)
)
agp <- GeneratedPipeline$new()
agp$add_transformation(
fn = rotate_2d,
args = list(
x_col = "Index",
y_col = "A",
suffix = "",
overwrite = TRUE
),
generators = list(degrees = function(){sample.int(360, 1)},
origin = function(){rnorm(2)}),
name = "rotate",
group_cols = "G"
)
agp$add_transformation(
fn = cluster_groups,
args = list(
cols = c("Index", "A"),
suffix = "",
overwrite = TRUE,
scale_min_fn = function(x){ # For testing shortening in print()
min(x)+min(x)^2
},
group_cols = "G"
),
generators = list(
multiplier = function() {
runif(1) * 3 ^ sample.int(5, 1)
},
.apply=function(){sample(c(TRUE, FALSE), 1)}
),
name = "cluster",
group_cols = "G"
)
## Testing 'agp$apply(df)' ####
## Initially generated by xpectr
xpectr::set_test_seed(42)
# Assigning output
output_16399 <- agp$apply(df)
# Testing class
expect_equal(
class(output_16399),
c("grouped_df", "tbl_df", "tbl", "data.frame"),
fixed = TRUE)
# Testing column values
expect_equal(
output_16399[["G"]],
c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3),
tolerance = 1e-4)
expect_equal(
output_16399[["Index"]],
c(1.09313, 2.45915, 3.82518, 5.19121, -2.65417, -3.52484, -4.39552,
-5.2662, -11.69701, 64.92873, 141.55447, 218.1802),
tolerance = 1e-4)
expect_equal(
output_16399[["A"]],
c(1.25944, 1.62546, 1.99149, 2.35751, -8.65961, -9.77403, -10.88844,
-12.00286, -13.65532, 68.06585, 149.78703, 231.5082),
tolerance = 1e-4)
expect_equal(
output_16399[[".degrees"]],
c(330, 330, 330, 330, 187, 187, 187, 187, 165, 165, 165, 165),
tolerance = 1e-4)
expect_equal(
unlist(output_16399$.origin),
c(Index = 1.53068, A = 0.95594, Index = 1.53068, A = 0.95594, Index = 1.53068,
A = 0.95594, Index = 1.53068, A = 0.95594, Index = 0.63286,
A = 0.40427, Index = 0.63286, A = 0.40427, Index = 0.63286,
A = 0.40427, Index = 0.63286, A = 0.40427, Index = 0.58021,
A = -0.6575, Index = 0.58021, A = -0.6575, Index = 0.58021,
A = -0.6575, Index = 0.58021, A = -0.6575),
tolerance = 1e-4)
# Testing column names
expect_equal(
names(output_16399),
c("G", "Index", "A", ".origin", ".degrees"),
fixed = TRUE)
# Testing column classes
expect_equal(
xpectr::element_classes(output_16399),
c("integer", "numeric", "numeric", "list", "integer"),
fixed = TRUE)
# Testing column types
expect_equal(
xpectr::element_types(output_16399),
c("integer", "double", "double", "list", "integer"),
fixed = TRUE)
# Testing dimensions
expect_equal(
dim(output_16399),
c(12L, 5L))
# Testing group keys
expect_equal(
colnames(dplyr::group_keys(output_16399)),
"G",
fixed = TRUE)
## Finished testing 'agp$apply(df)' ####
})
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.