context("SMG.Mean.R")
#==========================================================
described.class <- SMG.Mean
context(" initialize")
#==========================================================
test_that("it should be able to initialize an objest with the correct attributes ", {
colnames <- c('x1')
subject <- described.class$new(colnames.to.mean = colnames)
expect_that(subject,is_a('SMG.Mean'))
})
context(" process")
#==========================================================
test_that("it should return a dataframe with the correct names", {
colnames <- c('x1', 'x2')
subject <- described.class$new(colnames.to.mean = colnames)
data <- data.table(x1=c(0,1,2,3),x2=c(5,2,1,0), y=c(1,0,1,0))
result <- subject$process(data)
expect_equal(length(colnames(result)), length(colnames))
expect_equal(colnames(result), c('x1_mean', 'x2_mean'))
})
test_that("it should return the correct means", {
colnames <- c('x1', 'x2')
subject <- described.class$new(colnames.to.mean = colnames)
data <- data.table(x1=c(0,1,2,3),x2=c(5,2,1,0), y=c(1,0,1,0))
result <- subject$process(data)
mean_x1 <- cumsum(data$x1) / seq(1, nrow(data))
mean_x2 <- cumsum(data$x2) / seq(1, nrow(data))
expect_true(all(unlist(result[,'x1_mean']) == mean_x1))
expect_true(all(unlist(result[,'x2_mean']) == mean_x2))
})
test_that("it should be able to update an existing mean", {
colnames <- c('x1', 'x2')
subject <- described.class$new(colnames.to.mean = colnames)
data <- data.table(x1=c(0,1,2,3),x2=c(5,2,1,0), y=c(1,0,1,0))
subject$process(data)
newdata <- data.table(x1=c(3),x2=c(5), y=c(1))
result <- subject$process(newdata)
expect_true(all(unlist(result[,'x1_mean']) == mean(c(data$x1, newdata$x1))))
expect_true(all(unlist(result[,'x2_mean']) == mean(c(data$x2, newdata$x2))))
})
context(" update")
#==========================================================
test_that("it should return the last means given the data", {
colnames <- c('x1', 'x2')
subject <- described.class$new(colnames.to.mean = colnames)
data <- data.table(x1=c(0,1,2,3),x2=c(5,2,1,0), y=c(1,0,1,0))
# Create an initial mean
subject$process(data)
newdata <- data.table(x1=c(3),x2=c(5), y=c(1))
result <- subject$update(newdata)
print(result)
expect_is(result, 'numeric')
expect_true(all(unlist(result['x1_mean']) == mean(c(data$x1, newdata$x1))))
expect_true(all(unlist(result['x2_mean']) == mean(c(data$x2, newdata$x2))))
})
context(" minimalObservations")
#==========================================================
test_that("it should return the minimal number of observations needed for a summary measure", {
colnames <- c('x1')
expected <- 1
subject <- described.class$new(colnames.to.mean = colnames)
expect_equal(subject$minimalObservations, expected)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.