# Copyright (C) Brodie Gaslam
#
# This file is part of "unitizer - Interactive R Unit Tests"
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# Go to <https://www.r-project.org/Licenses/GPL-2> for a copy of the license.
#' Summary of Changes
#'
#' Changes arise any time a user, through the interactive unitizer mode,
#' requests the storing of a change (accept new version of failed test,
#' add new test, remove old test).
#'
#' @keywords internal
setClass("unitizerChanges",
representation(failed="integer", new="integer", removed="integer", corrupted="integer", passed="integer"),
prototype(failed=integer(2L), new=integer(2L), removed=integer(2L), corrupted=integer(2L), passed=integer(2L)),
validity=function(object) {
for(i in slotNames(object)) {
if((len <- length(slot(object, i))) > 0L && len != 2L) {
return(paste0("slot `@`", i, " must be of length 2"))
} else if (slot(object, i)[[1L]] > slot(object, i)[[2L]]) {
return(paste0("slot `@`", i, " must be length 2 with the first value less than the second"))
}
}
TRUE
}
)
#' Print Out A Summary Of the Changes
#' @keywords internal
setMethod("show", "unitizerChanges",
function(object) {
cat(as.character(object), sep="\n")
invisible(NULL)
}
)
#' Print Out A Summary Of the Changes
#' @keywords internal
setMethod("as.character", "unitizerChanges",
function(x, width=getOption("width"), ...) {
bullets <- character()
if(sum(x@failed))
bullets <- c(
bullets,
paste(
"Replacing", x@failed[[1L]], "out of", x@failed[[2L]],
"failed tests"
) )
if(sum(x@new))
bullets <- c(
bullets,
paste(
"Adding", x@new[[1L]], "out of", x@new[[2L]],
"new tests\n"
) )
if(sum(x@removed))
bullets <- c(
bullets,
paste(
"Removing", x@removed[[1L]], "out of", x@removed[[2L]],
"removed tests\n"
) )
if(sum(x@corrupted))
bullets <- c(
bullets,
paste(
"Replacing", x@corrupted[[1L]], "out of", x@corrupted[[2L]],
"tests with errors\n"
) )
if(x@passed[[1L]])
bullets <- c(
bullets,
paste(
"Dropping", x@passed[[1L]], "out of", x@passed[[2L]],
"passed tests\n"
) )
as.character(UL(bullets), width=width)
}
)
#' Return Sum of Total Changes
#' @keywords internal
setMethod(
"length", "unitizerChanges",
function(x) {
sum(vapply(slotNames(x), function(y) slot(x, y)[[1L]], 1L))
}
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.