assertive.base/0000755000176200001440000000000014010150412013154 5ustar liggesusersassertive.base/NAMESPACE0000644000176200001440000000272714010074116014411 0ustar liggesusers# Generated by roxygen2: do not edit by hand S3method(merge,list) S3method(print,scalar_with_cause) S3method(print,vector_with_cause) export("cause<-") export(are_identical) export(are_identical_legacy) export(assert_all_are_false) export(assert_all_are_identical_legacy) export(assert_all_are_na) export(assert_all_are_not_false) export(assert_all_are_not_na) export(assert_all_are_not_true) export(assert_all_are_true) export(assert_any_are_false) export(assert_any_are_identical_legacy) export(assert_any_are_na) export(assert_any_are_not_false) export(assert_any_are_not_na) export(assert_any_are_not_true) export(assert_any_are_true) export(assert_are_identical) export(assert_engine) export(assert_is_identical_to_false) export(assert_is_identical_to_na) export(assert_is_identical_to_true) export(assertionError) export(assertionMessage) export(assertionWarning) export(bapply) export(call_and_name) export(cause) export(coerce_to) export(dont_stop) export(false) export(get_name_in_parent) export(is2) export(is_false) export(is_identical_to_false) export(is_identical_to_na) export(is_identical_to_true) export(is_na) export(is_not_false) export(is_not_na) export(is_not_true) export(is_true) export(merge_dots_with_list) export(na) export(parenthesise) export(parenthesize) export(print_and_capture) export(safe_deparse) export(set_cause) export(strip_attributes) export(use_first) importFrom(methods,as) importFrom(methods,is) importFrom(utils,capture.output) importFrom(utils,head) assertive.base/README.md0000644000176200001440000000723714003341715014456 0ustar liggesusers[![Project Status: Inactive – The project has reached a stable, usable state but is no longer being actively developed; support/maintenance will be provided as time allows.](https://www.repostatus.org/badges/latest/inactive.svg)](https://www.repostatus.org/#inactive) [![Is the package on CRAN?](https://www.r-pkg.org/badges/version/assertive.base)](https://www.r-pkg.org/pkg/assertive.base) [![SemaphoreCI Build Status](https://semaphoreci.com/api/v1/projects/01fd8743-d3d2-42ad-b63d-e94c5844e951/635080/badge.svg)](https://semaphoreci.com/richierocks/assertive-base) [![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/ubs74w5tm2mxgfne?svg=true)](https://ci.appveyor.com/project/richierocks/assertive-base) # assertive.base A minimal set of predicates and assertions used by *[assertive](https://bitbucket.org/richierocks/assertive)*, for package developers who want to include run-time testing features in their own packages. Most of the documentation is on the assertive page. End-users will usually want to use *assertive* directly. ### Installation To install the stable version, type: ```{r} install.packages("assertive.base") ``` To install the development version, you first need the *devtools* package. ```{r} install.packages("devtools") ``` Then you can install the *assertive.base* package using ```{r} library(devtools) install_bitbucket("richierocks/assertive.base") ``` ### Predicates There are six functions that accept (expressions resolving to) logical vectors, and return logical vectors: `is_true` returns a logical vector that is `TRUE` when the input is `TRUE` (`x & !is.na(x)`). `is_false` returns a logical vector that is `TRUE` when the input is `FALSE` (`!x & !is.na(x)`). `is_na` returns a logical vector that is `TRUE` when the input is `NA` (a wrapper to `is.na(x)`). ...and their negations: `is_not_true` returns a logical vector that is `TRUE` when the input is `FALSE` or `NA` (`x | is.na(x)`). `is_not_false` returns a logical vector that is `TRUE` when the input is `TRUE` or `NA` (`!x | is.na(x)`). `is_not_na` returns a logical vector that is `TRUE` when the input is `TRUE` or `FALSE` (`!is.na(x)`). There are four functions that return single logical values: `is_identical_to_true` returns `TRUE` is effectively `identical(x, TRUE)` (like `isTRUE`), but it lets you choose whether or not attributes are allowed on `x`. `is_identical_to_false` and `is_identical_to_na` works similarly with `FALSE` and `NA`. `are_identical` wraps `base::identical`, checking if two expressions return the same thing. ### Assertions Predicates that return a vector have two corresponding assertions. For example, `is_true` has `assert_all_are_true` and `assert_any_are_true`. Predicates returning a single logical value have one corresponding assertion. For example, `is_identical_to_true` has `assert_is_identical_to_true`. ### Utilities `use_first` takes the first value of a vector, warning you if it one longer than length one. `coerce_to` is a wrapper to `as`, changing an object's type with a warning. `get_name_in_parent` gets the name of a variable in the parent environment (stopping you have to remember `deparse(substitute())` arcana). `strip_attributes` strips the attributes from an object. `merge_dots_with_list` merges the contents of `...` with a list argument, to allow users to pass arguments to your function in either form. `dont_stop` runs code without stopping at errors, which is useful for demonstrating errors in examples. `parenthesise` wraps a string in parentheses. `bapply` is a wraps `vapply`, always returning a logical vector.assertive.base/man/0000755000176200001440000000000014001142664013741 5ustar liggesusersassertive.base/man/assert_engine.Rd0000644000176200001440000000402214001142664017054 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/engine.R \name{assert_engine} \alias{assert_engine} \title{Throws an error if a condition isn't met} \usage{ assert_engine( predicate, ..., msg = "The assertion failed.", what = c("all", "any"), na_ignore = FALSE, severity = c("stop", "warning", "message", "none") ) } \arguments{ \item{predicate}{Function that returns a logical value (possibly a vector).} \item{...}{Passed to the \code{predicate} function.} \item{msg}{The error message, in the event of failure.} \item{what}{Either 'all' or 'any', to reduce vectorised tests to a single value.} \item{na_ignore}{A logical value. If \code{FALSE}, \code{NA} values cause an error; otherwise they do not. Like \code{na.rm} in many stats package functions, except that the position of the failing values does not change.} \item{severity}{How severe should the consequences of the assertion be? Either \code{"stop"}, \code{"warning"}, \code{"message"}, or \code{"none"}.} } \value{ \code{FALSE} with the attribute \code{message}, as provided in the input. } \description{ The workhorse of the package that creates an assertion from a predicate. If a condition isn't met, then an error is thrown. This function is exported for use by package developers so that they can create their own assert functions. } \note{ Missing values are considered as \code{FALSE} for the purposes of whether or not an error is thrown. } \examples{ # Basic usage is like do.call; pass a predicate and the arguments to it. dont_stop(assert_engine(is_true, c(TRUE, FALSE, NA))) # Customise the error message dont_stop( assert_engine(is_true, c(TRUE, FALSE, NA), msg = "Not everything is true") ) # Only fail when no values match the predicate's conditions dont_stop(assert_engine(is_true, logical(3), what = "any")) # You can use base predicates, but the error message isn't as informative dont_stop(assert_engine(is.matrix, 1:5)) # Reduce the severity of failure assert_engine(is_true, c(TRUE, FALSE, NA), severity = "message") } assertive.base/man/false.Rd0000644000176200001440000000074014001142664015323 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/engine.R \name{false} \alias{false} \title{FALSE, with a cause of failure.} \usage{ false(...) } \arguments{ \item{...}{Passed to \code{gettextf} to create a cause of failure message.} } \value{ \code{FALSE} with the attribute \code{cause}, as provided in the input. } \description{ Always returns the value \code{FALSE}, with a cause attribute. } \seealso{ \code{\link{cause}} and \code{\link{na}}. } assertive.base/man/coerce_to.Rd0000644000176200001440000000243314001142664016174 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/coercion.R \name{coerce_to} \alias{coerce_to} \title{Coerce variable to a different class} \usage{ coerce_to(x, target_class, .xname = get_name_in_parent(x)) } \arguments{ \item{x}{Input to coerce.} \item{target_class}{The desired class of x. Multiple values allowed (see note).} \item{.xname}{Not intended to be used directly.} } \value{ The input \code{x} after attempted coercion to the target class. } \description{ Coerce the input to a different class, with a warning. More reliable then \code{\link[methods]{as}}, and supports coercion to multiple classes. } \note{ If x does not already have the target class, a warning is given before coercion. The function will try and convert the \code{x} to each of the classes given in \code{target_class}, in order, until it succeeds or runs out of classes to try. It will first try and convert \code{x} using a dedicated \code{as.target_class} function if that exists. If it does not exist, or throws an error then \code{coerce_to} will try to use \code{as(x, target_class)}. } \examples{ # Numbers can be coerced to characters but not to calls. dont_stop(coerce_to(1:5, c("call", "character"))) } \seealso{ \code{\link[methods]{is}} and \code{\link[methods]{as}}. } assertive.base/man/na.Rd0000644000176200001440000000073314001142664014631 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/engine.R \name{na} \alias{na} \title{NA, with a cause of failure.} \usage{ na(...) } \arguments{ \item{...}{Passed to \code{gettextf} to create a cause of failure message.} } \value{ \code{NA} with the attribute \code{cause}, as provided in the input. } \description{ Always returns the value (logical) \code{NA}, with a cause attribute. } \seealso{ \code{\link{cause}} and \code{\link{false}}. } assertive.base/man/dont_stop.Rd0000644000176200001440000000153314001142664016243 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/utils.R \name{dont_stop} \alias{dont_stop} \title{Run code without stopping} \usage{ dont_stop(expr) } \arguments{ \item{expr}{Code to execute.} } \value{ A list containing the results of evaluating each call in \code{expr}. } \description{ Runs code without stopping for warnings or errors. } \note{ This function is dangerous, since it overrides warnings and errors. Its intended use is for documenting examples of warnings and errors. } \examples{ dont_stop({ warning("a warning") x <- 1 stop("an error") y <- sqrt(exp(x + 1)) assert_is_identical_to_true(y) y > 0 }) } \seealso{ \code{\link[base]{warning}} and \code{\link[base]{stop}} for generating warnings and errors respectively; \code{\link[base]{try}} and \code{\link[base]{conditions}} for handling them. } assertive.base/man/call_and_name.Rd0000644000176200001440000000213014001142664016761 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/utils.R \name{call_and_name} \alias{call_and_name} \title{Call a function, and give the result names.} \usage{ call_and_name(fn, x, ...) } \arguments{ \item{fn}{A function to call. See note below.} \item{x}{The first input to \code{fn}.} \item{...}{Optional additional inputs to \code{fn}.} } \value{ The result of \code{fn(x, ...)}, with names given by the argument \code{x}. } \description{ Calls a function, and names the result with the first argument. } \note{ The function, \code{fn}, should return an object with the same length as the input \code{x}. For speed and simplicity, this isn't checked; it is up to the developer of the assertion to make sure that this condition holds. } \examples{ call_and_name(is.finite, c(1, Inf, NA)) # Make sure that the output is the same size as the input. # Don't do this: dont_stop(call_and_name(isTRUE, list(TRUE, FALSE, NA))) # Do this instead: call_and_name( Vectorize(isTRUE, SIMPLIFY = FALSE), list(TRUE, FALSE, NA) ) } \seealso{ \code{\link{cause}} and \code{\link{na}}. } assertive.base/man/cause.Rd0000644000176200001440000000121514001142664015327 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/cause.R \name{cause} \alias{cause} \alias{cause<-} \title{Get or set the \code{"cause"} attribute} \usage{ cause(x) cause(x) <- value } \arguments{ \item{x}{Any variable.} \item{value}{Passed to \code{gettextf} and stored in the \code{"cause"} attribute.} } \value{ The get method returns the \code{"cause"} attribute. } \description{ Gets or sets the \code{"cause"} (of failure) attribute of a variable. } \examples{ # Scalar case yn <- is_identical_to_true(FALSE) cause(yn) # Vector case yn <- is_true(c(TRUE, FALSE, NA)) cause(yn) } \seealso{ \code{\link{set_cause}} } assertive.base/man/bapply.Rd0000644000176200001440000000113414001142664015516 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/utils.R \name{bapply} \alias{bapply} \title{Wrapper to vapply that returns booleans} \usage{ bapply(x, predicate, ...) } \arguments{ \item{x}{A vector (atomic or list).} \item{predicate}{A predicate (function that returns a bool) to apply. elementwise to \code{x}.} \item{...}{Passed to \code{vapply}.} } \value{ A logical vector. } \description{ Wrapper to \code{\link{vapply}} for functions that return a boolean (logical scalar) value. } \note{ \code{USE.NAMES} is set to \code{TRUE} } \seealso{ \code{\link{vapply}}. } assertive.base/man/parenthesize.Rd0000644000176200001440000000277314001142664016742 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/utils.R \name{parenthesize} \alias{parenthesize} \alias{parenthesise} \title{Wrap a string in brackets} \usage{ parenthesize( x, type = c("round_brackets", "square_brackets", "curly_brackets", "angle_brackets", "chevrons", "hyphens", "en_dashes", "em_dashes", "commas") ) parenthesise( x, type = c("round_brackets", "square_brackets", "curly_brackets", "angle_brackets", "chevrons", "hyphens", "en_dashes", "em_dashes", "commas") ) } \arguments{ \item{x}{Character vector to wrap in parenthenses.} \item{type}{String naming the type of parenthesis.} } \value{ A character vector of the input wrapped in parentheses. } \description{ Parenthesise a character vector by wrapping elements in brackets, dashes or commas. } \note{ English grammar terminology is awfully confusing. The verb 'to parenthesise' means to wrap a phrase in brackets or dashes or commas, thus denoting it as supplementary material that could be left out. A 'parenthesis' as a noun is often used as a synonym for a round bracket. } \examples{ paste("There were three", parenthesise(3), "mice in the experiment.") paste( "I love parmos", parenthesise("Teesside's finest culinary invention", "en_dashes"), "but they are sure to give me heart disease." ) parenthesise(letters[1:5], "curly") paste0( "The R language", parenthesise("an offshoot of S and Scheme", "commas"), "is quite good for data analysis." ) } \seealso{ \code{\link[base]{sQuote}} } assertive.base/man/is2.Rd0000644000176200001440000000146514001142664014733 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/coercion.R \name{is2} \alias{is2} \title{Alternative version of is} \usage{ is2(x, class, .xname = get_name_in_parent(x)) } \arguments{ \item{x}{Input to check.} \item{class}{Target class that \code{x} maybe belong to.} \item{.xname}{Not intended to be used directly.} } \value{ \code{TRUE} if x belongs to the class and \code{FALSE} otherwise. } \description{ If a function named \code{is.class} exists, call \code{is.class(x)}. If not, call \code{is(x, class)}. } \examples{ is2(1:5, "character") is2(matrix(1:5), "character") is2(1:5, c("character", "list", "numeric")) is2(mean, c("function", "data.frame")) } \seealso{ \code{\link[methods]{is}}, and \code{\link[assertive.types]{assert_is_all_of}} for the corresponding assert fns. } assertive.base/man/print_and_capture.Rd0000644000176200001440000000123114001142664017726 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/utils.R \name{print_and_capture} \alias{print_and_capture} \title{Print a variable and capture the output} \usage{ print_and_capture(x, ...) } \arguments{ \item{x}{A variable.} \item{...}{Arguments passed to \code{\link[base]{print}} methods.} } \value{ A string. } \description{ Prints a variable and captures the output, collapsing the value to a single string. } \examples{ # This is useful for including data frames in warnings or errors message("This is the sleep dataset:\n", print_and_capture(sleep)) } \seealso{ \code{\link[base]{print}}, \code{\link[utils]{capture.output}} } assertive.base/man/set_cause.Rd0000644000176200001440000000160614001142664016206 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/cause.R \name{set_cause} \alias{set_cause} \title{Set a cause and return the input} \usage{ set_cause(x, false_value, missing_value = "missing") } \arguments{ \item{x}{A variable.} \item{false_value}{A character vector to set the cause to, where \code{x} is \code{FALSE}.} \item{missing_value}{A character vector to set the cause to, where \code{x} is \code{NA}.} } \value{ \code{x}, with a new cause attribute. } \description{ Sets the cause attribute of an object and returns that object. } \details{ If \code{x} is \code{TRUE} everywhere, this returns the input without setting a cause. Otherwise, the cause is an empty string where \code{x} is \code{TRUE}, \code{false_value} where it is \code{FALSE}, and \code{missing_value} where it is \code{NA}. } \seealso{ \code{\link{cause}}, \code{\link[stats]{setNames}} } assertive.base/man/assertionError.Rd0000644000176200001440000000266014001142664017255 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/conditions.R \name{assertionError} \alias{assertionError} \alias{assertionWarning} \alias{assertionMessage} \title{Condition classes} \usage{ assertionError(message, call = NULL, predicate_name = NULL) assertionWarning(message, call = NULL, predicate_name = NULL) assertionMessage(message, call = NULL, predicate_name = NULL) } \arguments{ \item{message}{A string describing the problem.} \item{call}{A call describing the source of the condition.} \item{predicate_name}{A string naming the predicate that was called when the condition occured.} } \value{ An object of class \code{assertionError}, \code{assertionWarning}, or \code{assertionMessage}. } \description{ Error, warning, and message classes derived from their simple equivalents. } \note{ These objects behave the same as the standard-issue \code{simpleError}, \code{simpleWarning}, and \code{simpleMessage} objects from base-R. The extra class allows you to provide custom handling for assertions inside \code{tryCatch}. } \examples{ tryCatch( assert_all_are_true(FALSE), error = function(e) { if(inherits(e, "assertionCondition")) { # Handle assertions message("This is an assertion condition.") # Handle assertions cause by a specific predicate if(e$predicate_name == "is_true") { } } else { # Handle other error types } } ) } assertive.base/man/Truth.Rd0000644000176200001440000001431714001142664015344 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/assert-identical-to-true-false-na.R, % R/assert-is-true-false-na.R, R/is-identical-to-true-false-na.R, % R/is-true-false-na.R \name{Truth} \alias{Truth} \alias{assert_is_identical_to_false} \alias{assert_is_identical_to_na} \alias{assert_is_identical_to_true} \alias{assert_all_are_false} \alias{assert_any_are_false} \alias{assert_all_are_na} \alias{assert_any_are_na} \alias{assert_all_are_true} \alias{assert_any_are_true} \alias{assert_all_are_not_false} \alias{assert_any_are_not_false} \alias{assert_all_are_not_na} \alias{assert_any_are_not_na} \alias{assert_all_are_not_true} \alias{assert_any_are_not_true} \alias{is_identical_to_false} \alias{is_identical_to_na} \alias{is_identical_to_true} \alias{is_false} \alias{is_na} \alias{is_not_na} \alias{is_not_false} \alias{is_not_true} \alias{is_true} \title{Is the input TRUE/FALSE/NA?} \usage{ assert_is_identical_to_false( x, allow_attributes = FALSE, severity = getOption("assertive.severity", "stop") ) assert_is_identical_to_na( x, allow_attributes = FALSE, severity = getOption("assertive.severity", "stop") ) assert_is_identical_to_true( x, allow_attributes = FALSE, severity = getOption("assertive.severity", "stop") ) assert_all_are_false(x, severity = getOption("assertive.severity", "stop")) assert_any_are_false(x, severity = getOption("assertive.severity", "stop")) assert_all_are_na(x, severity = getOption("assertive.severity", "stop")) assert_any_are_na(x, severity = getOption("assertive.severity", "stop")) assert_all_are_true(x, severity = getOption("assertive.severity", "stop")) assert_any_are_true(x, severity = getOption("assertive.severity", "stop")) assert_all_are_not_false(x, severity = getOption("assertive.severity", "stop")) assert_any_are_not_false(x, severity = getOption("assertive.severity", "stop")) assert_all_are_not_na(x, severity = getOption("assertive.severity", "stop")) assert_any_are_not_na(x, severity = getOption("assertive.severity", "stop")) assert_all_are_not_true(x, severity = getOption("assertive.severity", "stop")) assert_any_are_not_true(x, severity = getOption("assertive.severity", "stop")) is_identical_to_false( x, allow_attributes = FALSE, .xname = get_name_in_parent(x) ) is_identical_to_na(x, allow_attributes = FALSE, .xname = get_name_in_parent(x)) is_identical_to_true( x, allow_attributes = FALSE, .xname = get_name_in_parent(x) ) is_false(x, .xname = get_name_in_parent(x)) is_na(x, coerce_to_logical = FALSE, .xname = get_name_in_parent(x)) is_not_na(x, coerce_to_logical = FALSE, .xname = get_name_in_parent(x)) is_not_false(x, .xname = get_name_in_parent(x)) is_not_true(x, .xname = get_name_in_parent(x)) is_true(x, .xname = get_name_in_parent(x)) } \arguments{ \item{x}{Input to check. See note.} \item{allow_attributes}{If \code{TRUE}, a scalar value of \code{TRUE} with attributes is allowed.} \item{severity}{How severe should the consequences of the assertion be? Either \code{"stop"}, \code{"warning"}, \code{"message"}, or \code{"none"}.} \item{.xname}{Not intended to be used directly.} \item{coerce_to_logical}{Logical: should the input be coerced to logical before checking? See note.} } \value{ The \code{is*} functions return \code{TRUE} if the input is \code{TRUE}/\code{FALSE}. The \code{assert_*} functions return nothing but throw an error if the corresponding \code{is_*} function returns \code{FALSE}. } \description{ Checks to see if the input is \code{TRUE}, \code{FALSE} or \code{NA}. } \note{ \code{is_identical_to_true} wraps the base function \code{isTRUE}, providing more information on failure. Likewise, \code{is_identical_to_false} checks that the input is identical to FALSE. If \code{allow_attributes} is \code{TRUE}, a scalar value of \code{TRUE} with attributes is allowed. \code{is_true} and \code{is_false} are vectorized, returning \code{TRUE} when the inputs are \code{TRUE} and \code{FALSE} respectively. The for \code{is_true}, \code{is_false}, \code{is_not_true} and \code{is_not_false}, \code{x} argument will be coerced to be a logical vector if it isn't already. Coercion to logical is optional for \code{is_na} and \code{is_not_na}. If you do coerce, it means that \code{is_na} differs in behaviour from \code{base::is.na} for character vector, list and data frame inputs. To replicate the behaviour of \code{is.na}, ensure the argument \code{coerce_to_logical} is \code{FALSE} (this is the default). Note that in assertive version 0.1-4 and prior, \code{is_identical_to_true/false} were named \code{is_true/false} and the vectorized versions were not present. } \examples{ # Checks against logical values using base::identical assert_is_identical_to_true(TRUE) assert_is_identical_to_false(FALSE) assert_is_identical_to_na(NA) # Other NA types match assert_is_identical_to_na(NA_complex_) # NaN is not NA dont_stop(assert_is_identical_to_na(NaN)) # For a slightly less strict test, you can ignore attributes assert_is_identical_to_true(c(truth = TRUE), allow_attributes = TRUE) assert_is_identical_to_false(matrix(FALSE), allow_attributes = TRUE) assert_is_identical_to_na(structure(NA, class = "nanana"), allow_attributes = TRUE) # Vectorized predicates (package name explicitly given to prevent # problems with testthat name clash) x <- c(TRUE, FALSE, NA) assertive.base::is_true(x) assertive.base::is_false(x) is_na(x) # ...and their opposites is_not_true(x) is_not_false(x) is_not_na(x) # Check that at least one element fits the condition assert_any_are_true(x) assert_any_are_false(x) assert_any_are_na(x) # These checks should fail: dont_stop({ assert_is_identical_to_true(c(truth = TRUE)) assert_is_identical_to_true(1) assert_is_identical_to_true(c(TRUE, TRUE)) assert_is_identical_to_false(matrix(FALSE)) assert_is_identical_to_na(structure(NA, class = "nanana")) assert_all_are_true(x) assert_all_are_false(x) assert_all_are_na(x) }) # base::is.na has non-standard behaviour for data.frames and lists. # is_na and is_not_na coerce to logical vectors (except character input). # unlist the input or use an apply function. d <- data.frame( x = c(TRUE, FALSE, NA), y = c(0, NA, 2), z = c("a", "NA", NA) ) is.na(d) is_na(unlist(d)) } \seealso{ \code{\link[base]{isTRUE}}. } assertive.base/man/print.vector_with_cause.Rd0000644000176200001440000000157614001142664021111 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/cause.R \name{print.scalar_with_cause} \alias{print.scalar_with_cause} \alias{print.vector_with_cause} \title{Print methods for objects with a cause attribute} \usage{ \method{print}{scalar_with_cause}(x, ...) \method{print}{vector_with_cause}(x, na_ignore = FALSE, n_to_show = 10, ...) } \arguments{ \item{x}{an object of class \code{scalar_with_cause} or \code{vector_with_cause}.} \item{...}{Currently unused.} \item{na_ignore}{A logical value. If \code{FALSE}, \code{NA} values are printed; otherwise they do not. Like \code{na.rm} in many stats package functions, except that the position of the failing values does not change.} \item{n_to_show}{A natural number. The maximum number of failures to show.} } \description{ Prints objects of class \code{scalar_with_cause} and \code{vector_with_cause}. } assertive.base/man/safe_deparse.Rd0000644000176200001440000000173614001142664016660 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/utils.R \name{safe_deparse} \alias{safe_deparse} \title{Safe version of deparse} \usage{ safe_deparse(expr, ...) } \arguments{ \item{expr}{Any R expression.} \item{...}{Passed to \code{\link[base]{deparse}}.} } \value{ A character vector or length one. } \description{ A version of \code{\link[base]{deparse}} that is guaranteed to always return a single string. } \note{ By default the RStudio IDE truncates output in the console at 1000 characters. Consequently, if you use \code{safe_deparse} on large or complex objects, you won't see the full value. You can change the setting using Tools -> "Global Options..." -> Code -> Display -> Console -> "Limit length of lines displayed in console to:". } \examples{ # safe_deparse only differs from deparse when the deparse string is longer # than width.cutoff deparse(CO2, width.cutoff = 500L) # has length 6 safe_deparse(CO2) # has length 1 } assertive.base/man/strip_attributes.Rd0000644000176200001440000000072414001142664017642 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/utils.R \name{strip_attributes} \alias{strip_attributes} \title{Strip all attributes from a variable} \usage{ strip_attributes(x) } \arguments{ \item{x}{Input to strip.} } \value{ \code{x}, without attributes. } \description{ Strips all the attributes from a variable. } \examples{ x <- structure(c(foo = 1, bar = 2), some_attr = 3) x2 <- strip_attributes(x) attributes(x) attributes(x2) } assertive.base/man/merge_dots_with_list.Rd0000644000176200001440000000206314001142664020447 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/utils.R \name{merge_dots_with_list} \alias{merge_dots_with_list} \title{Merge ellipsis args with a list.} \usage{ merge_dots_with_list( ..., l = list(), warn_on_dupes = TRUE, allow_unnamed_elements = FALSE ) } \arguments{ \item{...}{Some inputs.} \item{l}{A list.} \item{warn_on_dupes}{\code{TRUE} or \code{FALSE}. Should a warning be given if both \code{x} and \code{y} have elements with the same name. See note.} \item{allow_unnamed_elements}{\code{TRUE} or \code{FALSE}. Should unnamed elements be allowed?} } \value{ A list containing the merged inputs. } \description{ Merges variable length ellipsis arguments to a function with a list argument. } \note{ If any arguments are present in both the \code{...} and \code{l} arguments, the \code{...} version takes preference, and a warning is thrown. } \examples{ merge_dots_with_list( foo = 1, bar = 2, baz = 3, l = list(foo = 4, baz = 5, quux = 6) ) } \seealso{ \code{\link{merge.list}}, \code{\link[base]{merge}} } assertive.base/man/get_name_in_parent.Rd0000644000176200001440000000141014001142664020042 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/utils.R \name{get_name_in_parent} \alias{get_name_in_parent} \title{Get the name of a variable in the parent frame} \usage{ get_name_in_parent(x, escape_percent = TRUE) } \arguments{ \item{x}{Variable to get the name of.} \item{escape_percent}{Logical. If \code{TRUE}, percent signs are doubled, making the value suitable for use with \code{sprintf} (and hence by \code{false} and \code{na}).} } \value{ A string giving the name of the input in the parent frame. } \description{ Gets the name of the input in the parent frame. } \examples{ outside <- 1 f <- function(inside, escape_percent) { get_name_in_parent(inside, escape_percent) } f(outside, TRUE) f('10\%', TRUE) f('10\%', FALSE) } assertive.base/man/use_first.Rd0000644000176200001440000000130614001142664016233 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/utils.R \name{use_first} \alias{use_first} \title{Only use the first element of a vector} \usage{ use_first(x, indexer = c("[[", "["), .xname = get_name_in_parent(x)) } \arguments{ \item{x}{Input that should be scalar.} \item{indexer}{Either double indexing, \code{"[["} (the default) or single indexing \code{"["}.} \item{.xname}{Not intended to be used directly.} } \value{ If \code{x} is scalar, it is returned unchanged, otherwise only the first element is returned, with a warning. } \description{ If the input is not scalar, then only the first element is returned, with a warning. } \examples{ dont_stop(use_first(1:5)) } assertive.base/man/merge.list.Rd0000644000176200001440000000227514001142664016307 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/utils.R \name{merge.list} \alias{merge.list} \title{Merge two lists} \usage{ \method{merge}{list}(x, y, warn_on_dupes = TRUE, allow_unnamed_elements = FALSE, ...) } \arguments{ \item{x}{A list.} \item{y}{A list.} \item{warn_on_dupes}{\code{TRUE} or \code{FALSE}. Should a warning be given if both \code{x} and \code{y} have elements with the same name. See note.} \item{allow_unnamed_elements}{\code{TRUE} or \code{FALSE}. Should unnamed elements be allowed?} \item{...}{Ignored.} } \value{ A list, combining elements from \code{x} and \code{y}. } \description{ Merges two lists, taking duplicated elements from the first list. } \note{ In the event of elements that are duplicated between \code{x} and \code{y}, the versions from \code{x} are used. } \examples{ merge( list(foo = 1, bar = 2, baz = 3), list(foo = 4, baz = 5, quux = 6) ) # If unnamed elements are allowed, they are included at the end merge( list("a", foo = 1, "b", bar = 2, baz = 3, "c"), list(foo = 4, "a", baz = 5, "b", quux = 6, "d"), allow_unnamed_elements = TRUE ) } \seealso{ \code{\link{merge_dots_with_list}}, \code{\link[base]{merge}} } assertive.base/man/are_identical.Rd0000644000176200001440000000372314001142664017020 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/are-identical.R, R/assert-are-identical.R \name{are_identical} \alias{are_identical} \alias{are_identical_legacy} \alias{assert_are_identical} \alias{assert_all_are_identical_legacy} \alias{assert_any_are_identical_legacy} \title{Are the inputs identical?} \usage{ are_identical( x, y, allow_attributes = FALSE, .xname = get_name_in_parent(x), .yname = get_name_in_parent(y) ) are_identical_legacy(..., l = list()) assert_are_identical( x, y, allow_attributes = FALSE, severity = getOption("assertive.severity", "stop") ) assert_all_are_identical_legacy(..., l = list()) assert_any_are_identical_legacy(..., l = list()) } \arguments{ \item{x}{An R object or expression.} \item{y}{Another R object or expression.} \item{allow_attributes}{If \code{TRUE}, The attributes of \code{x} and \code{y} are allowed to differ.} \item{.xname}{Not intended to be used directly.} \item{.yname}{Not intended to be used directly.} \item{...}{Some R expressions, deprecated.} \item{l}{A list of R expressions, deprecated.} \item{severity}{How severe should the consequences of the assertion be? Either \code{"stop"}, \code{"warning"}, \code{"message"}, or \code{"none"}.} } \value{ \code{are_identical} returns \code{TRUE} if \code{x} and \code{y} are identical. The \code{assert_*} function throws an error on failure. The legacy function \code{are_identical_legacy} allows an arbitrary number of inputs and returns a symmetric square logical matrix which is \code{TRUE} where pairs of inputs are identical. (The new version of the function is easier to work with, and it is recommended that you switch your code to it.) } \description{ Checks if the inputs are identical. } \examples{ x <- 1:5 are_identical(c(1, -1), cos(c(0, pi))) assertive.base::dont_stop(assert_are_identical(c(1, 1), cos(c(0, pi)))) } \seealso{ \code{\link[base]{identical}}, \code{\link[assertive.properties]{are_same_length}} } assertive.base/DESCRIPTION0000644000176200001440000000473714010150412014675 0ustar liggesusersPackage: assertive.base Type: Package Title: A Lightweight Core of the 'assertive' Package Version: 0.0-9 Date: 2021-02-07 Author: Richard Cotton [aut, cre], Sunkyu Choi [trl], Ivanka Skakun [trl], Gergely Darczi [trl], Anton Antonov [trl], Hisham Ben Hamidane [trl], Anja Billing [trl], Aditya Bhagwat [trl], Rasmus Bth [trl], Mine Cetinkaya-Rundel [trl], Aspasia Chatziefthymiou [trl] Maintainer: Richard Cotton Authors@R: c(person("Richard", "Cotton", role = c("aut", "cre"), email = "richierocks@gmail.com"), person("Sunkyu", "Choi", role = "trl", email = "szc2010@qatar-med.cornell.edu"), person("Ivanka", "Skakun", role = "trl", email = "ivanka.skakun@gmail.com"), person("Gergely", "Darczi", role = "trl", email = "daroczig@rapporter.net"), person("Anton", "Antonov", role = "trl", email = "tonytonov@gmail.com"), person("Hisham", "Ben Hamidane", role = "trl", email = "hbh2002@qatar-med.cornell.edu"), person("Anja", "Billing", role = "trl", email = "anb2061@qatar-med.cornell.edu"), person("Aditya", "Bhagwat", role = "trl", email = "bhagwataditya@gmail.com"), person("Rasmus", "Bth", role = "trl", email = "rasmus.baath@lucs.lu.se"), person("Mine", "Cetinkaya-Rundel", role = "trl", email = "mine@stat.duke.edu"), person("Aspasia", "Chatziefthymiou", role = "trl", email = "asc2006@qatar-med.cornell.edu")) Description: A minimal set of predicates and assertions used by the assertive package. This is mainly for use by other package developers who want to include run-time testing features in their own packages. End-users will usually want to use assertive directly. URL: https://bitbucket.org/richierocks/assertive.base BugReports: https://bitbucket.org/richierocks/assertive.base/issues Depends: R (>= 3.5.0) Imports: methods, utils Suggests: testthat License: GPL (>= 3) LazyLoad: yes LazyData: yes Acknowledgments: Development of this package was partially funded by the Proteomics Core at Weill Cornell Medical College in Qatar . The Core is supported by 'Biomedical Research Program' funds, a program funded by Qatar Foundation. Ukranian translations were supported by www.coupofy.com. RoxygenNote: 7.1.1 ByteCompile: true NeedsCompilation: no Packaged: 2021-02-08 00:11:07 UTC; richie Repository: CRAN Date/Publication: 2021-02-08 05:50:02 UTC assertive.base/tests/0000755000176200001440000000000014001142664014330 5ustar liggesusersassertive.base/tests/testthat/0000755000176200001440000000000014010150412016156 5ustar liggesusersassertive.base/tests/testthat/test-is-identical-to-true-false-na.R0000644000176200001440000000342014001142664024715 0ustar liggesuserstest_that( "test is_identical_to_false with false returns true", { expect_true(is_identical_to_false(FALSE)) } ) test_that( "test is_identical_to_false with a false vector returns false", { expect_false(is_identical_to_false(logical(2))) } ) test_that( "test is_identical_to_false with NA returns false", { expect_false(is_identical_to_false(NA)) } ) test_that( "test is_identical_to_false with false + attr returns allow_attributes", { x <- c(truth = FALSE) expect_false(is_identical_to_false(x)) expect_true(is_identical_to_false(x, allow_attributes = TRUE)) } ) test_that( "test is_identical_to_na with TRUE returns false", { expect_false(is_identical_to_na(TRUE)) } ) test_that( "test is_identical_to_na with NA returns true", { expect_true(is_identical_to_na(NA)) } ) test_that( "test is_identical_to_na with an NA vector.returns false", { expect_false(is_identical_to_na(rep.int(NA, 2))) } ) test_that( "test is_identical_to_na NA + attr returns allow_attributes", { x <- c(truth = NA) expect_false(is_identical_to_na(x)) expect_true(is_identical_to_na(x, allow_attributes = TRUE)) } ) test_that( "test is_identical_to_true NA returns false", { expect_false(is_identical_to_true(NA)) } ) test_that( "test is_identical_to_true with true returns true", { expect_true(is_identical_to_true(TRUE)) } ) test_that( "test is_identical_to_true with a true vector returns false", { expect_false(is_identical_to_true(rep.int(TRUE, 2))) } ) test_that( "test is_identical_to_true true + attr returns allow_attributes", { x <- c(truth = TRUE) expect_false(is_identical_to_true(x)) expect_true(is_identical_to_true(x, allow_attributes = TRUE)) } ) assertive.base/tests/testthat/test-internal.R0000644000176200001440000000033314001142664021103 0ustar liggesuserstest_that( "print_and_capture returns a string of the captured output.", { expected <- " x\n1 a\n2 b\n3 c" actual <- print_and_capture(data.frame(x = letters[1:3])) expect_equal(actual, expected) } ) assertive.base/tests/testthat/test-are-identical.R0000644000176200001440000000044114001142664021770 0ustar liggesuserstest_that( "test are_identical with identical objects returns true", { expect_true(are_identical((1:3) ^ 3, c(1, 8, 27))) } ) test_that( "test are_identical with non-identical objects returns false", { expect_false(are_identical((1:3) ^ 3, c(1, 8, 27.0000001))) } ) assertive.base/tests/testthat/testthat-problems.rds0000644000176200001440000011126214001142664022366 0ustar liggesusers}|\SYrd˲ ƽaq䵴]]aLBh![:5%!@!P鐄B =tecc89o;wn{tq,';CoDrDUNȽ`S`@c.UZCuH]SdkcsnXR)ih5Zá]͡|l 7FKoXd EMh4P>7n/H~z5`xyg=VKCJD&V(B&%tٙfmN"i|Fg4̝ ɨ%4&oZ[5Z"ۣwFZGRPKP`449ƢǶceás*ƨXUf^ Pfض@0j 7-XkK8B@*u.K\'zA^2\z Jsq*c1k] RBYE4\ lnV$UV%+d5R]l“ÑZ#PE}EUYUȎhT2ctg7͢n ;GH=CQx`z?1ݡ+b@ۂ-RpE#ns_c$lp$G֛.515 ōSVPsuc8V6$,3Z;>mٷ%m|+1 i%'H{*e&OEi7sbCs(__ʗ/1*0=~(SbŢ"aZb^f떃/fye1!G'n=";Bzb& Pk^(nش'HL3zg}eKrÉYfj%Xоl4NN1ЎP8k±`cXph yݔdڙr*V/H;TY6HD>` JdOGȔɔdĶDv*jipEG+\2O] 5I%lƄxb\q\#M1Mt<8=\WqpDQS6O8vx9?KX vˁ:btxӤ3cf[a|S]vGpkטLхZ^%+#{ZiW.uBS-ԎV_7,vQ~1~BįI<1>_x=#@Hz`a? ߁ė*$CEYxF8Ch ~_)Rf0? ID'PkX%ȏj'1Ydk8[+2~ &DM%~?S0 HB?X?Iw7s~!c%~~Ӷ7ɏ b|X&r :X.r"HqڛY ďRkE;rBWkD֪?%kk:ɪ/!D6XdKGSD6DZc9F;$D|7{|VjBmW)N5U?aÖO#pst]/!Dwc]ė*b4u$F?;ϴ?s}w/!D>&U=O|@ȅDb?X냉E"~$!w=_b)$QF"?EhrjU"V}!Ƚ{i+ kU??#E=_KD'N{ OUFoU {"w~>!.{g!iۿ pȟi;NۖBcCgxΜopfo9/~=I|O|OBÜT>)cN=X"8\>$<!_J&{7ė*%-;μB |`";+%D~Sq;SݿD޵MPőmk/ُ"Ti hE:ߙ9"g؏#ȱďokh~ٛw E:e Ed~dUϨ!f 9c"~=| צ̏ރbj@I.헜Și2_DT_FkU{GE:eq/$"_a)Ko!$g̘i{?.޿#D樾-bsؠY\L|fx(?վe"G[.r"cg+Dpw!YoUVYj5Iak,`dF"7?Zg' BD-($+ )@'fSXV'T}-!ڿOU^=E{Ji&4wgByVC W,,GQR9 >@y2q"/Xx"?^.rBU+ ?E?bBDB"YxؿFUW"oZx'"oY7E!!Y{uu)E݋)ku`7IH_dMfjg .|Ae/W@B|{v`~<,$~ed_Xʟb KȾP?ZhkR`1IJ?dNKGOf@e/?g[?@E)fB_IyK4.پ ȯ JZQI(bx;0ܿ3DS} !?Sd#TdY1&DfyihxF+?վE"KԽa ڷX2=/QCYB_&bˉXJ;Jd~o=j_B1ݐ1Nj7;Vxlj\dG_8 r"I""~0!,b?D/ՉU?aA++Hd'"?xVK&7o"~!,ҢjB4s,(ɄX?"1 O!"gXx?"gZ9ico?Fg:!ϷdoGK\#x_,BcpW*?^ ʿI?g~e"rȿ[:OZ6+9w]_OR~@corcG">We~EE=ʿx?!wC'[=O|"|@䫪/"D_H2yX 0WwD!=aN O~$!?aOP_͏eL8EӪ${CW/E'b~yޒ2~QgWD^U}"|E-_%D/b|AK,GDgY/sRg_E^ȟ׉/S_oiMOx>ed Qw$D|'Wľb?Po KڳMV&Մo~^\LʳoKƯ}-]C%|?oK%sv`#ɒ5b71U!KRp*%c"bÉ/QSYT?$bDDT?3ˈg29fxÕuRiXiQ~%O!D~MćK*!?l_d';igճSagkת`ʟ" U_BY r_8/2_U}!/Yi%ďQYKE;YʧpM D"Je#NQ(%t>4\(?տ'BHO&TSD6~0!Wa,pMU~}DNU} !(=<7e5U_@;DZ-&"ˊ椿{G=4Kt1\} +?];i䌚u Dأ/R#"{T?yb{D犜QO[<(,>LՏ"D| XN/+{'O\*B%~t>3\&?wgU_CA=,?(rMd?i {y/XxF%~=?^ aU1i5wt01"4fnzT .!f@~_\ l]z _Ȗ\̞mBKi-L+XdKBU?%WG[?d=~ 5_8xBK+'Dʈ$D|Wv'"+{W?7m`a?QW¿Ik,<אdBķ>.Bϰw ϲ/gAz.[~^E/b /Ronb'D/Yg Dߥ$q 'JcXmQj%Dm צߠ?_y?NjB "=H|hɪ/#" {?1t-M$D<|}_![vvO#DNG-@NzFEZU_BDβ+t-t]L][BW|T%h߹"OZ<?o@ȥ{t-"!w=_d)K} T~/ve_)r DoGW_8Z3H׈9c*,aė*&DP}!9bg?Fd;[Y|ϥM D*E@BO#D>a/ğw:׹S"W\Z=_A|"W\hU|gx+վϊܤBF-x"ݿ"r V[6*;"w!w=i)K?! :i|ܧBB^YQ})uȃHb?*u&b_'~"f7U D|o_H-+;9c"}{*H3Ʉ迟<BD^أ%"O[x?MSQ_?yd?ELBAE /aߗ,;_9Ozp?كaoqo4fW.o' uI7Hs9j~IXY?_ZouNr|ZW5r <`'+4ʑ(׬h܁Z3Pt1Ge{?x"O9R!/$DdYj!);#gaȾN|?Em4"2_P9~$!W D5ժM\b/S;92'XxאxBԿ */sm 3~!$~b ?Bdd_KKKh}2\~%|j6e:7H7rdYBERL="-g넪Lvn=!~!#NC _[9,a#e]`aG"%~"ENُ'D~l.rB/H|%!٪ o%~"!ڿMþQS&H'"͖p¾Ւ5d2?S& {9٣Ef#r_H+r?*r#~!1 T?{=_@`E_2kO 4Y[/!JQ/?£KɾIK|x?_T`15"ת/[ZKGDnP}!_/ro ~"M$Dn,so!v_"W4Bs(pݬfW'KEi/U9|M Ѿz,?W|}yD%hwľQIO <BTI=?F|_E}'Tߏ{Ծ)R~zJi?3?M|"ȳH$ܶgDy^ 9?Xy(0~oT?=^K"SB;K=%7#߿jB5XQO&7[xkQ?TBKxo!ko ? >72OǷn]NocMa=ʿx?!w]C)"@[s#bBė*m_|W~!Cš-L "?^_"~8!+A_GKL S_K>b#Tq4/#k7Hsy[[|dd&b|*E^b~{=|c&tp=K7OU_BϓD^ė*=_7\}5ʈL䌑WzF_[dGW¿iDO 7b0mV$B=W?Yq:n4 ?'˛zF??zp9Y_D3-.>?W|R.|rQ b|SD6~!7)@=兄7ҏi4>WgyDεأFT߇.r/PY} 񥊴ϓ|^+C|'3,C$D|aY߷}1M|"'~zأ,/TBWH'/!D,B|"~*}?,mE_j"V} !+k__߈A[[+EU?{_SF"@hE>E5W<=JB7 7ϲ߉Ih&k;"諭a?U?MxZG#%g϶ϣK|K}u|>*~,D\<xcT|/c%Zz\|Yǩ~ OX{e|/c)S?j*,_JR=ʯ&OIת!W#b(,T d_LN#TnpDH| ,<#apm+v>_.Bt>?Jb+/!D~YRBj)bb{ 5d?w CG "Zx?Gq|ol"?Nď_kk~\A:o٦E:oYE8?oٮȏSEZ,aHX Osõi?1,٭B'-R T_Ff 9bg?Fgf ?GG<K3\}1>F|"弑~yأ-{WW!*՗"/z=_E|"F ѾO{5|fxVjWnE%h"OYK|D|b?Xgwܥߝ|:.پQ/?Zgܧ B^YQ}W"~!? $~b~U몯%Da_'~4ȷT?=< G-;'f,K ̟#ac[hx ?\6@~~kUog^~B{i ΦȟU?'{+4fm2G:7h!s|أ7"~oS}|=E>#/ }1!.|>{#A!t>K_-7\~g צY?뤝r&Pg~쯰1%~RB|?_dDHE:,<#?X/:h ~!qd?Wh~ܨA:eOR}"GXEx>i_-R ďR"QpU?7rB_ttW" lBW)1FGXOCfov "'?QdO"Tw"~0!w=b)woqo6՗}[E6K|oٮAH?Xw&G"~;kCk*]zW`弄뺃|~5!/W9ؚp~nB-9~ׄ4޻)wSP| Aܷ|7>z?*A}{/wOA{=H@T8V7`1~$y}bp-]Vano л+@amo л+@hoo:]%zWCdHmٱ.GweBX]l[0 (.3u[MP`gcl[ hlm6ͭ@K(b-rŶP8 N\N3ć]!s$5^U^v(·tulnҥICPC7j~%QJc&*PKP`4fB#ѯѢdyVXW]T8kil 6Jfy]0“asH];d_}5}ngn8rZk$;'seT~َh1j;)iFrJ ;;^;uuw2{3s{gL[fwYig[$i@8Z#aUsVvvv']N3{tm 5W7=;G7fm2R2fxv9{zvuLI|e[";BMFMףYy}8iawF;? (f?S~;w?{O#EwHCd'42GYN=m4NEBMp,*ׄcư؛@Sh_WlS j[}x>߿Ϙߗށ{]nܴFsVdڑ\8bZ";EDZz{U;=&0;H6 fl%R"`v@dF( v7,^Hkؚ}_݇m}g|mk~[; !nܴysOv\t!nM8 SN7>>|G9}z 4-7fjx`. Ꝉ>(>&(E뼽N/\7[XP~x/!if}-[Bh,Vp#|;})4/?<_awҿh3)2s QE[CʫEL % 궴D2nHSd⒭\DrcR-Ʀ֖kP4̯loxm9=џ>.[B6uz[!ZfӷE"E-Ip^af }9Ӝ/c` ͶI#)54oHS'䨿: ï}o;fڲvM;ZcJht]I-ؚxvV%מ?Vm=U8 :dr\g挓aЎVBd7Χġ]Xtyxi2vˤW8N~-';q[etR.ktV:?ʫ!aG};>_;~6j[dӿNT6k{h4Mmju*١uwTchu5ŴxEO^yPˊx~-lhPٶGӋg^ 6,^%ߖrgSLzͭ*eEC W4Sñad/rϒb2F.,ФSuyn,ogJoD-qs xEcoT^hGsl} )emn 7[Öz8d@,ίvnO:NFzWֵhN3&sxו#f~]7c;G{D%zy8jI٠àO4[7htgx;ǻImm'm6kcN.t:ݓ 鑷ѓ#oHn=V8Pq ݷvQ;vm#F)T?ZLqu'ັ7񉟋sbeB*os5]}lγc˿.u$ŚDyudjŪ |T2h2;~O%I9vK HU)"/ܗD~$ڑ$*HP(I*e$&wǩ'] %*=kI:gPFخrLk,۵,sI{dRe*G VEe.Y! \x%Y$A9v-cI@uIteN4jxoyN?kVm ]F]3bF(11fJ-ۛktlj ]wa[1][B1AIHϾᲟC:tVB|6znŮ5tmeM?a;#5x8\sw+b_sM<ݿ/s%@ڵHqI.> %f[1tq7J $; yd= ǃ5{JLOQ]lNvpa67P6OR_M6waxv>en1 3&k~oͭUDzfԕ&P97(T 퉫N#wZ)Q2*?0z-e9tS6g OdIfP}FJ-ӳʦ毋8Zg7 O_R9ĭ0{^Oqς͓W6nn ;>L^[?L>VsakCHkK}(:I<([6B2{H߸W_0(tiC5 :sI_鵮Wۼ8GչζZߢj}\⁢Xa]G>o{3+p_K.uuTE{l]]W_N0Fﯸ{c4p39c$δ kP[LqmUV4*9#&>lof]6H)~_Feg6}šNG_s0o{ktvۯ sS=;Wh\ zPzw ]kQӮծ>s><{kDwN嚃0,iDS]r.Ҳlm oGv/1~ >+r,x7T;w__1fi{W^pg)~K4uqkݹ|:p; #_>T 7юRYB '?󯁌oֳA;>BGU:{;ӄW5>3sfD`,yƸ"?Wɫi s.e;wn*?pG"dRMhӁU\:_J? f?Ou%H9I~)$HOhE>79-rwy]%Yu r3Vqa\eG2R DP{2J`~~R%`Ik#%FvQNPNvOzMڴs@܏Use[g쟨|a{]Ŗ}/;񚬤9ԬE{ݝypZd'6X}Ý/1' D2]g^ukt޶jg 9N\$Jq-lV:{Hqt0 l[oHh~ \}(>_6^0'~%LB8$N)sڿ$1K@Ym./J s=-ѽ>}> {|>}gOww>}I}7 ц7 m7 Z[(%*ݹ{Iw`|)`z4sT&T_ Kq-z㲢2p/ji$$dgvd2*}Y ;$K ߖ)qmKStHC(?[bUOUC@C$x;T?j)ZfUEOҴgPOL?9?bizCǰ嗹kSB4QcۂtNa\Wg.P@,5 ~[Pu,8]FF%x U~ p~'+ʂ˪eFV/^P˒7]J 1Db5X e)˺hH\]tW1:3"-hnn U­;B- D8(Zi a̺ddUA氌@Ps w-`UL|" F %l ߊqյ3]I7[7ٲQFpSh;| $iuLčkmjΙP;i.m0"Ol* ƾb:c,& *kmI,ɸr<N\qe*ecuYF2u7O7`b'UQ%4mD 5]u1>@bW`N emZmm2Opښ0e)GemRMP{[hv % "X]4iNd֦X6j@^v-MM-a5xqtrS`E-ݑVc;\m4y_^u!6G[#ao3o,6)0F_Urǹ|]u uú5GXi]L׬sPi8*U&h(iimΙSE'9"3_,CL#;Evl7y2IUZBkkӔ)? Nc 韛؀8.4Ǵ\V9]ll*h3:A>wu5ߑ\) 0(=2TF­QYf8xzcCUP8;>EbmMPl,-0n5Lg m7m'o4ζx16Gl; I=XJwssOօ6ONei'2eiΎi ;$˙KM'LҊ =G= d2(@Ck< QHx\7erΎou;d8sNt\ Q:TךCf4ɸ5EiC܉R)'Ö Xx7DBQ0w6"ڄ-u@vCjf OUDp7o&FCuxr%K4^?5X2-  ֻCVMS(&, sŵU6m.!Bv?6JȜ1v/!Zt;&RA^HZ4MTjڋ좛-8좶1${(wBʹu^Jh+;NdZk ܙt6{$$!$~\Sv:9:Nx)hWoXRU]c[d-{=+)x&4ZcM}[o}ڛ73*ԗ3IboR[|-Q- _Jhs"Y#vEG&.&~bKU_I|(R?'*NJ3Q).$NZ{%GR(rMdLQ78vUB);-<ʿW,įQ<ȗ,֒0~ 瞟ENjoE"'}Djo_oI|_,<'SW)N>#KO%D|ybI4YNjNW?{EB "/~.!E{ҾĿJGw<7{|1WD'ˋ0~.?="EFo~!X-o;;D B|~eqmsY"7IT/Y:K]@3F#~"_2d/Ge_#V{ci_ [_2)~ :_=c/Җ1-oX1N\=\Aa|UsGqϾt~ɘ,rGW+2I]@O&=O%X_gA{ VdV0B_֚{MpB]3dȘka/\"Տ$K<XM|,TBgՏQB?/"*T3~&!_aˉ?\q7ń&~2 g_O QW%URq5IDGdQ\KE6[xo&u-Kf֓pU,{R>__#[ׯ)Y^Oס{EP}"3ybO_D~Ayb?$"?VBGcKC~S`1YT_BR{RE>g~Im>t~ϔϙgyNr_b$W!_j2%VK-'տ93 ,< ȾPٗ~/fZx.s=i_dG‰{?b%d$T K|~(U5N23W-!S1~LWLB8{Oax>`\þ D*8/{ɪ_@W̶أ/T\JXfNQ_=O!~"&>̙3~ϙYGK%㷒s,P"BZ?:Fyt~͔dR}"_3'X%t̔=iՏ D^98=!~$!/{uEu|i6g/~!X'mQ(5dS- Eͬ ~!Id&D74~![a ij6gT8 SwDT_BEβREڿf6~0!<῅<]dߝ>ڿ.?e5s]<셋}I_ys5 T'D])ɷUQo֗EQ Bߧ=4.@_osI FUכDأb}EV {2R}BS'dF|!.r;oﲴ5~W;DBE^(M=Eze{T?oXfov/# ov DyP 1GԟoX7&+o-8_ D-;=R奄+K=1"W}!?&s=IE~jB?OxQ{|~OT?c{}9o!?m%\B9+I _Fa_ݟ6\AG"?+=|? l2Bdw4W"~Ӊ_x"O+0՟DI}YQÈߨxp'k+ Y+GSo G"~K_xbE|Ez?7Q&B#Mğ3g!Z"'}/\Y kEY/RAT`BYoYJMbu|űZQ~ ˔K]'rBN*gCt2|ix*IM[ńh]"_ė(i9/~!y{|:.޾E/r~U_L= $D_$Da_X۷Xy}b%PoӾ<)hߣ)@۷TN<3>jS"O/!s_YQ*b}1ȳJ?aZʟJ}˔_j "//!-񅊸f+&D~aXʧs vUy.n>B+ D-y{x|}{N<=G*K-lՏ'egyثcۦ}Gov]< *~Ů7aX;qCp %ٻ-?\5Zo4g4KGje(KEPvHp?m8b+/QϞ RD#,_E@EL&?PW(NV|ΞBԯZBW-S ˳=ģtB?>it⏰/s4)oE@ٲ>b /R}g8}Zĺ`ϟd}7XH!IZ/&D !Yj#D~"xo?V Dk,csk~zs(');i/O٤BWκ;,(HvPIn-=῞VF'16{o_3"D~1.Q]nQVFsU'DUdA?9_ ?Ey ":{*>>Կ*b~0ۥ"WXQ'/&4r}e"?Wh7)DI4yTOok+ϏOk裡/CB^ QĜ7k6S"~!w,hUEMQ=K?v1|+_n~ͯWEBE?~Ma=E7-L=?n)3# "O~!3,s_~8!և=ďTs"RxBy{}|}A'xؿ>I" xbz?! iz=vAz>;_A=|@wht3\E^ ?b囏IޯHO7L?_&i}e?Pח|XM>/8iOGCQ?ib!~">S}}=R~Rm_7P`su 蓶FPG7b/Q?>9+Zx؏g~ֿE'm}~AZ}gXE?9&'so'_Bk_d d_J_J,g~7AZ}h,e{?>fUpB_}s<.#i}-Y"{_li/$u J\>CD~ר\EZ}oGy}>RBo;y}l"~!wgjhȹN *(SBOw?TG7NQ=gjv1~QLs)~ 1W5>z>^(ry}H{Nj\"rR8"W@+Dn" WbO_BXx )d~7Z)ns J(_b?kiPoğ۴(o;EVB.-7y}T?= ďT+"~PBW~i^zG/Tba_Ռ k 'H99/P?GlrZ?"BSF 5sd>%9},=BpB̏?b~-<#ُ&D18}MoO=Q߈ D$~!U-k?ԯ{Qw%DETB]+Τ[俪??-?,. n%?'{,BoU{kR#bG {:owP܁a?X; ua?R?ߥz4^ϓD6Zx '_XLW} !7{أz[@o#~"rE~!TNpBԯHbDc ?Iݗ\;hߙ1;Kl _v?aku~ S~\(rK\c/Uk%"~0! {"W=Nb_z?a/\|qQxߦWA_I_P'E^Zoz0>>%_s/{WPy Wr}UA_Ϲ_W}"ﯾ&c=:%7U?{HI=?&~0!GPBG&a?{QcďVEPXB{õ_5 g"?W}"?Y)igT? ?X%~?P`B*;/#D|aX̣yqx7\|}xHmZ,a1Oz^yj"'y yTP/)-偺>I.sjI W}bd- XQp>Y+FYx؏g>ߡ12o(b70o_XB/sP^K 2ͲU?'LD)b~719TrBI_m)x򦫾7J|boI K',K3?[ 7Od iϛ/r_H<yU?H\=/VNb S"T_@H{_y5 /"DW_&?&?!w >kE֫ ZѾď!D6߱+I"'~!ڿO1\2~ Q͖eUQ'ؼF/&DOivKu$~ٗ"~aK~GDL%M|?EL9£~g ;5?͟7H D.T}">./$s%/%D\,/Q RT_H=_F|@ժDWyQS^B'L?$r+ f{G;DRlBR?EbB=Rű>T?/WI<#oxCR\HQ+xؿz|>k*kQ\u~=!owq{- 3?ȻUgGW,[俪/!D#Y{/񥊸?l?BZʧڴy) "_bW}"/%W -'D ɟ|ɉ}-/\y4~@/1ͯ?*\HB?"ߕ?TdkQ 'Z8񵊇K("iKx="BG_ل=RlS%>s~".!,1k4V }?# #D|, +'?\#_*-8#  U?9g[ʧ K|dDo,B]+S}6!_Z~~~Vy+rD~lx?O9I1a'u"fKWO1IE"{_O|"_4lQ}!a-+|hUQ0\3>sN f~Tdc)*SE>bWw.3T?agX}~h|WyW9_mH D.TpBϏ{ďTD'U_M_*r?Idř2U!JF=_Nᄈ"W~!s=_ElE]T?w=_giT?q=?@(є_yHe7'&D|>a_ ~|'?_W 1?aZڷ)~ /K"BӒۚP yL}6!ɵ~=yKy>E5 0=F|E7WjB<b}ymgK>EG{/+o [3_?7H{P}qէbmN)!/>6C 5}$}rU?PO=Zʧ_Ko8!XCGm:>Wy5?>r׶^`U^r\7v9;>;a£W-ݰzG[`J+cvhWs~_~mݢW[v]VP$Jџ\t}݂ub׭ް*Wls~qFw=\\)k` NE;MmLϣ}ӤMV.tӳD7:@Fv?nT}މwxěU>m;}.j 8->0;޵P]:;Rg:3ALU=sA]މ&2~Vf+jnB<]MךҡjDQUJj=.lz+[H"M$^j6ttWum=WgWmPXO9F}zAOγv18z+׵;憷{$ m:ԇzkXޑ;2>##wݚ%/Xpîwn?<d>cvtl!ܻMߗ <1vhx/a?_]G$ޝ~;܀|&;tCqq,=5X{^X{8Wۗz9@_hc쯫^׻"*۷N/wjQ)`?:pޗ\~OA4z.\hA4qp/xot07\F!0nWBX]l[0 (.*Eh`gcl[ l B-CHK%km GZ#P]7,*3a~Ȝ=}MW|e3< V/pנҥI`%0͑< t'={Xe]TmܥקMP-,4쎂qƭhq M@uGޝx3ƭ-"[["-;Xcx>e^)ݫyի!<6֭9*Ps-^kGp׵k^dvWd "Y[.¸هӸ%MT?V[%l 7m*+l\uvxsqrU*)=Ut8eH8",1#d6vvT4=O&橉7zz6 \ctz 'im&Ȧh,nn%'ņPs%*Sf6^ t9vLc]W<ֽi]C_YCh˾;zrCUV'i>zЛ_f.ZCuHb[5c--jڷs4 w莓o*Yd:gtq%l 3q]ݑ.(KUtQ-ߙhAؤ"X]4iNI;Zb ZZ"-@0Dz-MM-NU8۝GU-i He7FwDYZ2D͎l+أ}5e";Br4X lA9HvG6QmрD+-q'L.:ݶ9MZpٖhӲNUk-NeOU L˛Chew7j|[%xc,CFvv}wl5nHgJZBݬm 6n<}vv۔!='xLvo#MϏE++qnS&V5qtT~plZaF1pkk8xzcCUP8;(FbvMPli[hgj3C"}tHt bDZ}FS`[s'݌'(-FJ6-[[A3:+Cc`nk4kPkL}6Y";딫 5Tנd}(%oUpO1]l'L`$t1: ى3k_o}AfCv6 Ga VC.%^JͶP-ˎOoZʶD"^g,_lws7KNpn& %F/Mfuv(sN677aZfqsNf^ǯJvx24ú%իZw+5ݹܲ Jτ-;IvK6N9L.8Iy}`הک-W./|h**{<1cFCu[[S0%^i!KY>K]dKۙ};sܦPL_]љGAئMwz;3>|𠝞bڃTԻ~C;+7z&j%+9:$&td߾kj~G: odVcAὄ]oil Gq%WU+ϑKZB[Rqqƚ4/?\/,'T:;dt\UL䋵C6ǂ-:a~(ܐ6yj}r4wZ[Bќ/rmh"0assertive.base/tests/testthat/test-is-true-false-na.R0000644000176200001440000001064114001142664022346 0ustar liggesuserstest_that( "test is_false with a logical input returns true when false", { x <- c(TRUE, FALSE, NA) expected <- c(FALSE, TRUE, FALSE) actual <- assertive.base::is_false(x) expect_equal(strip_attributes(actual), expected) expect_named(actual) expect_equal(cause(actual), noquote(c("true", "", "missing"))) } ) test_that( "test is_na with a logical input returns true when NA", { x <- c(TRUE, FALSE, NA) expected <- c(FALSE, FALSE, TRUE) actual <- is_na(x) expect_equal(strip_attributes(actual), expected) expect_named(actual) expect_equal(cause(actual), noquote(c("true", "false", ""))) } ) test_that( "test is_na with a character input and no coercion returns true when not NA", { x <- c("T", "F", "0", "1", "a", "NA", NA) expected <- rep.int(c(FALSE, TRUE), c(6, 1)) actual <- is_na(x, coerce_to_logical = FALSE) expect_equal(strip_attributes(actual), expected) expect_named(actual) expect_equal( cause(actual), noquote(rep.int(c("not missing", ""), c(6, 1))) ) } ) test_that( "test is_na with a character input and coercion returns true when not 'T' or 'F'", { x <- c("T", "F", "0", "1", "a", "NA", NA) expected <- rep.int(c(FALSE, TRUE), c(2, 5)) expect_warning( actual <- is_na(x, coerce_to_logical = TRUE), "Coercing x to class .logical.\\." ) expect_equal(strip_attributes(actual), expected) expect_named(actual) expect_equal( cause(actual), noquote(rep.int(c("true", "false", ""), c(1, 1, 5))) ) } ) test_that( "test is_na with a complex input and no coercion returns true when not NA", { x <- c(0, 1, 1i, 1 + 1i, NA) expected <- rep.int(c(FALSE, TRUE), c(4, 1)) actual <- is_na(x, coerce_to_logical = FALSE) expect_equal(strip_attributes(actual), expected) expect_named(actual) expect_equal( cause(actual), noquote(rep.int(c("not missing", ""), c(4, 1))) ) } ) test_that( "test is_na with a complex input and coercion returns true when not NA", { x <- c(0, 1, 1i, 1 + 1i, NA) expected <- rep.int(c(FALSE, TRUE), c(4, 1)) expect_warning( actual <- is_na(x, coerce_to_logical = TRUE), "Coercing x to class .logical.\\." ) expect_equal(strip_attributes(actual), expected) expect_named(actual) expect_equal( cause(actual), noquote(rep.int(c("false", "true", ""), c(1, 3, 1))) ) } ) test_that( "test is_na with a list input and no coercion returns true when elements contain a single NA", { x <- list(NA, TRUE, FALSE, c(TRUE, FALSE, NA)) expected <- rep.int(c(TRUE, FALSE), c(1, 3)) actual <- is_na(x, coerce_to_logical = FALSE) expect_equal(strip_attributes(actual), expected) expect_named(actual) expect_equal( cause(actual), noquote(rep.int(c("", "not missing"), c(1, 3))) ) } ) test_that( "test is_na with a list input and coercion throw an error", { x <- list(NA, TRUE, FALSE, c(TRUE, FALSE, NA)) expect_error( is_na(x, coerce_to_logical = TRUE), "x cannot be coerced to any of these types: .logical.\\." ) } ) test_that( "test is_not_false with a logical input returns true when not false", { x <- c(TRUE, FALSE, NA) expected <- c(TRUE, FALSE, TRUE) actual <- is_not_false(x) expect_equal(strip_attributes(actual), expected) expect_named(actual) expect_equal(cause(actual), noquote(c("", "false", ""))) } ) test_that( "test is_not_na with a logical input returns true when not NA", { x <- c(TRUE, FALSE, NA) expected <- c(TRUE, TRUE, FALSE) actual <- is_not_na(x) expect_equal(strip_attributes(actual), expected) expect_named(actual) expect_equal(cause(actual), noquote(c("", "", "missing"))) } ) test_that( "test is_not_true with a logical input returns true when not true", { x <- c(TRUE, FALSE, NA) expected <- c(FALSE, TRUE, TRUE) actual <- is_not_true(x) expect_equal(strip_attributes(actual), expected) expect_named(actual) expect_equal(cause(actual), noquote(c("true", "", ""))) } ) test_that( "test is_true with a logical input returns true when true", { x <- c(TRUE, FALSE, NA) expected <- c(TRUE, FALSE, FALSE) actual <- assertive.base::is_true(x) expect_equal(strip_attributes(actual), expected) expect_named(actual) expect_equal(cause(actual), noquote(c("", "false", "missing"))) } ) assertive.base/tests/testthat/test-utils.R0000644000176200001440000001566514001155440020441 0ustar liggesuserstest_that( "to_names with a character vector returns unquoted character names", { x <- c("abc", "", "NA", NA) expected <- x actual <- to_names(x) expect_equal(actual, expected) } ) test_that( "to_names with a (double) numeric vector returns 17 sig fig 'g' formatting", { x <- with(.Machine, c(1 + double.eps, double.xmax, double.xmin, NaN, -Inf, NA)) expected <- ifelse(is.na(x), NA_real_, sprintf("%.17g", x)) actual <- to_names(x) expect_equal(actual, expected) } ) test_that( "to_names with a complex vector returns returns 17 sig fig 'g' formatting for each component", { x <- with(.Machine, c(1 + double.eps, double.xmax, double.xmin, NaN, -Inf, NA)) * (1 + 1i) expected <- ifelse(is.na(x), NA_complex_, sprintf("%.17g+%.17gi", Re(x), Im(x))) actual <- to_names(x) expect_equal(actual, expected) } ) test_that( "to_names with a list input returns deparsed object", { x <- list(NA, 1 + .Machine$double.eps, "abc", list(Inf, list("def", NA))) expected <- as.character(x) actual <- to_names(x) expect_equal(actual, expected) } ) test_that("test.coerce_to.numeric_vector_to_data_frame.returns_data_frame", { x <- 1:5 expected <- data.frame(x = x) expect_equal(suppressWarnings(coerce_to(x, "data.frame")), expected) expect_warning(coerce_to(x, "data.frame")) }) test_that( "dont_stop with multiple errors and warnings successfully runs", { expected <- list( 'stop("If you don\'t stop;")' = simpleError("If you don't stop;"), 'warning("Someone\'s gonna find yo\' ass dead (this is a warning)")' = simpleWarning("Someone's gonna find yo' ass dead (this is a warning)"), 'warning("Someone\'s gonna poison your food (this is a warning)")' = simpleWarning("Someone's gonna poison your food (this is a warning)"), 'stop("Don\'t stop, no no, you\'ll be sorry")' = simpleError("Don\'t stop, no no, you\'ll be sorry"), 'stop("Don\'t stop, thinking about tomorrow")' = simpleError("Don't stop, thinking about tomorrow"), 'stop("Don\'t stop, it\'ll soon be here")' = simpleError("Don't stop, it'll soon be here") ) actual <- dont_stop( { # With apologies to Lil' Kim stop("If you don't stop;") warning("Someone's gonna find yo' ass dead (this is a warning)") warning("Someone's gonna poison your food (this is a warning)") stop("Don't stop, no no, you'll be sorry") # Bonus errors for David, Jenny and other Fleetwood Mac fans stop("Don't stop, thinking about tomorrow") stop("Don't stop, it'll soon be here") } ) expect_identical(actual, expected) } ) test_that( "dont_stop works with objects that don't deparse to a single string", { expected <- list("function() {}" = function() {}) actual <- dont_stop( # deparse returns a character vector function() {} ) # don't test for identicality due to function environment expect_equal(actual, expected, check.environment = FALSE) } ) test_that( "get_name_in_parent works when object exists outside of function", { outside <- 1 f <- function(inside) { get_name_in_parent(inside) } expected <- "outside" actual <- f(outside) expect_identical(actual, expected) } ) test_that( "get_name_in_parent works when object doesn't exist outside of function", { f <- function(inside) { get_name_in_parent(inside) } expected <- "1" actual <- f(1) expect_identical(actual, expected) } ) test_that( "get_name_in_parent works with percent inside function call, escape_percent = TRUE", { f <- function(inside) { get_name_in_parent(inside) } expected <- "1 %%>%% exp" actual <- f(1 %>% exp) expect_identical(actual, expected) } ) test_that( "get_name_in_parent works with percent inside function call, escape_percent = FALSE", { f <- function(inside) { get_name_in_parent(inside, FALSE) } expected <- "1 %>% exp" actual <- f(1 %>% exp) expect_identical(actual, expected) } ) test_that( "merge_dots_with_list takes duplicates from ...", { expected <- list(x = 1, y = "b", z = TRUE) expect_warning( actual <- merge_dots_with_list(x = 1, y = "b", l = list(y = "c", z = TRUE)), "Duplicated arguments: y" ) expect_equal(actual, expected) } ) test_that( "merge_dots_with_list throws an error with unnamed arguments and allow_unnamed_elements = FALSE", { expect_error( merge_dots_with_list(x = 1, "b", l = list(y = "c")), "There are unnamed elements in x or y, but allow_unnamed_elements = FALSE" ) } ) test_that( "merge_dots_with_list works with unnamed arguments and allow_unnamed_elements = TRUE", { expected <- list(x = 1, y = "c", "b") actual <- merge_dots_with_list( x = 1, "b", l = list(y = "c"), allow_unnamed_elements = TRUE ) expect_equal(actual, expected) } ) test_that( "merge_dots_with_list works with no list argument", { expected <- list(x = 1, y = "b") actual <- merge_dots_with_list(x = 1, y = "b") expect_equal(actual, expected) } ) test_that( "test.parenthesise.character_input.returns_parenthesised_input", { x <- "foo" types <- eval(formals(parenthesise)$type) actual <- vapply( types, function(type) parenthesise(x, type), character(1), USE.NAMES = FALSE ) expected <- c( "(foo)", "[foo]", "{foo}", "", "\u3008foo\u3009", "- foo -", "\u2013 foo \u2013", "\u2014foo\u2014", ", foo, " ) expect_identical(actual, expected) } ) test_that("test.use_first.a_list_double_indexing.returns_contents_of_first_element", { x <- as.list(letters) expected <- "a" expect_identical(expected, suppressWarnings(use_first(x))) expect_warning(use_first(x)) }) test_that("test.use_first.a_list_single_indexing.returns_first_element", { x <- as.list(letters) expected <- list("a") expect_identical(expected, suppressWarnings(use_first(x, "["))) expect_warning(use_first(x, "[")) }) test_that("test.use_first.a_scalar.returns_x", { x <- "a" expected <- x expect_identical(expected, use_first(x)) }) test_that("test.use_first.a_vector_double_indexing.returns_first_element", { x <- letters expected <- "a" expect_identical(expected, suppressWarnings(use_first(x))) expect_warning(use_first(x)) }) test_that("test.use_first.a_vector_single_indexing.returns_first_element", { x <- letters expected <- "a" expect_identical(expected, suppressWarnings(use_first(x, "["))) expect_warning(use_first(x, "[")) }) test_that("test.use_first.empty.throws_error", { x <- NULL expect_error(use_first(x)) }) assertive.base/tests/testthat/test-conditions.R0000644000176200001440000000225414010074112021434 0ustar liggesuserstest_that( "assertionError returns a simpleError with extra classes", { expected <- structure( list(message = "Uh-oh!", call = NULL, predicate_name = NULL), class = c( "assertionError", "assertionCondition", "simpleError", "error", "condition" ) ) actual <- assertionError("Uh-oh!") expect_identical(actual, expected) } ) test_that( "assertionWarning returns a simpleWarning with extra classes", { expected <- structure( list(message = "Uh-oh!", call = NULL, predicate_name = NULL), class = c( "assertionWarning", "assertionCondition", "simpleWarning", "warning", "condition" ) ) actual <- assertionWarning("Uh-oh!") expect_identical(actual, expected) } ) test_that( "assertionMessage returns a simpleMessage with extra classes", { expected <- structure( list(message = "Uh-oh!", call = NULL, predicate_name = NULL), class = c( "assertionMessage", "assertionCondition", "simpleMessage", "message", "condition" ) ) actual <- assertionMessage("Uh-oh!") expect_identical(actual, expected) } )assertive.base/tests/testthat.R0000644000176200001440000000011014001142664016303 0ustar liggesuserslibrary(testthat) library(assertive.base) test_check("assertive.base") assertive.base/NEWS0000644000176200001440000000245714010100430013656 0ustar liggesusers0.0-9 Bug-fix + tests. 0.0-8 R 4.1 compatibility. 0.0-7 Added safe_deparse fn. Exported print_and_capture. Some moderate performance enhancements for vectorized predicates. Better feedback msg for is2 with fn and S4 inputs, and with vectorized class arg. Some more examples. 0.0-6 assertionConditions now include the name of the predicate that caused them. This predicate name is given in assertion failure messages. Byte compilation turned on (for slight performance gains). Numeric/complex values now reported with higher accuracy (17 sig digits) in vector error msgs. 0.0-5 Regression fixes to merge_dots_with_list, merge.list. Pipes inside the assertion now work (very slight breaking change to get_name_in_parent). 0.0-4 Many minor fixes and documentation updates. dont_stop can now run past multiple errors (slightly breaking change). merge.list and merge_dots_with_list deal with unnamed arguments. 0.0-3 Reverted behaviour of is_na, is_not_na to prevent breaks in dependencies. 0.0-2 Added Dutch, French, German, Greek, Hungarian, Korean, Russian, Swedish, Turkish, and Ukranian translations. Added assert_are_identical for comparing two objects. More README. 0.0-1 Content extracted from assertive 0.2-7, and tidied. assertive.base/R/0000755000176200001440000000000014001142664013367 5ustar liggesusersassertive.base/R/cause.R0000644000176200001440000001131414001142664014612 0ustar liggesusers#' Get or set the \code{"cause"} attribute #' #' Gets or sets the \code{"cause"} (of failure) attribute of a variable. #' #' @param x Any variable. #' @param value Passed to \code{gettextf} and stored in the \code{"cause"} #' attribute. #' @return The get method returns the \code{"cause"} attribute. #' @seealso \code{\link{set_cause}} #' @examples #' # Scalar case #' yn <- is_identical_to_true(FALSE) #' cause(yn) #' #' # Vector case #' yn <- is_true(c(TRUE, FALSE, NA)) #' cause(yn) #' @export cause <- function(x) { y <- attr(x, "cause") if(is.null(y)) { return(noquote(character(length(x)))) } y } #' @rdname cause #' @export `cause<-` <- function(x, value) { # Can't use is_scalar here due to dependency on this if(length(value) != 1 && length(value) != length(x)) { stop( sprintf( "The length of value should be 1 or the length of x (%d) but is %d.", length(x), length(value) ) ) } attr(x, "cause") <- noquote(as.character(value)) x } #' Set a cause and return the input #' #' Sets the cause attribute of an object and returns that object. #' @param x A variable. #' @param false_value A character vector to set the cause to, where \code{x} is #' \code{FALSE}. #' @param missing_value A character vector to set the cause to, where \code{x} is #' \code{NA}. #' @details If \code{x} is \code{TRUE} everywhere, this returns the input #' without setting a cause. Otherwise, the cause is an empty string where #' \code{x} is \code{TRUE}, \code{false_value} where it is \code{FALSE}, and #' \code{missing_value} where it is \code{NA}. #' @return \code{x}, with a new cause attribute. #' @seealso \code{\link{cause}}, \code{\link[stats]{setNames}} #' @export set_cause <- function(x, false_value, missing_value = "missing") { if(!anyNA(x) && all(x, na.rm = TRUE)) # fast version of all(!is.na(x) & x) { return(x) } is_na_x <- is.na(x) len_x <- length(x) # TRUEs cause_value <- character(len_x) # NAs if(length(missing_value) == 1) { cause_value[is_na_x] <- missing_value } else { missing_value <- rep_len(missing_value, len_x) cause_value[is_na_x] <- missing_value[is_na_x] } # FALSEs false_index <- !(x | is_na_x) # more efficient to calc than !x & !is_na_x if(length(false_value) == 1) { cause_value[false_index] <- false_value } else { false_value <- rep_len(false_value, len_x) cause_value[false_index] <- false_value[false_index] } cause(x) <- cause_value class(x) <- c("vector_with_cause", "logical") x } #' @rdname print.vector_with_cause #' @method print scalar_with_cause #' @export print.scalar_with_cause <- function(x, ...) { if(length(x) != 1L) { stop("x is malformed; it should have length 1.", domain = NA) } print(x[1]) cat("Cause of failure: ", cause(x), "\n") } #' Print methods for objects with a cause attribute #' #' Prints objects of class \code{scalar_with_cause} and #' \code{vector_with_cause}. #' @param x an object of class \code{scalar_with_cause} or #' \code{vector_with_cause}. #' @param na_ignore A logical value. If \code{FALSE}, \code{NA} values #' are printed; otherwise they do not. Like \code{na.rm} in many #' stats package functions, except that the position of the failing #' values does not change. #' @param n_to_show A natural number. The maximum number of failures #' to show. #' @param ... Currently unused. #' @method print vector_with_cause #' @importFrom utils head #' @export print.vector_with_cause <- function(x, na_ignore = FALSE, n_to_show = 10, ...) { cause_x <- cause(x) names_x <- names(x) if(is.null(names_x)) { names_x <- character(length(x)) } x <- strip_attributes(x) ok <- if(na_ignore) { # ok can be TRUE or NA; FALSE is bad x | is.na(x) } else { # ok can be TRUE; FALSE or NA is bad x & !is.na(x) } # Append first few failure values and positions to the error message. fail_index <- which(!ok) n <- length(fail_index) fail_index <- head(fail_index, n_to_show) failures <- data.frame( Position = fail_index, Value = truncate(names_x[fail_index]), Cause = unclass(cause_x[fail_index]), # See bug 15997 row.names = seq_along(fail_index) ) # Slightly convoluted way of creating message done to ensure that xgettext # creates all the translation strings msg_showing_first <- if(nrow(failures) < n) { paste0( " ", gettextf( "(showing the first %d)", nrow(failures), domain = "R-assertive.base" ) ) } else "" msg_n_failures <- ngettext( n, "There was %d failure%s:\n", "There were %d failures%s:\n", domain = "R-assertive.base" ) cat(enc2utf8(sprintf(msg_n_failures, n, msg_showing_first))) print(failures) } assertive.base/R/utils.R0000644000176200001440000003170614001142664014661 0ustar liggesusers#' Wrapper to vapply that returns booleans #' #' Wrapper to \code{\link{vapply}} for functions that return a boolean (logical #' scalar) value. #' #' @param x A vector (atomic or list). #' @param predicate A predicate (function that returns a bool) to apply. #' elementwise to \code{x}. #' @param ... Passed to \code{vapply}. #' @return A logical vector. #' @note \code{USE.NAMES} is set to \code{TRUE} #' @seealso \code{\link{vapply}}. #' @export bapply <- function(x, predicate, ...) { vapply(x, predicate, logical(1L), ..., USE.NAMES = TRUE) } #' Call a function, and give the result names. #' #' Calls a function, and names the result with the first argument. #' #' @param fn A function to call. See note below. #' @param x The first input to \code{fn}. #' @param ... Optional additional inputs to \code{fn}. #' @return The result of \code{fn(x, ...)}, with names given by the #' argument \code{x}. #' @note The function, \code{fn}, should return an object with the #' same length as the input \code{x}. For speed and simplicity, this #' isn't checked; it is up to the developer of the assertion to make #' sure that this condition holds. #' @examples #' call_and_name(is.finite, c(1, Inf, NA)) #' #' # Make sure that the output is the same size as the input. #' # Don't do this: #' dont_stop(call_and_name(isTRUE, list(TRUE, FALSE, NA))) #' # Do this instead: #' call_and_name( #' Vectorize(isTRUE, SIMPLIFY = FALSE), #' list(TRUE, FALSE, NA) #' ) #' @seealso \code{\link{cause}} and \code{\link{na}}. #' @export call_and_name <- function(fn, x, ...) { y <- fn(x, ...) dim(y) <- dim(x) names(y) <- to_names(x) y } # Lots of issues about how best to generate names! # Original behaviour was to use as.character everywhere, but high precision # wanted for numbers, so behaviour was changed to use format. This breaks # lots of tests. Here are the requirements. # - For atomic vectors, NA values should be given a missing name, not "NA" # -> Can't use deparse, format # - Numbers should be given to high precision (inc complex) # -> Can't use as.character on numbers # - Character vectors shouldn't be quoted # -> Can't use deparse # - Recursive variables should just be a deparse, but exact details not too fussy (too rare) to_names <- function(x) { # special handling for double, complex only # is.vector to prevent matching to POSIXct if(is.double(x) && is.vector(x)) { ifelse(is.na(x), NA_real_, sprintf("%.17g", x)) } else if(is.complex(x)) { ifelse(is.na(x), NA_complex_, sprintf("%.17g+%.17gi", Re(x), Im(x))) } else { as.character(x) } } #' Run code without stopping #' #' Runs code without stopping for warnings or errors. #' @param expr Code to execute. #' @return A list containing the results of evaluating each call in \code{expr}. #' @note This function is dangerous, since it overrides warnings and errors. #' Its intended use is for documenting examples of warnings and errors. #' @seealso \code{\link[base]{warning}} and \code{\link[base]{stop}} for #' generating warnings and errors respectively; \code{\link[base]{try}} and #' \code{\link[base]{conditions}} for handling them. #' @examples #' dont_stop({ #' warning("a warning") #' x <- 1 #' stop("an error") #' y <- sqrt(exp(x + 1)) #' assert_is_identical_to_true(y) #' y > 0 #' }) #' @export dont_stop <- function(expr) { this_env <- sys.frame(sys.nframe()) # Split the expression up into a list of calls subbed_expr <- substitute(expr, this_env) # Temporarily wrap expr in braces, if it isn't already brace <- quote(`{`) if(!identical(subbed_expr[[1L]], brace)) { subbed_expr <- c(brace, subbed_expr) } call_list <- as.list(subbed_expr)[-1L] # -1 to ignore brace again names(call_list) <- vapply(call_list, safe_deparse, character(1)) handler <- function(e) { e["call"] <- list(NULL) # Override the condition's call e } # Evaluate each one in turn lapply( call_list, function(calli) { tryCatch(eval(calli, this_env), warning = handler, error = handler) } ) } #' Get the name of a variable in the parent frame #' #' Gets the name of the input in the parent frame. #' #' @param x Variable to get the name of. #' @param escape_percent Logical. If \code{TRUE}, percent signs are doubled, #' making the value suitable for use with \code{sprintf} (and hence by #' \code{false} and \code{na}). #' @return A string giving the name of the input in the parent frame. #' @examples #' outside <- 1 #' f <- function(inside, escape_percent) #' { #' get_name_in_parent(inside, escape_percent) #' } #' f(outside, TRUE) #' f('10%', TRUE) #' f('10%', FALSE) #' @export get_name_in_parent <- function(x, escape_percent = TRUE) { xname <- safe_deparse( do.call( substitute, list(substitute(x), parent.frame()) ) ) if(escape_percent) { xname <- gsub("%", "%%", xname) } xname } #' Merge two lists #' #' Merges two lists, taking duplicated elements from the first list. #' @param x A list. #' @param y A list. #' @param warn_on_dupes \code{TRUE} or \code{FALSE}. Should a warning be given #' if both \code{x} and \code{y} have elements with the same name. See note. #' @param allow_unnamed_elements \code{TRUE} or \code{FALSE}. Should unnamed #' elements be allowed? #' @param ... Ignored. #' @return A list, combining elements from \code{x} and \code{y}. #' @note In the event of elements that are duplicated between \code{x} and #' \code{y}, the versions from \code{x} are used. #' @seealso \code{\link{merge_dots_with_list}}, \code{\link[base]{merge}} #' @examples #' merge( #' list(foo = 1, bar = 2, baz = 3), #' list(foo = 4, baz = 5, quux = 6) #' ) #' #' # If unnamed elements are allowed, they are included at the end #' merge( #' list("a", foo = 1, "b", bar = 2, baz = 3, "c"), #' list(foo = 4, "a", baz = 5, "b", quux = 6, "d"), #' allow_unnamed_elements = TRUE #' ) #' @method merge list #' @export merge.list <- function(x, y, warn_on_dupes = TRUE, allow_unnamed_elements = FALSE, ...) { if(length(y) == 0) return(x) y <- coerce_to(y, "list", get_name_in_parent(y)) # Get elements without names x_is_unnamed <- names_never_null(x) == "" y_is_unnamed <- names_never_null(y) == "" if(allow_unnamed_elements) { unnamed_values <- c(x[x_is_unnamed], y[y_is_unnamed]) x <- x[!x_is_unnamed] y <- y[!y_is_unnamed] } else # !allow_unnamed_elements { if(any(x_is_unnamed) || any(y_is_unnamed)) { stop("There are unnamed elements in x or y, but allow_unnamed_elements = FALSE.") } } # Now deal with named elements all_names <- c(names(x), names(y)) all_values <- c(x, y) if(anyDuplicated(all_names) > 0) { if(warn_on_dupes) { warning( "Duplicated arguments: ", toString(all_names[duplicated(all_names)]) ) } all_values <- all_values[!duplicated(all_names)] } if(allow_unnamed_elements) { all_values <- c(all_values, unnamed_values) } all_values } #' Merge ellipsis args with a list. #' #' Merges variable length ellipsis arguments to a function with a list argument. #' #' @param ... Some inputs. #' @param l A list. #' @param warn_on_dupes \code{TRUE} or \code{FALSE}. Should a warning be given #' if both \code{x} and \code{y} have elements with the same name. See note. #' @param allow_unnamed_elements \code{TRUE} or \code{FALSE}. Should unnamed #' elements be allowed? #' @note If any arguments are present in both the \code{...} and \code{l} #' arguments, the \code{...} version takes preference, and a warning is thrown. #' @return A list containing the merged inputs. #' @seealso \code{\link{merge.list}}, \code{\link[base]{merge}} #' @examples #' merge_dots_with_list( #' foo = 1, #' bar = 2, #' baz = 3, #' l = list(foo = 4, baz = 5, quux = 6) #' ) #' @export merge_dots_with_list <- function(..., l = list(), warn_on_dupes = TRUE, allow_unnamed_elements = FALSE) { dots <- list(...) l <- coerce_to(l, "list", get_name_in_parent(l)) merge(dots, l, warn_on_dupes = warn_on_dupes, allow_unnamed_elements = allow_unnamed_elements) } #' Wrap a string in brackets #' #' Parenthesise a character vector by wrapping elements in brackets, #' dashes or commas. #' @param x Character vector to wrap in parenthenses. #' @param type String naming the type of parenthesis. #' @return A character vector of the input wrapped in parentheses. #' @note English grammar terminology is awfully confusing. The verb 'to #' parenthesise' means to wrap a phrase in brackets or dashes or commas, #' thus denoting it as supplementary material that could be left out. #' A 'parenthesis' as a noun is often used as a synonym for a round bracket. #' @seealso \code{\link[base]{sQuote}} #' @examples #' paste("There were three", parenthesise(3), "mice in the experiment.") #' paste( #' "I love parmos", #' parenthesise("Teesside's finest culinary invention", "en_dashes"), #' "but they are sure to give me heart disease." #' ) #' parenthesise(letters[1:5], "curly") #' paste0( #' "The R language", #' parenthesise("an offshoot of S and Scheme", "commas"), #' "is quite good for data analysis." #' ) #' @export parenthesize <- function(x, type = c("round_brackets", "square_brackets", "curly_brackets", "angle_brackets", "chevrons", "hyphens", "en_dashes", "em_dashes", "commas")) { type <- match.arg(type) x <- coerce_to(x, "character", get_name_in_parent(x)) before <- switch( type, round_brackets = "(", square_brackets = "[", curly_brackets = "{", angle_brackets = "<", chevrons = "\u3008", hyphens = "- ", en_dashes = "\u2013 ", em_dashes = "\u2014", commas = ", " ) after <- switch( type, round_brackets = ")", square_brackets = "]", curly_brackets = "}", angle_brackets = ">", chevrons = "\u3009", hyphens = " -", en_dashes = " \u2013", em_dashes = "\u2014", commas = ", " ) paste0(before, x, after) } #' @rdname parenthesize #' @export parenthesise <- parenthesize #' Print a variable and capture the output #' #' Prints a variable and captures the output, collapsing the value to a single #' string. #' @param x A variable. #' @param ... Arguments passed to \code{\link[base]{print}} methods. #' @return A string. #' @seealso \code{\link[base]{print}}, \code{\link[utils]{capture.output}} #' @examples #' # This is useful for including data frames in warnings or errors #' message("This is the sleep dataset:\n", print_and_capture(sleep)) #' @importFrom utils capture.output #' @export print_and_capture <- function(x, ...) { # call to enc2utf8 is a workaround for # https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16539 enc2utf8(paste(capture.output(print(x, ...)), collapse = "\n")) } #' Safe version of deparse #' #' A version of \code{\link[base]{deparse}} that is guaranteed to always return #' a single string. #' @param expr Any R expression. #' @param ... Passed to \code{\link[base]{deparse}}. #' @return A character vector or length one. #' @note By default the RStudio IDE truncates output in the console at 1000 #' characters. Consequently, if you use \code{safe_deparse} on large or complex #' objects, you won't see the full value. You can change the setting using #' Tools -> "Global Options..." -> Code -> Display -> Console -> "Limit length #' of lines displayed in console to:". #' @examples #' # safe_deparse only differs from deparse when the deparse string is longer #' # than width.cutoff #' deparse(CO2, width.cutoff = 500L) # has length 6 #' safe_deparse(CO2) # has length 1 #' @export safe_deparse <- function(expr, ...) { paste0(deparse(expr, width.cutoff = 500L, ...), collapse = "") } #' Strip all attributes from a variable #' #' Strips all the attributes from a variable. #' #' @param x Input to strip. #' @return \code{x}, without attributes. #' @examples #' x <- structure(c(foo = 1, bar = 2), some_attr = 3) #' x2 <- strip_attributes(x) #' attributes(x) #' attributes(x2) #' @export strip_attributes <- function(x) { attributes(x) <- NULL x } #' Only use the first element of a vector #' #' If the input is not scalar, then only the first element is returned, #' with a warning. #' #' @param x Input that should be scalar. #' @param indexer Either double indexing, \code{"[["} (the default) or #' single indexing \code{"["}. #' @param .xname Not intended to be used directly. #' @return If \code{x} is scalar, it is returned unchanged, otherwise #' only the first element is returned, with a warning. #' @examples #' dont_stop(use_first(1:5)) #' @export use_first <- function(x, indexer = c("[[", "["), .xname = get_name_in_parent(x)) { len_x <- length(x) # Can't use assert_is_non_empty, is_scalar in next lines because those # functions calls this one. if(len_x == 0L) { stop(sprintf("%s has length 0.", .xname)) } if(len_x == 1L) { return(x) } indexer <- match.fun(match.arg(indexer)) x1 <- indexer(x, 1L) warning( sprintf("Only the first value of %s (= %s) will be used.", .xname, as.character(x1)), call. = FALSE ) x1 } assertive.base/R/zzz.R0000644000176200001440000000012114001142664014341 0ustar liggesusers.onLoad <- function(libname, pkgname) { options(assertive.severity = "stop") } assertive.base/R/engine.R0000644000176200001440000001130514003332235014754 0ustar liggesusers#' Throws an error if a condition isn't met #' #' The workhorse of the package that creates an assertion from a predicate. #' If a condition isn't met, then an error is thrown. This function is exported #' for use by package developers so that they can create their own assert #' functions. #' #' @param predicate Function that returns a logical value (possibly #' a vector). #' @param ... Passed to the \code{predicate} function. #' @param msg The error message, in the event of failure. #' @param what Either 'all' or 'any', to reduce vectorised tests to a #' single value. #' @param na_ignore A logical value. If \code{FALSE}, \code{NA} values #' cause an error; otherwise they do not. Like \code{na.rm} in many #' stats package functions, except that the position of the failing #' values does not change. #' @param severity How severe should the consequences of the assertion be? #' Either \code{"stop"}, \code{"warning"}, \code{"message"}, or \code{"none"}. #' @return \code{FALSE} with the attribute \code{message}, as provided #' in the input. #' @note Missing values are considered as \code{FALSE} for the purposes of #' whether or not an error is thrown. #' @examples #' # Basic usage is like do.call; pass a predicate and the arguments to it. #' dont_stop(assert_engine(is_true, c(TRUE, FALSE, NA))) #' #' # Customise the error message #' dont_stop( #' assert_engine(is_true, c(TRUE, FALSE, NA), msg = "Not everything is true") #' ) #' #' # Only fail when no values match the predicate's conditions #' dont_stop(assert_engine(is_true, logical(3), what = "any")) #' #' # You can use base predicates, but the error message isn't as informative #' dont_stop(assert_engine(is.matrix, 1:5)) #' #' # Reduce the severity of failure #' assert_engine(is_true, c(TRUE, FALSE, NA), severity = "message") #' #' @export assert_engine <- function(predicate, ..., msg = "The assertion failed.", what = c("all", "any"), na_ignore = FALSE, severity = c("stop", "warning", "message", "none")) { handler_type <- match.arg(severity) dots <- list(...) return_value <- if(length(dots) > 0) dots[[1]] else NULL if(handler_type == "none") { return(invisible(return_value)) } what <- match.fun(match.arg(what)) predicate_name <- get_name_in_parent(predicate) ok <- predicate(...) if(inherits(ok, "scalar_with_cause")) { if(!isTRUE(ok)) { if(missing(msg)) { msg <- cause(ok) } give_feedback(handler_type, msg, predicate_name) } } else # inherits(ok, "vector_with_cause") { really_ok <- if(na_ignore) { # ok can be TRUE or NA; FALSE is bad ok | is.na(ok) } else { # ok can be TRUE; FALSE or NA is bad ok & !is.na(ok) } if(!what(really_ok)) { # Append first few failure values and positions to the error message. msg <- paste(enc2utf8(msg), print_and_capture(ok), sep = "\n") give_feedback(handler_type, msg, predicate_name) } } invisible(return_value) } give_feedback <- function(handler_type, msg, predicate_name) { handler <- match.fun( handler_type ) ass_condition <- switch( handler_type, stop = assertionError, warning = assertionWarning, message = assertionMessage ) # Throw error/warning/message caller <- if(sys.nframe() >= 3) { sys.call(-3) } else { NULL } # UTF-8 characters do not display correctly under Windows for some # LC_CTYPE locale values, but there isn't much assertive can do about that. # https://stackoverflow.com/q/32696241/134830 handler(ass_condition(paste(predicate_name, msg, sep = " : "), caller, predicate_name)) } #' FALSE, with a cause of failure. #' #' Always returns the value \code{FALSE}, with a cause attribute. #' #' @param ... Passed to \code{gettextf} to create a cause of failure message. #' @return \code{FALSE} with the attribute \code{cause}, as provided #' in the input. #' @seealso \code{\link{cause}} and \code{\link{na}}. #' @export false <- function(...) { msg <- if(nargs() > 0L) sprintf(...) else "" x <- FALSE cause(x) <- msg[1] class(x) <- c("scalar_with_cause", "logical") x } #' NA, with a cause of failure. #' #' Always returns the value (logical) \code{NA}, with a cause attribute. #' #' @param ... Passed to \code{gettextf} to create a cause of failure message. #' @return \code{NA} with the attribute \code{cause}, as provided #' in the input. #' @seealso \code{\link{cause}} and \code{\link{false}}. #' @export na <- function(...) { msg <- if(nargs() > 0L) sprintf(...) else "" x <- NA cause(x) <- msg[1] class(x) <- c("scalar_with_cause", "logical") x } assertive.base/R/is-true-false-na.R0000644000176200001440000000350314001142664016567 0ustar liggesusers#' @rdname Truth #' @export is_false <- function(x, .xname = get_name_in_parent(x)) { x <- coerce_to(x, "logical", .xname) call_and_name( function(x) { is_na_x <- is.na(x) ok <- !(x | is_na_x) # same as !x & !is_na_x set_cause(ok, ifelse(is_na_x, "missing", "true")) }, x ) } #' @rdname Truth #' @export is_na <- function(x, coerce_to_logical = FALSE, .xname = get_name_in_parent(x)) { call_and_name( function(x) { if(coerce_to_logical) { x <- coerce_to(x, "logical", .xname) } ok <- is.na(x) if(is.logical(x)) { set_cause(ok, ifelse(x, "true", "false")) } else { set_cause(ok, "not missing") } }, x ) } #' @rdname Truth #' @export is_not_na <- function(x, coerce_to_logical = FALSE, .xname = get_name_in_parent(x)) { call_and_name( function(x) { if(coerce_to_logical) { x <- coerce_to(x, "logical", .xname) } ok <- !is.na(x) set_cause(ok, "missing") }, x ) } #' @rdname Truth #' @export is_not_false <- function(x, .xname = get_name_in_parent(x)) { x <- coerce_to(x, "logical", get_name_in_parent(x)) call_and_name( function(x) { ok <- x | is.na(x) set_cause(ok, "false") }, x ) } #' @rdname Truth #' @export is_not_true <- function(x, .xname = get_name_in_parent(x)) { x <- coerce_to(x, "logical", .xname) call_and_name( function(x) { ok <- !x | is.na(x) set_cause(ok, "true") }, x ) } #' @rdname Truth #' @export is_true <- function(x, .xname = get_name_in_parent(x)) { x <- coerce_to(x, "logical", .xname) call_and_name( function(x) { is_na_x <- is.na(x) ok <- x & !is_na_x set_cause(ok, ifelse(is_na_x, "missing", "false")) }, x ) } assertive.base/R/are-identical.R0000644000176200001440000000450014001142664016212 0ustar liggesusers#' Are the inputs identical? #' #' Checks if the inputs are identical. #' @param x An R object or expression. #' @param y Another R object or expression. #' @param allow_attributes If \code{TRUE}, The attributes of \code{x} and #' \code{y} are allowed to differ. #' @param ... Some R expressions, deprecated. #' @param l A list of R expressions, deprecated. #' @param .xname Not intended to be used directly. #' @param .yname Not intended to be used directly. #' @param severity How severe should the consequences of the assertion be? #' Either \code{"stop"}, \code{"warning"}, \code{"message"}, or \code{"none"}. #' @return \code{are_identical} returns \code{TRUE} if \code{x} and \code{y} #' are identical. The \code{assert_*} function throws an error on failure. #' #' The legacy function \code{are_identical_legacy} allows an arbitrary number #' of inputs and returns a symmetric square logical matrix which is \code{TRUE} #' where pairs of inputs are identical. (The new version of the function #' is easier to work with, and it is recommended that you switch your code to #' it.) #' @seealso \code{\link[base]{identical}}, #' \code{\link[assertive.properties]{are_same_length}} #' @examples #' x <- 1:5 #' are_identical(c(1, -1), cos(c(0, pi))) #' assertive.base::dont_stop(assert_are_identical(c(1, 1), cos(c(0, pi)))) #' @export are_identical <- function(x, y, allow_attributes =FALSE, .xname = get_name_in_parent(x), .yname = get_name_in_parent(y)) { if(allow_attributes) { x <- strip_attributes(x) y <- strip_attributes(y) } if(!identical(x, y)) { return( false( gettext("%s and %s are not identical."), .xname, .yname ) ) } TRUE } #' @rdname are_identical #' @export are_identical_legacy <- function(..., l = list()) { envir <- parent.frame() inputs <- as.list(match.call())[-1] inputs_in_list <- as.list(inputs$l)[-1] inputs <- c(inputs[names(inputs) != "l"], inputs_in_list) input_pairs <- expand.grid(expr1 = inputs, expr2 = inputs) identicality <- apply( input_pairs, 1, function(row) { with( row, identical( eval(expr1, envir = envir), eval(expr2, envir = envir) ) ) } ) matrix( identicality, nrow = nargs(), dimnames = list(inputs, inputs) ) } assertive.base/R/assert-are-identical.R0000644000176200001440000000267414001142664017523 0ustar liggesusers#' @rdname are_identical #' @export assert_are_identical <- function(x, y, allow_attributes = FALSE, severity = getOption("assertive.severity", "stop")) { assert_engine( are_identical, x, y = y, .xname = get_name_in_parent(x), .yname = get_name_in_parent(y), severity = severity ) } #' @rdname are_identical #' @export assert_all_are_identical_legacy <- function(..., l = list()) { # Nasty reimplementation of functionality since assert_engine doesn't work # ... inputs right now. ok <- are_identical_legacy(..., l = list()) if(!all(ok)) { handler_type <- match.arg( getOption("assertive.severity"), c("stop", "warning", "message", "none") ) if(handler_type == "none") return() handler <- match.fun(handler_type) handler( "The expressions ", toString(as.list(match.call())[-1]), " are not all identical.", call. = FALSE ) } } #' @rdname are_identical #' @export assert_any_are_identical_legacy <- function(..., l = list()) { # Also nasty. ok <- are_identical_legacy(..., l = list()) if(!any(ok)) { handler_type <- match.arg( getOption("assertive.severity"), c("stop", "warning", "message", "none") ) if(handler_type == "none") return() handler <- match.fun(handler_type) handler( "The expressions ", toString(as.list(match.call())[-1]), " are all not identical.", call. = FALSE ) } } assertive.base/R/coercion.R0000644000176200001440000001057514001142664015323 0ustar liggesusers#' Alternative version of is #' #' If a function named \code{is.class} exists, call \code{is.class(x)}. #' If not, call \code{is(x, class)}. #' @param x Input to check. #' @param class Target class that \code{x} maybe belong to. #' @param .xname Not intended to be used directly. #' @return \code{TRUE} if x belongs to the class and \code{FALSE} #' otherwise. #' @seealso \code{\link[methods]{is}}, and #' \code{\link[assertive.types]{assert_is_all_of}} for the corresponding assert fns. #' @examples #' is2(1:5, "character") #' is2(matrix(1:5), "character") #' is2(1:5, c("character", "list", "numeric")) #' is2(mean, c("function", "data.frame")) #' @importFrom methods is #' @export is2 <- function(x, class, .xname = get_name_in_parent(x)) { # Can't use is_empty in next line because that function calls this one. if(length(class) == 0L) stop("You must provide a class.") if(length(class) > 1L) { return( set_cause( bapply(class, function(cl) is2(x, cl, "")), sprintf("%s is not '%s'", type_description(x), class) ) ) } ok <- tryCatch( { is.class <- match.fun(paste0("is.", class)) is.class(x) }, error = function(e) { is(x, class) } ) if(!ok) { return( false( "%s is not of class '%s'; it has %s.", .xname, class, type_description(x) ) ) } TRUE } #' Coerce variable to a different class #' #' Coerce the input to a different class, with a warning. More reliable then #' \code{\link[methods]{as}}, and supports coercion to multiple classes. #' #' @param x Input to coerce. #' @param target_class The desired class of x. Multiple values allowed (see #' note). #' @param .xname Not intended to be used directly. #' @return The input \code{x} after attempted coercion to the target class. #' @note If x does not already have the target class, a warning is given #' before coercion. #' The function will try and convert the \code{x} to each of the classes given #' in \code{target_class}, in order, until it succeeds or runs out of classes #' to try. It will first try and convert \code{x} using a dedicated #' \code{as.target_class} function if that exists. If it does not exist, or #' throws an error then \code{coerce_to} will try to use #' \code{as(x, target_class)}. #' @seealso \code{\link[methods]{is}} and \code{\link[methods]{as}}. #' @examples #' # Numbers can be coerced to characters but not to calls. #' dont_stop(coerce_to(1:5, c("call", "character"))) #' @importFrom methods as #' @export coerce_to <- function(x, target_class, .xname = get_name_in_parent(x)) { # Can't use is_empty in next line because that function calls this one. if(length(target_class) == 0L) { stop("You must provide a class.") } if(!is.character(target_class)) { stop("target_class should be a character vector.") } for(this_class in target_class) { if(!is2(x, this_class)) { warning( sprintf( "Coercing %s to class %s.", .xname, sQuote(this_class) ), call. = FALSE ) } tryCatch( { as.this_class <- match.fun(paste0("as.", this_class)) return(as.this_class(x)) }, error = function(e) { # as.this_class doesn't exist; try as(, "this_class") instead tryCatch( return(as(x, this_class)), error = function(e) { # Can't coerce to this class; warn and move to next class warning( sprintf( "%s cannot be coerced to type %s.", .xname, sQuote(this_class) ), call. = FALSE ) } ) } ) } # Nothing worked; throw an error stop( sprintf( "%s cannot be coerced to any of these types: %s.", .xname, toString(sQuote(target_class)) ) ) } #' Describe the type of object #' #' Get the class or mode (for arrays). #' @param x A variable. #' @return A string. #' @noRd type_description <- function(x) { if(is.array(x)) { sprintf(sprintf("class '%s %s'", class(x[FALSE]), toString(class(x)))) } else if(is.function(x)) { sprintf(sprintf("class '%s %s'", typeof(x), toString(class(x)))) } else if(isS4(x)) { sprintf(sprintf("S4 class '%s'", toString(class(x)))) } else { sprintf("class '%s'", toString(class(x))) } } assertive.base/R/assert-is-true-false-na.R0000644000176200001440000001240014001142664020062 0ustar liggesusers#' @rdname Truth #' @export assert_all_are_false <- function(x, severity = getOption("assertive.severity", "stop")) { msg <- gettextf( "The values of %s are not all FALSE.", get_name_in_parent(x), domain = "R-assertive.base" ) assert_engine( is_false, x, msg = msg, .xname = get_name_in_parent(x), severity = severity ) } #' @rdname Truth #' @export assert_any_are_false <- function(x, severity = getOption("assertive.severity", "stop")) { msg <- gettextf( "The values of %s are never FALSE.", get_name_in_parent(x), domain = "R-assertive.base" ) assert_engine( is_false, x, msg = msg, what = "any", .xname = get_name_in_parent(x), severity = severity ) } #' @rdname Truth #' @export assert_all_are_na <- function(x, severity = getOption("assertive.severity", "stop")) { msg <- gettextf( "The values of %s are not all NA.", get_name_in_parent(x), domain = "R-assertive.base" ) assert_engine( is_na, x, coerce_to_logical = FALSE, msg = msg, .xname = get_name_in_parent(x), severity = severity ) } #' @rdname Truth #' @export assert_any_are_na <- function(x, severity = getOption("assertive.severity", "stop")) { msg <- gettextf( "The values of %s are never NA.", get_name_in_parent(x), domain = "R-assertive.base" ) assert_engine( is_na, x, coerce_to_logical = FALSE, msg = msg, what = "any", .xname = get_name_in_parent(x), severity = severity ) } #' @rdname Truth #' @export assert_all_are_true <- function(x, severity = getOption("assertive.severity", "stop")) { msg <- gettextf( "The values of %s are not all TRUE.", get_name_in_parent(x), domain = "R-assertive.base" ) assert_engine( is_true, x, msg = msg, .xname = get_name_in_parent(x), severity = severity ) } #' @rdname Truth #' @export assert_any_are_true <- function(x, severity = getOption("assertive.severity", "stop")) { msg <- gettextf( "The values of %s are never TRUE.", get_name_in_parent(x), domain = "R-assertive.base" ) assert_engine( is_true, x, msg = msg, what = "any", .xname = get_name_in_parent(x), severity = severity ) } # Negations #' @rdname Truth #' @export assert_all_are_not_false <- function(x, severity = getOption("assertive.severity", "stop")) { msg <- gettextf( "The values of %s are sometimes FALSE.", get_name_in_parent(x), domain = "R-assertive.base" ) assert_engine( is_not_false, x, msg = msg, .xname = get_name_in_parent(x), severity = severity ) } #' @rdname Truth #' @export assert_any_are_not_false <- function(x, severity = getOption("assertive.severity", "stop")) { msg <- gettextf( "The values of %s are all FALSE.", get_name_in_parent(x), domain = "R-assertive.base" ) assert_engine( is_not_false, x, msg = msg, what = "any", .xname = get_name_in_parent(x), severity = severity ) } #' @rdname Truth #' @export assert_all_are_not_na <- function(x, severity = getOption("assertive.severity", "stop")) { msg <- gettextf( "The values of %s are sometimes NA.", get_name_in_parent(x), domain = "R-assertive.base" ) assert_engine( is_not_na, x, coerce_to_logical = FALSE, msg = msg, .xname = get_name_in_parent(x), severity = severity ) } #' @rdname Truth #' @export assert_any_are_not_na <- function(x, severity = getOption("assertive.severity", "stop")) { msg <- gettextf( "The values of %s are all NA.", get_name_in_parent(x), domain = "R-assertive.base" ) assert_engine( is_not_na, x, coerce_to_logical = FALSE, msg = msg, what = "any", .xname = get_name_in_parent(x), severity = severity ) } #' @rdname Truth #' @export assert_all_are_not_true <- function(x, severity = getOption("assertive.severity", "stop")) { msg <- gettextf( "The values of %s are sometimes TRUE.", get_name_in_parent(x), domain = "R-assertive.base" ) assert_engine( is_not_true, x, msg = msg, .xname = get_name_in_parent(x), severity = severity ) } #' @rdname Truth #' @export assert_any_are_not_true <- function(x, severity = getOption("assertive.severity", "stop")) { msg <- gettextf( "The values of %s are all TRUE.", get_name_in_parent(x), domain = "R-assertive.base" ) assert_engine( is_not_true, x, msg = msg, what = "any", .xname = get_name_in_parent(x), severity = severity ) } assertive.base/R/is-identical-to-true-false-na.R0000644000176200001440000000255414001142664021146 0ustar liggesusers#' @rdname Truth #' @export is_identical_to_false <- function(x, allow_attributes = FALSE, .xname = get_name_in_parent(x)) { if(allow_attributes) { x <- strip_attributes(x) } if(!identical(FALSE, x)) { msg <- gettextf( "%s is not identical to FALSE; its value is %s.", .xname, safe_deparse(x), domain = "R-assertive.base" ) return(false(msg)) } TRUE } #' @rdname Truth #' @export is_identical_to_na <- function(x, allow_attributes = FALSE, .xname = get_name_in_parent(x)) { if(allow_attributes) { x <- strip_attributes(x) } if(!identical(NA, x) && !identical(NA_real_, x) && !identical(NA_character_, x) && !identical(NA_integer_, x) && !identical(NA_complex_, x)) { msg <- gettextf( "%s is not identical to NA; its value is %s.", .xname, safe_deparse(x), domain = "R-assertive.base" ) return(false(msg)) } TRUE } #' @rdname Truth #' @export is_identical_to_true <- function(x, allow_attributes = FALSE, .xname = get_name_in_parent(x)) { if(allow_attributes) { x <- strip_attributes(x) } if(!identical(TRUE, x)) { msg <- gettextf( "%s is not identical to TRUE; its value is %s.", .xname, safe_deparse(x), domain = "R-assertive.base" ) return(false(msg)) } TRUE } assertive.base/R/conditions.R0000644000176200001440000000425114010067526015670 0ustar liggesusers#' Condition classes #' #' Error, warning, and message classes derived from their simple equivalents. #' @param message A string describing the problem. #' @param call A call describing the source of the condition. #' @param predicate_name A string naming the predicate that was called when the #' condition occured. #' @return An object of class \code{assertionError}, \code{assertionWarning}, or #' \code{assertionMessage}. #' @note These objects behave the same as the standard-issue \code{simpleError}, #' \code{simpleWarning}, and \code{simpleMessage} objects from base-R. The #' extra class allows you to provide custom handling for assertions inside #' \code{tryCatch}. #' @examples #' tryCatch( #' assert_all_are_true(FALSE), #' error = function(e) #' { #' if(inherits(e, "assertionCondition")) #' { #' # Handle assertions #' message("This is an assertion condition.") #' #' # Handle assertions cause by a specific predicate #' if(e$predicate_name == "is_true") #' { #' } #' } else #' { #' # Handle other error types #' } #' } #' ) #' @export assertionError <- function(message, call = NULL, predicate_name = NULL) { aerr <- list( message = as.character(message), call = call, predicate_name = predicate_name ) class(aerr) <- c( "assertionError", "assertionCondition", "simpleError", "error", "condition" ) aerr } #' @rdname assertionError #' @export assertionWarning <- function(message, call = NULL, predicate_name = NULL) { awrn <- list( message = as.character(message), call = call, predicate_name = predicate_name ) class(awrn) <- c( "assertionWarning", "assertionCondition", "simpleWarning", "warning", "condition" ) awrn } #' @rdname assertionError #' @export assertionMessage <- function(message, call = NULL, predicate_name = NULL) { amsg <- list( message = as.character(message), call = call, predicate_name = predicate_name ) class(amsg) <- c( "assertionMessage", "assertionCondition", "simpleMessage", "message", "condition" ) amsg } assertive.base/R/internal.R0000644000176200001440000000145714001142664015335 0ustar liggesusersmerge.NULL <- function(x, y, ...) { return(y) } names_never_null <- function(x) { nms <- names(x) if(is.null(nms)) { nms <- character(length(x)) } nms } #' Truncate a string #' #' Truncates a character vector to have a maximum length. #' @param x A character vector, or something coercible to one. #' @param width A positive integer. #' @return A character vector #' @seealso \code{\link[base]{abbreviate}} #' @examples #' assertive.base:::truncate(c("abcd", "efghi", "jklmno", "pqrstuv"), 5) #' @noRd truncate <- function(x, width = getOption("width")) { x <- as.character(x) ifelse( nchar(x) > width, # paste0(substring(x, 1, width - 1), "\u2026") would be better, but some # setups don't display unicode properly. paste0(substring(x, 1, width - 3), "..."), x ) } assertive.base/R/assert-identical-to-true-false-na.R0000644000176200001440000001145614001142664022035 0ustar liggesusers#' Is the input TRUE/FALSE/NA? #' #' Checks to see if the input is \code{TRUE}, \code{FALSE} or \code{NA}. #' #' @param x Input to check. See note. #' @param allow_attributes If \code{TRUE}, a scalar value of \code{TRUE} #' with attributes is allowed. #' @param coerce_to_logical Logical: should the input be coerced to logical #' before checking? See note. #' @param .xname Not intended to be used directly. #' @param severity How severe should the consequences of the assertion be? #' Either \code{"stop"}, \code{"warning"}, \code{"message"}, or \code{"none"}. #' @note \code{is_identical_to_true} wraps the base function \code{isTRUE}, #' providing more information on failure. Likewise, #' \code{is_identical_to_false} checks that the input is identical to FALSE. If #' \code{allow_attributes} is \code{TRUE}, a scalar value of \code{TRUE} with #' attributes is allowed. \code{is_true} and \code{is_false} are vectorized, #' returning \code{TRUE} when the inputs are \code{TRUE} and \code{FALSE} #' respectively. #' #' The for \code{is_true}, \code{is_false}, \code{is_not_true} and #' \code{is_not_false}, \code{x} argument will be coerced to be a logical vector #' if it isn't already. #' #' Coercion to logical is optional for \code{is_na} and \code{is_not_na}. If #' you do coerce, it means that \code{is_na} differs in behaviour from #' \code{base::is.na} for character vector, list and data frame inputs. To #' replicate the behaviour of \code{is.na}, ensure the argument #' \code{coerce_to_logical} is \code{FALSE} (this is the default). #' #' Note that in assertive version 0.1-4 and prior, #' \code{is_identical_to_true/false} were named \code{is_true/false} and the #' vectorized versions were not present. #' @return The \code{is*} functions return \code{TRUE} if the input is #' \code{TRUE}/\code{FALSE}. The \code{assert_*} functions return nothing but #' throw an error if the corresponding \code{is_*} function returns #' \code{FALSE}. #' @seealso \code{\link[base]{isTRUE}}. #' @examples #' # Checks against logical values using base::identical #' assert_is_identical_to_true(TRUE) #' assert_is_identical_to_false(FALSE) #' assert_is_identical_to_na(NA) #' #' # Other NA types match #' assert_is_identical_to_na(NA_complex_) #' #' # NaN is not NA #' dont_stop(assert_is_identical_to_na(NaN)) #' #' # For a slightly less strict test, you can ignore attributes #' assert_is_identical_to_true(c(truth = TRUE), allow_attributes = TRUE) #' assert_is_identical_to_false(matrix(FALSE), allow_attributes = TRUE) #' assert_is_identical_to_na(structure(NA, class = "nanana"), allow_attributes = TRUE) #' #' # Vectorized predicates (package name explicitly given to prevent #' # problems with testthat name clash) #' x <- c(TRUE, FALSE, NA) #' assertive.base::is_true(x) #' assertive.base::is_false(x) #' is_na(x) #' #' # ...and their opposites #' is_not_true(x) #' is_not_false(x) #' is_not_na(x) #' #' # Check that at least one element fits the condition #' assert_any_are_true(x) #' assert_any_are_false(x) #' assert_any_are_na(x) #' #' # These checks should fail: #' dont_stop({ #' assert_is_identical_to_true(c(truth = TRUE)) #' assert_is_identical_to_true(1) #' assert_is_identical_to_true(c(TRUE, TRUE)) #' assert_is_identical_to_false(matrix(FALSE)) #' assert_is_identical_to_na(structure(NA, class = "nanana")) #' assert_all_are_true(x) #' assert_all_are_false(x) #' assert_all_are_na(x) #' }) #' #' # base::is.na has non-standard behaviour for data.frames and lists. #' # is_na and is_not_na coerce to logical vectors (except character input). #' # unlist the input or use an apply function. #' d <- data.frame( #' x = c(TRUE, FALSE, NA), #' y = c(0, NA, 2), #' z = c("a", "NA", NA) #' ) #' is.na(d) #' is_na(unlist(d)) #' @name Truth NULL #' @rdname Truth #' @export assert_is_identical_to_false <- function(x, allow_attributes = FALSE, severity = getOption("assertive.severity", "stop")) { assert_engine( is_identical_to_false, x, allow_attributes = allow_attributes, .xname = get_name_in_parent(x), severity = severity ) } #' @rdname Truth #' @export assert_is_identical_to_na <- function(x, allow_attributes = FALSE, severity = getOption("assertive.severity", "stop")) { assert_engine( is_identical_to_na, x, allow_attributes = allow_attributes, .xname = get_name_in_parent(x), severity = severity ) } #' @rdname Truth #' @export assert_is_identical_to_true <- function(x, allow_attributes = FALSE, severity = getOption("assertive.severity", "stop")) { assert_engine( is_identical_to_true, x, allow_attributes = allow_attributes, .xname = get_name_in_parent(x), severity = severity ) } assertive.base/MD50000644000176200001440000000777514010150412013504 0ustar liggesusers7621141184a0eef41f6ad3df239ff0f5 *DESCRIPTION 2d0578541ff8213557adcb1bb3fcac85 *NAMESPACE a7930f35d9dbd628dd855ea9a4f91ba8 *NEWS 118db3cd6e7a125ecac9651836574528 *R/are-identical.R ffda0810ff89d4aa4dd87e65fbd7c165 *R/assert-are-identical.R f87bff373fa057da7784c88ae20ba782 *R/assert-identical-to-true-false-na.R 9f205fd0d36f4cf9d6ed7f2a55c0898e *R/assert-is-true-false-na.R 5086dd0b626c8650fac17bad08a3ed61 *R/cause.R e836cc5d0c2c99d9461ec8ef2db8ca63 *R/coercion.R 5a66a8a28073ee3108c316b921794e7e *R/conditions.R 769e6a46455d0c2328a451b1c155ca65 *R/engine.R 7cec7387215a94af127a7f254740ec56 *R/internal.R 24ea87c34be4a30f9c1a5691393e447f *R/is-identical-to-true-false-na.R ffaec64534aa2cbc0c7d926884c02993 *R/is-true-false-na.R fab5fb5788ada84bd593eb2587f00024 *R/utils.R 996f107e5dc8e859870480e44ce8d2e1 *R/zzz.R f6470d0be267adb39a180b96ebed52b3 *README.md be15868a662f5557654faf0cf8d6fef6 *inst/po/de/LC_MESSAGES/R-assertive.base.mo 874ffb55ce36b7448a6157208dddd2f6 *inst/po/el/LC_MESSAGES/R-assertive.base.mo 2b4f71422d47d81f60f09f1546d7af73 *inst/po/fr/LC_MESSAGES/R-assertive.base.mo 4b8ecdb9928ce0afa303787ed69bbfe2 *inst/po/hu/LC_MESSAGES/R-assertive.base.mo d32acd1f5bb9c27621a965719e6525f5 *inst/po/ko/LC_MESSAGES/R-assertive.base.mo bd952df6360b0401e7b77e9b13e5b08f *inst/po/kr/LC_MESSAGES/R-assertive.base.mo b7da529fa6cd99789a5b172a0a385e80 *inst/po/nl/LC_MESSAGES/R-assertive.base.mo c920303640ae1b17c1c34dfda959ded9 *inst/po/ru/LC_MESSAGES/R-assertive.base.mo f570cec665bb5d0cb473a76c9bc79573 *inst/po/sv/LC_MESSAGES/R-assertive.base.mo 1b471d66af00ca6e09d956602461a7ce *inst/po/tr/LC_MESSAGES/R-assertive.base.mo 16ec298f72046373cee47e4f16d34fb8 *inst/po/ua/LC_MESSAGES/R-assertive.base.mo 2b47b3304c5c56fdaa3a8affc58c0691 *inst/po/uk/LC_MESSAGES/R-assertive.base.mo 28cce55f9fdd540ac43dc33a6fe1d910 *man/Truth.Rd e9b90a80805fe1fcf0db5e7214f4d4fe *man/are_identical.Rd 2f58c2bf8451bf4f4ab94e26002a7c75 *man/assert_engine.Rd bf53576e81b92f72064cd89e48ea0756 *man/assertionError.Rd 636aeef17079faf4fec4193e5b093401 *man/bapply.Rd 9e572fa99a217b91eda07a3c7180623d *man/call_and_name.Rd 7064b398bad9474b99d496f14bd36b34 *man/cause.Rd 160a3f822a3b625da66d5e12ced28674 *man/coerce_to.Rd f68d64013f93bd0f4badb50694981727 *man/dont_stop.Rd 4908393cbe9d74a753b21dbf92015ffe *man/false.Rd 52ef4b77273765581c5945956ccab8dd *man/get_name_in_parent.Rd df84244bfc0deecb72b667f53198f650 *man/is2.Rd dd9b8507f459930adacb8ce7c9d2dbf8 *man/merge.list.Rd 655af1d6f0bfb73d7faf83ff59275bbc *man/merge_dots_with_list.Rd b3db2a5b3dfeb499f4d753750721841e *man/na.Rd ebb61013b95dc055cb21945dbd52ad02 *man/parenthesize.Rd c5433a92c4c77e14861adda5abb116f5 *man/print.vector_with_cause.Rd b7c34496a0bb2e1bb1e8599c036b03ee *man/print_and_capture.Rd 2113244026beda1577c38b2199123b21 *man/safe_deparse.Rd c2db9b6c59393fa5cadf6b2ed964ff9d *man/set_cause.Rd ea9021255a2ee580c78d257b9d5588ef *man/strip_attributes.Rd a597efdb065c60af3bb1055ff17b8636 *man/use_first.Rd 7a03ed27a9a6c581abcd0969a0068494 *po/R-assertive.base.pot 0ca67ef63f2745c25d960792d9b6635a *po/R-de.po 5e78b9418256bf54b9b6ae4d922d3cbe *po/R-el.po 4cd0e4ed5f29113328c7f457460cc4fa *po/R-fr.po f6e3fc75cbe84961f0ae874bcdb68682 *po/R-hu.po bc92d912a7c279646d59054c5f351d25 *po/R-ko.po dc5c1ad1ae1c5869e1c4a45ae389a50e *po/R-kr.po 6ddad5addb78719c1906aa71fb549cba *po/R-nl.po ed3a63ed8f6ed312a09f3e7a11ad8bdb *po/R-ru.po 1f92388e98fb13da5a747a6bbfd4ab50 *po/R-sv.po 2edd62787af1c5aac7820cb9f984f141 *po/R-tr.po 3b91ddabdacd796ba607671dcaeab479 *po/R-ua.po 61e29e1441dc26c904aa7124a3fd42d8 *po/R-uk.po 212e9966dd6cf7c59dafb6c4a8ff308f *tests/testthat.R 273f7b398f030d629d57bb8341e67ea2 *tests/testthat/test-are-identical.R 5ba2f645703665a74ef472d3dbc7b180 *tests/testthat/test-conditions.R e4a84d945c128b0a425e29b429e91a3c *tests/testthat/test-internal.R d7ef243643eac5b71fc503cf8a05501c *tests/testthat/test-is-identical-to-true-false-na.R 9f5540277deeafdd15ce1051bdba393f *tests/testthat/test-is-true-false-na.R f507fd77bc102ea1973d8919e6acbbe4 *tests/testthat/test-utils.R b812c9bd7e3231e5c5693256816f347b *tests/testthat/testthat-problems.rds assertive.base/inst/0000755000176200001440000000000014001142664014143 5ustar liggesusersassertive.base/inst/po/0000755000176200001440000000000014001142664014561 5ustar liggesusersassertive.base/inst/po/ru/0000755000176200001440000000000014001142664015207 5ustar liggesusersassertive.base/inst/po/ru/LC_MESSAGES/0000755000176200001440000000000014001142664016774 5ustar liggesusersassertive.base/inst/po/ru/LC_MESSAGES/R-assertive.base.mo0000644000176200001440000000711014001142664022445 0ustar liggesusers%pq/ )F]v(B5!Tv # "%"D$g3*6_(@! & "G 'j . R h 7} 4 6 C! @e B < 9& ;` > ; = zU / G   %s and %s are not identical.%s cannot be coerced to any of these types: %s.%s cannot be coerced to type %s.%s has length 0.%s is not identical to FALSE.%s is not identical to NA.%s is not identical to TRUE.(showing the first %d)Coercing %s to class %s.Duplicated arguments:Only the first value of %s will be used.The length of value should be 1 or the length of x (%d) but is %d.The values of %s are all FALSE.The values of %s are all NA.The values of %s are all TRUE.The values of %s are never FALSE.The values of %s are never NA.The values of %s are never TRUE.The values of %s are not all FALSE.The values of %s are not all NA.The values of %s are not all TRUE.The values of %s are sometimes FALSE.The values of %s are sometimes NA.The values of %s are sometimes TRUE.There was %d failure%s: There were %d failures%s: You must provide a class.target_class should be a character vector.Project-Id-Version: assertive.base Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base POT-Creation-Date: 2015-08-11 13:37 PO-Revision-Date: 2015-10-05 14:45+0300 Last-Translator: Anton Antonov Language-Team: LANGUAGE Language: ru MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); %s и %s не являются идентичными.%s не может быть приведён ни к одному из этих типов: %s.%s не может быть приведён к классу %s.%s имеет длину 0.%s не идентичен FALSE.%s не идентичен NA.%s не идентичен TRUE.(показаны первые %d)Приводим %s к классу %s.Повторяющиеся аргументы:Будет использовано только первое значение %s.Длина value должна быть равна 1 или длине x (%d), но она равна %d.Все из значений %s являются FALSE.Все из значений %s являются NA.Все из значений %s являются TRUE.Ни одно из значений %s не является FALSE.Ни одно из значений %s не является NA.Ни одно из значений %s не является TRUE.Не все из значений %s являются FALSE.Не все из значений %s являются NA.Не все из значений %s являются TRUE.Некоторые значения %s являются FALSE.Некоторые значения %s являются NA.Некоторые значения %s являются TRUE.Обнаружена %d ошибка%s: Обнаружено %d ошибки%s: Обнаружено %d ошибок%s: Необходимо указать класс.target_class должен быть текстовым вектором.assertive.base/inst/po/ko/0000755000176200001440000000000014001142664015172 5ustar liggesusersassertive.base/inst/po/ko/LC_MESSAGES/0000755000176200001440000000000014001142664016757 5ustar liggesusersassertive.base/inst/po/ko/LC_MESSAGES/R-assertive.base.mo0000644000176200001440000000600414001142664022431 0ustar liggesusers%pq/ )F]v(B5!Tv # "%"D$g3*!D2H#h " > WQ !  & - *> ,i - * , ' $D &i  . 5    %s and %s are not identical.%s cannot be coerced to any of these types: %s.%s cannot be coerced to type %s.%s has length 0.%s is not identical to FALSE.%s is not identical to NA.%s is not identical to TRUE.(showing the first %d)Coercing %s to class %s.Duplicated arguments:Only the first value of %s will be used.The length of value should be 1 or the length of x (%d) but is %d.The values of %s are all FALSE.The values of %s are all NA.The values of %s are all TRUE.The values of %s are never FALSE.The values of %s are never NA.The values of %s are never TRUE.The values of %s are not all FALSE.The values of %s are not all NA.The values of %s are not all TRUE.The values of %s are sometimes FALSE.The values of %s are sometimes NA.The values of %s are sometimes TRUE.There was %d failure%s: There were %d failures%s: You must provide a class.target_class should be a character vector.Project-Id-Version: assertive.base 0.0-2 Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base POT-Creation-Date: 2015-08-11 13:37 PO-Revision-Date: 2015-10-05 14:45+0300 Last-Translator: Sunkyu Choi Language-Team: LANGUAGE Language: ko MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; %s 와 %s는 동일하지 않다.%s는 다른 어떤 타입들로 강요 받을 수 없습니다: %s.%s는 타입 %s로 강요 받을 수 없습니다.%s는 0 길이를 갖습니다.%s는 FALSE와 같지 않습니다.%s는 NA와 같지 않습니다.%s는 TRUE와 같지 않습니다.첫번째 %d 보기.%s를 클래스 %s로 강요.이중 인수:오직 첫번째 %s의 값만 사용 되어 질 것 입니다.value 의 길이는 1 또는 X (% d 개)의 길이 만 % d 개입니다해야합니다.%s의 값들은 FALSE 입니다.%s의 값들은 NA입니다.%s의 값들은 모두 TRUE 입니다.%s의 값들은 절대 FALSE가 아닙니다.%s의 값들은 절대 NA가 아닙니다.%s의 값들은 절대 TRUE가 아닙니다.%s의 값들이 모두 FALSE는 아닙니다.%s의 값들이 모두 NA는 아닙니다.%s의 값들이 모두 TRUE는 아닙니다.%s의 값들은 가끔 FALSE 입니다.%s의 값들은 가끔 NA 입니다.%s의 값들은 가끔 TRUE 입니다.%d 실패 %s: 당신은 클래스를 제공해야 합니다.target_class 는 캐릭터 벡터이어야 합니다.assertive.base/inst/po/sv/0000755000176200001440000000000014001142664015211 5ustar liggesusersassertive.base/inst/po/sv/LC_MESSAGES/0000755000176200001440000000000014001142664016776 5ustar liggesusersassertive.base/inst/po/sv/LC_MESSAGES/R-assertive.base.mo0000644000176200001440000000551114001142664022452 0ustar liggesusers%pq/ )F]v(B5!Tv # "%"D$g3*5") :[y0> Q p    # - "N q   ' # ,    %s and %s are not identical.%s cannot be coerced to any of these types: %s.%s cannot be coerced to type %s.%s has length 0.%s is not identical to FALSE.%s is not identical to NA.%s is not identical to TRUE.(showing the first %d)Coercing %s to class %s.Duplicated arguments:Only the first value of %s will be used.The length of value should be 1 or the length of x (%d) but is %d.The values of %s are all FALSE.The values of %s are all NA.The values of %s are all TRUE.The values of %s are never FALSE.The values of %s are never NA.The values of %s are never TRUE.The values of %s are not all FALSE.The values of %s are not all NA.The values of %s are not all TRUE.The values of %s are sometimes FALSE.The values of %s are sometimes NA.The values of %s are sometimes TRUE.There was %d failure%s: There were %d failures%s: You must provide a class.target_class should be a character vector.Project-Id-Version: assertive.base 0.0-2 Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base POT-Creation-Date: 2015-08-16 14:03 PO-Revision-Date: 2015-10-05 14:45+0300 Last-Translator: Rasmus Bååth Language-Team: LANGUAGE Language: sv MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); %s och %s är inte identiska.%s kan inte omvandlas till någon av dessa typer: %s.%s kan inte omvandlas till typ %s.%s har längd 0.%s är inte identiskt med FALSE.%s är inte identiskt med NA.%s är inte identiskt med TRUE.(visar de första %d)Omvandlar %s till class %s.Duplicerade argument:Bara det första värdet av %s kommer användas.value längd borde vara 1 eller längden av x (%d) men är %d.Värdena av %s är alla FALSE.Värdena av %s är alla NA.Värdena av %s är alla TRUE.Värdena av %s är aldrig FALSE.Värdena av %s är aldrig NA.Värdena av %s är aldrig TRUE.Värdena av %s är inte alla FALSE.Värdena av %s är inte alla NA.Värdena av %s är inte alla TRUE.Värdena av %s är ibland FALSE.Värdena av %s är ibland NA.Värdena av %s är ibland TRUE.Där var %d fel%s: Där var %d fel%s: Du måste tillhandahålla en class.target_class borde vara en character vector.assertive.base/inst/po/uk/0000755000176200001440000000000014001142664015200 5ustar liggesusersassertive.base/inst/po/uk/LC_MESSAGES/0000755000176200001440000000000014001142664016765 5ustar liggesusersassertive.base/inst/po/uk/LC_MESSAGES/R-assertive.base.mo0000644000176200001440000000661114001142664022443 0ustar liggesusers%pq/ )F]v(B5!Tv # "%"D$g3*(X7x1#." &Q ,x ( L \ .x  & @ ,- <Z 9 # / 9% %_ . V . N:    %s and %s are not identical.%s cannot be coerced to any of these types: %s.%s cannot be coerced to type %s.%s has length 0.%s is not identical to FALSE.%s is not identical to NA.%s is not identical to TRUE.(showing the first %d)Coercing %s to class %s.Duplicated arguments:Only the first value of %s will be used.The length of value should be 1 or the length of x (%d) but is %d.The values of %s are all FALSE.The values of %s are all NA.The values of %s are all TRUE.The values of %s are never FALSE.The values of %s are never NA.The values of %s are never TRUE.The values of %s are not all FALSE.The values of %s are not all NA.The values of %s are not all TRUE.The values of %s are sometimes FALSE.The values of %s are sometimes NA.The values of %s are sometimes TRUE.There was %d failure%s: There were %d failures%s: You must provide a class.target_class should be a character vector.Project-Id-Version: assertive.base 0.0-2 Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base POT-Creation-Date: 2015-08-27 14:40 PO-Revision-Date: 2015-08-17 11:46+0800 Last-Translator: Ivanka Skakun Language-Team: www.coupofy.com Language: uk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); %s і %s не є ідентичними.%s не можна перевести до будь-якого з цих типів: %s.%s не можна перевести до типу %s.%s має довжину 0.%s не збігається з ПОМИЛКОЮ.%s не збігається з NA.%s не збігається з ВІРНИМ.(показувати перший %d)Приведення %s до класу %s.Дубльовані аргументи:Тільки перше значення %s буде використане.Довжина valueмає дорівнювати 1 або довжині x (%d) але %d.Значення %s всі ПОМИЛКОВІ.Значення %s всі NAЗначення %s всі ВІРНІ.Значення %s ніколи не є ПОМИЛКОВИМИ.Значення %s ніколи не є NA.Значення %s ніколи не є ІСТИННИМИ.Значення %s не завжди ПОМИЛКОВІ.Значення %s не всі NA.Значення %s не всі ІСТИННІ.Значення %s іноді є ПОМИЛКОВИМИ.Значення %s іноді є NA.Значення %s іноді ІСТИННІ.Тут %d помилка%s: Тут %d помилок%s: Тут %d помилок%s: Ви повинні показати клас.target_class має бути вектором орієнтації знаку.assertive.base/inst/po/fr/0000755000176200001440000000000014001142664015170 5ustar liggesusersassertive.base/inst/po/fr/LC_MESSAGES/0000755000176200001440000000000014001142664016755 5ustar liggesusersassertive.base/inst/po/fr/LC_MESSAGES/R-assertive.base.mo0000644000176200001440000000571214001142664022434 0ustar liggesusers%pq/ )F]v(B5!Tv # "%"D$g3* 5!6Mm.M( #v " & # %) +O '{ ) $ ! # ?8 x 0    %s and %s are not identical.%s cannot be coerced to any of these types: %s.%s cannot be coerced to type %s.%s has length 0.%s is not identical to FALSE.%s is not identical to NA.%s is not identical to TRUE.(showing the first %d)Coercing %s to class %s.Duplicated arguments:Only the first value of %s will be used.The length of value should be 1 or the length of x (%d) but is %d.The values of %s are all FALSE.The values of %s are all NA.The values of %s are all TRUE.The values of %s are never FALSE.The values of %s are never NA.The values of %s are never TRUE.The values of %s are not all FALSE.The values of %s are not all NA.The values of %s are not all TRUE.The values of %s are sometimes FALSE.The values of %s are sometimes NA.The values of %s are sometimes TRUE.There was %d failure%s: There were %d failures%s: You must provide a class.target_class should be a character vector.Project-Id-Version: assertive.base 0.0-2 Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base POT-Creation-Date: 2015-08-16 11:17 PO-Revision-Date: 2015-10-05 14:45+0300 Last-Translator: Hisham Ben Hamidane Language-Team: LANGUAGE Language: fr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); %s et %s ne sont pas identiques.%s ne peut etre forcé en aucun des types suivant: %s%s ne peut etre forcé en type %s%s a une longueur de 0%s n'est pas identique à FALSE%s n'est pas identique à NA%s n'est pas identique à TRUE(affichage des premiers %d)Contrainte de %s en classe %sArguments dupliqués:Seule la première valeur de %s sera utiliséeLa longueur de value doit être de 1 ou de la longueur de x (%d) et non de %dLes valeurs de %s sont toutes FALSELes valeurs de %s sont toutes NALes valeurs de %s sont toutes TRUELes valeurs de %s ne sont jamais FALSELes valeurs de %s ne sont jamais NALes valeurs de %s ne sont jamais TRUELes valeurs de %s ne sont pas toutes FALSE.Les valeurs de %s ne sont pas toutes NALes valeurs de %s ne sont pas toutes TRUELes valeurs de %s sont parfois FALSELes valeurs de %s sont parfois NALes valeurs de %s sont parfois TRUE%d echec a été observé%s: %d echecs ont été observés%s: Une classe doit être specifiéetarget_class doit etre un vecteur de caractèresassertive.base/inst/po/hu/0000755000176200001440000000000014001142664015175 5ustar liggesusersassertive.base/inst/po/hu/LC_MESSAGES/0000755000176200001440000000000014001142664016762 5ustar liggesusersassertive.base/inst/po/hu/LC_MESSAGES/R-assertive.base.mo0000644000176200001440000000575014001142664022443 0ustar liggesusers%pq/ )F]v(B5!Tv # "%"D$g3*9.L^q =T& %{ " $ ( % '8 )` & ( . + -5 1c  2    %s and %s are not identical.%s cannot be coerced to any of these types: %s.%s cannot be coerced to type %s.%s has length 0.%s is not identical to FALSE.%s is not identical to NA.%s is not identical to TRUE.(showing the first %d)Coercing %s to class %s.Duplicated arguments:Only the first value of %s will be used.The length of value should be 1 or the length of x (%d) but is %d.The values of %s are all FALSE.The values of %s are all NA.The values of %s are all TRUE.The values of %s are never FALSE.The values of %s are never NA.The values of %s are never TRUE.The values of %s are not all FALSE.The values of %s are not all NA.The values of %s are not all TRUE.The values of %s are sometimes FALSE.The values of %s are sometimes NA.The values of %s are sometimes TRUE.There was %d failure%s: There were %d failures%s: You must provide a class.target_class should be a character vector.Project-Id-Version: assertive.base 0.0-2 Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base POT-Creation-Date: 2015-08-11 13:37 PO-Revision-Date: 2015-08-27 14:40+0300 Last-Translator: Gergely Daróczi Language-Team: LANGUAGE Language: hu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Poedit 1.8.4 %s és %s nem azonos.(A)z %s objektum nem sorolható egyik osztályba sem: %s.(A)z %s objektum nem sorolható %s osztályba.A(z) %s hossza 0.A(z) %s nem FALSE.A(z) %s nem NA.A(z) %s nem TRUE.(az első %d mutatása)(A)z %s %s osztályba sorolása.Ismétlődő objektum név:A(z) %s elemei közül csak az első kerül kiértékelésre.A "value" paraméter hossza 1 vagy "x" hosszúságú (%d) kellene legyen %d helyett.A(z) %s értékei közül mind FALSE.A(z) %s értékei közül mind NA.A(z) %s értékei közül mind TRUE.A(z) %s értékei közül egy sem FALSE.A(z) %s értékei közül egy sem NA.A(z) %s értékei közül egy sem TRUE.A(z) %s értékei közül nem mind FALSE.A(z) %s értékei közül nem mind NA.A(z) %s értékei közül nem mind TRUE.Néhány elem a(z) %s értékei közül FALSE.Néhány elem a(z) %s értékei közül NA.Néhány elem a(z) %s értékei közül TRUE.%d hiba fordult elő%s: %d hiba fordult elő%s: Hiányzik a "class" paraméter.A "target_class" paraméter karakter vektort vár.assertive.base/inst/po/de/0000755000176200001440000000000014001142664015151 5ustar liggesusersassertive.base/inst/po/de/LC_MESSAGES/0000755000176200001440000000000014001142664016736 5ustar liggesusersassertive.base/inst/po/de/LC_MESSAGES/R-assertive.base.mo0000644000176200001440000000564114001142664022416 0ustar liggesusers%pq/ )F]v(B5!Tv # "%"D$g3*9$5!Jl)K !k    ', $T &y % " $ F U -s    %s and %s are not identical.%s cannot be coerced to any of these types: %s.%s cannot be coerced to type %s.%s has length 0.%s is not identical to FALSE.%s is not identical to NA.%s is not identical to TRUE.(showing the first %d)Coercing %s to class %s.Duplicated arguments:Only the first value of %s will be used.The length of value should be 1 or the length of x (%d) but is %d.The values of %s are all FALSE.The values of %s are all NA.The values of %s are all TRUE.The values of %s are never FALSE.The values of %s are never NA.The values of %s are never TRUE.The values of %s are not all FALSE.The values of %s are not all NA.The values of %s are not all TRUE.The values of %s are sometimes FALSE.The values of %s are sometimes NA.The values of %s are sometimes TRUE.There was %d failure%s: There were %d failures%s: You must provide a class.target_class should be a character vector.Project-Id-Version: assertive.base 0.0-2 Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base POT-Creation-Date: 2015-08-11 13:37 PO-Revision-Date: 2015-10-05 14:45+0300 Last-Translator: Anja Billing Language-Team: LANGUAGE Language: de MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); %s und %s sind nicht identisch.%s kann nicht gezwungen werden in keine dieser Typen: %s.%s kann nicht gezwungen werden in %s%s hat die Laenge 0.%s ist nicht identisch mit FALSE.%s ist nicht identisch mit NA.%s ist nicht identisch mit TRUE(zeigt die ersten %d)Zwingen von %s in Klasse %s.Duplizierte Argumente:Nur der erste Wert von %s wird verwendet.The Laenge des Wertes sollte 1 oder die Laenge von x (%d) sein ist aber %d.Die Werte von %s sind alle FALSE.Die Werte von %s sind alle NA.Die Werte von %s sind alle TRUE.Die Werte von %s sind nie FALSE.Die Werte von %s sind nie NA.Die Werte von %s sind nie TRUE.Die Werte von %s sind nicht alle FALSE.Die Werte von %s sind nicht alle NA.Die Werte von %s sind nicht alle TRUE.Die Werte von %s sind manchmal FALSE.Die Werte von %s sind manchmal NA.Die Werte von %s sind manchmal TRUE.Es ist ein %d Fehler aufgetreten%s: Es sind %d Fehler aufgetreten%s: Du musst eine Klasse angeben.target_class sollte ein Charaktervektor sein.assertive.base/inst/po/ua/0000755000176200001440000000000014001142664015166 5ustar liggesusersassertive.base/inst/po/ua/LC_MESSAGES/0000755000176200001440000000000014001142664016753 5ustar liggesusersassertive.base/inst/po/ua/LC_MESSAGES/R-assertive.base.mo0000644000176200001440000000662514001142664022436 0ustar liggesusers%pq/ )F]v(B5!Tv # "%"D$g3*(X7x1#." &Q ,x ( L h .  & @ ,9 <f 9 # / 91 %k . V . NF    %s and %s are not identical.%s cannot be coerced to any of these types: %s.%s cannot be coerced to type %s.%s has length 0.%s is not identical to FALSE.%s is not identical to NA.%s is not identical to TRUE.(showing the first %d)Coercing %s to class %s.Duplicated arguments:Only the first value of %s will be used.The length of value should be 1 or the length of x (%d) but is %d.The values of %s are all FALSE.The values of %s are all NA.The values of %s are all TRUE.The values of %s are never FALSE.The values of %s are never NA.The values of %s are never TRUE.The values of %s are not all FALSE.The values of %s are not all NA.The values of %s are not all TRUE.The values of %s are sometimes FALSE.The values of %s are sometimes NA.The values of %s are sometimes TRUE.There was %d failure%s: There were %d failures%s: You must provide a class.target_class should be a character vector.Project-Id-Version: assertive.base 0.0-2 Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base POT-Creation-Date: 2015-08-27 14:40 PO-Revision-Date: 2015-08-17 11:46+0800 Last-Translator: Ivanka Skakun Language-Team: www.coupofy.com Language: ua MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); %s і %s не є ідентичними.%s не можна перевести до будь-якого з цих типів: %s.%s не можна перевести до типу %s.%s має довжину 0.%s не збігається з ПОМИЛКОЮ.%s не збігається з NA.%s не збігається з ВІРНИМ.(показувати перший %d)Приведення %s до класу %s.Дубльовані аргументи:Тільки перше значення %s буде використане.Довжина значення має дорівнювати 1 або довжині x (%d) але %d.Значення %s всі ПОМИЛКОВІ.Значення %s всі NAЗначення %s всі ВІРНІ.Значення %s ніколи не є ПОМИЛКОВИМИ.Значення %s ніколи не є NA.Значення %s ніколи не є ІСТИННИМИ.Значення %s не завжди ПОМИЛКОВІ.Значення %s не всі NA.Значення %s не всі ІСТИННІ.Значення %s іноді є ПОМИЛКОВИМИ.Значення %s іноді є NA.Значення %s іноді ІСТИННІ.Тут %d помилка%s: Тут %d помилок%s: Тут %d помилок%s: Ви повинні показати клас.target_class має бути вектором орієнтації знаку.assertive.base/inst/po/tr/0000755000176200001440000000000014001142664015206 5ustar liggesusersassertive.base/inst/po/tr/LC_MESSAGES/0000755000176200001440000000000014001142664016773 5ustar liggesusersassertive.base/inst/po/tr/LC_MESSAGES/R-assertive.base.mo0000644000176200001440000000544614001142664022456 0ustar liggesusers%pq/ )F]v(B8!Wy # "%!"G$j3*-)CZs(C5 S n ( % ' $ !' #I m   '  )     %s and %s are not identical.%s cannot be coerced to any of these types: %s.%s cannot be coerced to type %s.%s has length 0.%s is not identical to FALSE.%s is not identical to NA.%s is not identical to TRUE.(showing the first %d)Coercing %s to class %s.Duplicated arguments: %sOnly the first value of %s will be used.The length of value should be 1 or the length of x (%d) but is %d.The values of %s are all FALSE.The values of %s are all NA.The values of %s are all TRUE.The values of %s are never FALSE.The values of %s are never NA.The values of %s are never TRUE.The values of %s are not all FALSE.The values of %s are not all NA.The values of %s are not all TRUE.The values of %s are sometimes FALSE.The values of %s are sometimes NA.The values of %s are sometimes TRUE.There was %d failure%s: There were %d failures%s: You must provide a class.target_class should be a character vector.Project-Id-Version: assertive.base 0.0-2 Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base POT-Creation-Date: 2015-08-17 08:40 PO-Revision-Date: 2015-10-05 14:45+0300 Last-Translator: Mine Çetinkaya-Rundel Language-Team: LANGUAGE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: tr Plural-Forms: nplurals=2; plural=(n > 1); %s ve %s aynı deǧil.%s bu tiplerden hiçbirine uyarlanamıyor: %s%s %s tipine uyarlanamıyor.%s uzunluğu 0.%s FALSE ile ayni değil.%s NA ile ayni değil.%s TRUE ile ayni değil.(İlk %d'yi gösteriyor)%s %s sınıfına uyarlanıyor.Tekrarlanan argümanlar: %s%s'nin sadece ilk değeri kullanılacak.value uzunluǧu 1 veya x'in uzunluǧu (%d) olmali, ama uzunlugu %d.%s deǧerlerinin hepsi FALSE.%s deǧerlerinin hepsi NA.%s deǧerlerinin hepsi TRUE.%s deǧerlerinin hiç biri FALSE deǧil.%s deǧerlerinin hiç biri NA deǧil.%s deǧerlerinin hiç biri TRUE deǧil.%s deǧerlerinin hepsi FALSE deǧil.%s deǧerlerinin hepsi NA deǧil.%s deǧerlerinin hepsi TRUE deǧil.%s deǧerleri bazen FALSE.%s deǧerleri bazen NA.%s deǧerleri bazen TRUE.%d hata bulundu%s: %d hata bulundu%s: Bir sınıf vermelisiniz.target_class karakter verktörü olmalı.assertive.base/inst/po/kr/0000755000176200001440000000000014001142664015175 5ustar liggesusersassertive.base/inst/po/kr/LC_MESSAGES/0000755000176200001440000000000014001142664016762 5ustar liggesusersassertive.base/inst/po/kr/LC_MESSAGES/R-assertive.base.mo0000644000176200001440000000577314001142664022450 0ustar liggesusers%pq/ )F]v(B5!Tv # "%"D$g3*!D2H#h " > KQ !  & - *2 ,] - * , ' $8 &]  . 8    %s and %s are not identical.%s cannot be coerced to any of these types: %s.%s cannot be coerced to type %s.%s has length 0.%s is not identical to FALSE.%s is not identical to NA.%s is not identical to TRUE.(showing the first %d)Coercing %s to class %s.Duplicated arguments:Only the first value of %s will be used.The length of value should be 1 or the length of x (%d) but is %d.The values of %s are all FALSE.The values of %s are all NA.The values of %s are all TRUE.The values of %s are never FALSE.The values of %s are never NA.The values of %s are never TRUE.The values of %s are not all FALSE.The values of %s are not all NA.The values of %s are not all TRUE.The values of %s are sometimes FALSE.The values of %s are sometimes NA.The values of %s are sometimes TRUE.There was %d failure%s: There were %d failures%s: You must provide a class.target_class should be a character vector.Project-Id-Version: assertive.base 0.0-2 Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base POT-Creation-Date: 2015-08-11 13:37 PO-Revision-Date: 2015-08-27 14:40+0300 Last-Translator: Sunkyu Choi Language-Team: LANGUAGE Language: kr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; %s 와 %s는 동일하지 않다.%s는 다른 어떤 타입들로 강요 받을 수 없습니다: %s.%s는 타입 %s로 강요 받을 수 없습니다.%s는 0 길이를 갖습니다.%s는 FALSE와 같지 않습니다.%s는 NA와 같지 않습니다.%s는 TRUE와 같지 않습니다.첫번째 %d 보기.%s를 클래스 %s로 강요.이중 인수:오직 첫번째 %s의 값만 사용 되어 질 것 입니다.값의 길이는 1 이거나 그 길이의 x (%d)이지만 %d는 아니다.%s의 값들은 FALSE 입니다.%s의 값들은 NA입니다.%s의 값들은 모두 TRUE 입니다.%s의 값들은 절대 FALSE가 아닙니다.%s의 값들은 절대 NA가 아닙니다.%s의 값들은 절대 TRUE가 아닙니다.%s의 값들이 모두 FALSE는 아닙니다.%s의 값들이 모두 NA는 아닙니다.%s의 값들이 모두 TRUE는 아닙니다.%s의 값들은 가끔 FALSE 입니다.%s의 값들은 가끔 NA 입니다.%s의 값들은 가끔 TRUE 입니다.%d 실패 %s: 당신은 클래스를 제공해야 합니다.타켓 클래스는 캐릭터 벡터이어야 합니다.assertive.base/inst/po/el/0000755000176200001440000000000014001142664015161 5ustar liggesusersassertive.base/inst/po/el/LC_MESSAGES/0000755000176200001440000000000014001142664016746 5ustar liggesusersassertive.base/inst/po/el/LC_MESSAGES/R-assertive.base.mo0000644000176200001440000000710014001142664022416 0ustar liggesusers%p/q  )@Y(oB 4Us"!$!#?3c*wL+(x857 .H :w L t 3 0 2 :- 7h 9 : 7 9M 7 4 6 M+ 5y U :    %s cannot be coerced to any of these types: %s.%s cannot be coerced to type %s.%s has length 0.%s is not identical to FALSE.%s is not identical to NA.%s is not identical to TRUE.(showing the first %d)Coercing %s to class %s.Duplicated arguments:Only the first value of %s will be used.The length of value should be 1 or the length of x (%d) but is %d.The values of x are all FALSE.The values of x are all NA.The values of x are all TRUE.The values of x are never FALSE.The values of x are never NA.The values of x are never TRUE.The values of x are not all FALSE.The values of x are not all NA.The values of x are not all TRUE.The values of x are sometimes FALSE.The values of x are sometimes NA.The values of x are sometimes TRUE.There was %d failure%s: There were %d failures%s: You must provide a class.target_class should be a character vector.x and y are not identical.Project-Id-Version: assertive.base 0.0-2 Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base POT-Creation-Date: 2015-08-11 13:37 PO-Revision-Date: 2015-10-05 13:00+0300 Last-Translator: Aspasia Chatziefthymiou Language-Team: LANGUAGE Language: el MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); %s δεν γίνεται να εξαναγκαστεί σε κανένα από αυτούς τους τύπους: %s.%s δεν γίνεται να εξαναγκαστεί στον τύπο %s.%s έχει μέγεθος τιμής 0.%s δεν είναι ταυτόσημο με το FALSE.%s δεν είναι ταυτόσημο με το NA.%s δεν είναι ταυτόσημο με το TRUE.(εμφανίζονται τα πρώτα %d)Εξαναγκάζοντας το %s στη κλάση %s.Διπλότυπο όρισμα:Μόνο η πρώτη τιμή του %s θα χρησιμοποιηθεί.Το εύρος της value πρέπει να είναι 1 ή το εύρος του x (%d) αλλά είναι %d.Οι τιμές του x είναι όλες FALSE Οι τιμές του x είναι όλες NA.Οι τιμές του x είναι όλες TRUE.Οι τιμές του x δεν είναι ποτέ FALSE.Οι τιμές του x δεν είναι ποτέ NA.Οι τιμές του x δεν είναι ποτέ TRUE.Οι τιμές του x δεν είναι όλες FALSE.Οι τιμές του x δεν είναι όλες NA.Οι τιμές του x δεν είναι όλες TRUE.Οι τιμές του x είναι ενίοτε FALSE Οι τιμές του x είναι ενίοτε NA.Οι τιμές του x είναι ενίοτε TRUE.Υπήρξε %d αποτυχία:%s Υπήρξαν %d αποτυχίες:%s Πρέπει να παρέχετε μια κλάση.target_class πρέπει να είναι ένα διάνυσμα χαρακτήρα.Το x και το y δεν είναι ταυτόσημα.assertive.base/inst/po/nl/0000755000176200001440000000000014001142664015172 5ustar liggesusersassertive.base/inst/po/nl/LC_MESSAGES/0000755000176200001440000000000014001142664016757 5ustar liggesusersassertive.base/inst/po/nl/LC_MESSAGES/R-assertive.base.mo0000644000176200001440000000560214001142664022434 0ustar liggesusers%pq/ )F]v(B5!Tv # "%"D$g3*>+:Ml"- R/    "  ! #@ !d " !  . : ,U    %s and %s are not identical.%s cannot be coerced to any of these types: %s.%s cannot be coerced to type %s.%s has length 0.%s is not identical to FALSE.%s is not identical to NA.%s is not identical to TRUE.(showing the first %d)Coercing %s to class %s.Duplicated arguments:Only the first value of %s will be used.The length of value should be 1 or the length of x (%d) but is %d.The values of %s are all FALSE.The values of %s are all NA.The values of %s are all TRUE.The values of %s are never FALSE.The values of %s are never NA.The values of %s are never TRUE.The values of %s are not all FALSE.The values of %s are not all NA.The values of %s are not all TRUE.The values of %s are sometimes FALSE.The values of %s are sometimes NA.The values of %s are sometimes TRUE.There was %d failure%s: There were %d failures%s: You must provide a class.target_class should be a character vector.Project-Id-Version: assertive.base 0.0-2 Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base POT-Creation-Date: 2015-08-11 13:37 PO-Revision-Date: 2015-10-05 14:45+0300 Last-Translator: Aditya Bhagwat Language-Team: LANGUAGE Language: nl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); %s en %s zijn niet identiek.%s kan niet worden geforceerd naar eender van beide types: %s.%s kan niet worden geforceerd naar type %s.%s heeft lengte 0.%s is niet identiek aan FALSE.%s is niet identiek aan NA.%s is niet identiek aan TRUE.(de eerste %d worden getoond)%s wordt geforceerd naar class %s.Gedupliceerde argumenten:Alleen de eerste waarde in %s wordt gebruikt.De lengte van value moet gelijk zijn aan 1 of aan de lengte van x (%d) maar is %d.Alle waarden in %s zijn FALSE.Alle waarden in %s zijn NA.Alle waarden in %s zijn TRUE.Geen enkele waarde in %s is FALSE.Geen enkele waarde in %s is NA.Geen enkele waarde in %s is TRUE.Niet alle waarden in %s zijn FALSE.Niet alle waarden van %s zijn NA.Niet alle waarden in %s zijn TRUE.Sommige waarden in %s zijn FALSE.Sommige waarden in %s zijn NA.Sommige waarden in %s zijn TRUE.Er was %d failure%s: Er waren %d falirues%s: Je moet een class opgeven.target_class moet een character vector zijn.assertive.base/po/0000755000176200001440000000000014001142664013604 5ustar liggesusersassertive.base/po/R-tr.po0000644000176200001440000000542614001142664014777 0ustar liggesusersmsgid "" msgstr "" "Project-Id-Version: assertive.base 0.0-2\n" "Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base\n" "POT-Creation-Date: 2015-08-17 08:40\n" "PO-Revision-Date: 2015-10-05 14:45+0300\n" "Last-Translator: Mine Çetinkaya-Rundel \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: tr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" msgid "%s and %s are not identical." msgstr "%s ve %s aynı deǧil." msgid "The values of %s are not all FALSE." msgstr "%s deǧerlerinin hepsi FALSE deǧil." msgid "The values of %s are never FALSE." msgstr "%s deǧerlerinin hiç biri FALSE deǧil." msgid "The values of %s are not all NA." msgstr "%s deǧerlerinin hepsi NA deǧil." msgid "The values of %s are never NA." msgstr "%s deǧerlerinin hiç biri NA deǧil." msgid "The values of %s are not all TRUE." msgstr "%s deǧerlerinin hepsi TRUE deǧil." msgid "The values of %s are never TRUE." msgstr "%s deǧerlerinin hiç biri TRUE deǧil." msgid "The values of %s are sometimes FALSE." msgstr "%s deǧerleri bazen FALSE." msgid "The values of %s are all FALSE." msgstr "%s deǧerlerinin hepsi FALSE." msgid "The values of %s are sometimes NA." msgstr "%s deǧerleri bazen NA." msgid "The values of %s are all NA." msgstr "%s deǧerlerinin hepsi NA." msgid "The values of %s are sometimes TRUE." msgstr "%s deǧerleri bazen TRUE." msgid "The values of %s are all TRUE." msgstr "%s deǧerlerinin hepsi TRUE." msgid "The length of value should be 1 or the length of x (%d) but is %d." msgstr "value uzunluǧu 1 veya x'in uzunluǧu (%d) olmali, ama uzunlugu %d." msgid "(showing the first %d)" msgstr "(İlk %d'yi gösteriyor)" msgid "You must provide a class." msgstr "Bir sınıf vermelisiniz." msgid "target_class should be a character vector." msgstr "target_class karakter verktörü olmalı." msgid "Coercing %s to class %s." msgstr "%s %s sınıfına uyarlanıyor." msgid "%s cannot be coerced to type %s." msgstr "%s %s tipine uyarlanamıyor." msgid "%s cannot be coerced to any of these types: %s." msgstr "%s bu tiplerden hiçbirine uyarlanamıyor: %s" msgid "%s is not identical to FALSE." msgstr "%s FALSE ile ayni değil." msgid "%s is not identical to NA." msgstr "%s NA ile ayni değil." msgid "%s is not identical to TRUE." msgstr "%s TRUE ile ayni değil." msgid "Duplicated arguments: %s" msgstr "Tekrarlanan argümanlar: %s" msgid "%s has length 0." msgstr "%s uzunluğu 0." msgid "Only the first value of %s (= %s) will be used." msgstr "%s'nin sadece (= %s) ilk değeri kullanılacak." msgid "There was %d failure%s:\n" msgid_plural "There were %d failures%s:\n" msgstr[0] "%d hata bulundu%s:\n" msgstr[1] "%d hata bulundu%s:\n" assertive.base/po/R-uk.po0000644000176200001440000000657114001142664014773 0ustar liggesusersmsgid "" msgstr "" "Project-Id-Version: assertive.base 0.0-2\n" "Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base\n" "POT-Creation-Date: 2015-08-27 14:40\n" "PO-Revision-Date: 2015-08-17 11:46+0800\n" "Last-Translator: Ivanka Skakun \n" "Language-Team: www.coupofy.com\n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" msgid "%s and %s are not identical." msgstr "%s і %s не є ідентичними." msgid "The values of %s are not all FALSE." msgstr "Значення %s не завжди ПОМИЛКОВІ." msgid "The values of %s are never FALSE." msgstr "Значення %s ніколи не є ПОМИЛКОВИМИ." msgid "The values of %s are not all NA." msgstr "Значення %s не всі NA." msgid "The values of %s are never NA." msgstr "Значення %s ніколи не є NA." msgid "The values of %s are not all TRUE." msgstr "Значення %s не всі ІСТИННІ." msgid "The values of %s are never TRUE." msgstr "Значення %s ніколи не є ІСТИННИМИ." msgid "The values of %s are sometimes FALSE." msgstr "Значення %s іноді є ПОМИЛКОВИМИ." msgid "The values of %s are all FALSE." msgstr "Значення %s всі ПОМИЛКОВІ." msgid "The values of %s are sometimes NA." msgstr "Значення %s іноді є NA." msgid "The values of %s are all NA." msgstr "Значення %s всі NA" msgid "The values of %s are sometimes TRUE." msgstr "Значення %s іноді ІСТИННІ." msgid "The values of %s are all TRUE." msgstr "Значення %s всі ВІРНІ." msgid "The length of value should be 1 or the length of x (%d) but is %d." msgstr "Довжина valueмає дорівнювати 1 або довжині x (%d) але %d." msgid "(showing the first %d)" msgstr "(показувати перший %d)" msgid "You must provide a class." msgstr "Ви повинні показати клас." msgid "target_class should be a character vector." msgstr "target_class має бути вектором орієнтації знаку." msgid "Coercing %s to class %s." msgstr "Приведення %s до класу %s." msgid "%s cannot be coerced to type %s." msgstr "%s не можна перевести до типу %s." msgid "%s cannot be coerced to any of these types: %s." msgstr "%s не можна перевести до будь-якого з цих типів: %s." msgid "%s is not identical to FALSE." msgstr "%s не збігається з ПОМИЛКОЮ." msgid "%s is not identical to NA." msgstr "%s не збігається з NA." msgid "%s is not identical to TRUE." msgstr "%s не збігається з ВІРНИМ." msgid "Duplicated arguments:" msgstr "Дубльовані аргументи:" msgid "%s has length 0." msgstr "%s має довжину 0." msgid "Only the first value of %s (= %s) will be used." msgstr "Тільки перше значення %s (= %s) буде використане." msgid "There was %d failure%s:\n" msgid_plural "There were %d failures%s:\n" msgstr[0] "Тут %d помилка%s:\n" msgstr[1] "Тут %d помилок%s:\n" msgstr[2] "Тут %d помилок%s:\n" assertive.base/po/R-el.po0000644000176200001440000000704314001142664014747 0ustar liggesusersmsgid "" msgstr "" "Project-Id-Version: assertive.base 0.0-2\n" "Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base\n" "POT-Creation-Date: 2015-08-11 13:37\n" "PO-Revision-Date: 2015-10-05 13:00+0300\n" "Last-Translator: Aspasia Chatziefthymiou \n" "Language-Team: LANGUAGE \n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "x and y are not identical." msgstr "Το x και το y δεν είναι ταυτόσημα." msgid "The values of x are not all FALSE." msgstr "Οι τιμές του x δεν είναι όλες FALSE." msgid "The values of x are never FALSE." msgstr "Οι τιμές του x δεν είναι ποτέ FALSE." msgid "The values of x are not all NA." msgstr "Οι τιμές του x δεν είναι όλες NA." msgid "The values of x are never NA." msgstr "Οι τιμές του x δεν είναι ποτέ NA." msgid "The values of x are not all TRUE." msgstr "Οι τιμές του x δεν είναι όλες TRUE." msgid "The values of x are never TRUE." msgstr "Οι τιμές του x δεν είναι ποτέ TRUE." msgid "The values of x are sometimes FALSE." msgstr "Οι τιμές του x είναι ενίοτε FALSE " msgid "The values of x are all FALSE." msgstr "Οι τιμές του x είναι όλες FALSE " msgid "The values of x are sometimes NA." msgstr "Οι τιμές του x είναι ενίοτε NA." msgid "The values of x are all NA." msgstr "Οι τιμές του x είναι όλες NA." msgid "The values of x are sometimes TRUE." msgstr "Οι τιμές του x είναι ενίοτε TRUE." msgid "The values of x are all TRUE." msgstr "Οι τιμές του x είναι όλες TRUE." msgid "The length of value should be 1 or the length of x (%d) but is %d." msgstr "Το εύρος της value πρέπει να είναι 1 ή το εύρος του x (%d) αλλά είναι %d." msgid "(showing the first %d)" msgstr "(εμφανίζονται τα πρώτα %d)" msgid "You must provide a class." msgstr "Πρέπει να παρέχετε μια κλάση." msgid "target_class should be a character vector." msgstr "target_class πρέπει να είναι ένα διάνυσμα χαρακτήρα." msgid "Coercing %s to class %s." msgstr "Εξαναγκάζοντας το %s στη κλάση %s." msgid "%s cannot be coerced to type %s." msgstr "%s δεν γίνεται να εξαναγκαστεί στον τύπο %s." msgid "%s cannot be coerced to any of these types: %s." msgstr "%s δεν γίνεται να εξαναγκαστεί σε κανένα από αυτούς τους τύπους: %s." msgid "%s is not identical to FALSE." msgstr "%s δεν είναι ταυτόσημο με το FALSE." msgid "%s is not identical to NA." msgstr "%s δεν είναι ταυτόσημο με το NA." msgid "%s is not identical to TRUE." msgstr "%s δεν είναι ταυτόσημο με το TRUE." msgid "Duplicated arguments:" msgstr "Διπλότυπο όρισμα:" msgid "%s has length 0." msgstr "%s έχει μέγεθος τιμής 0." msgid "Only the first value of %s (= %s) will be used." msgstr "Μόνο η πρώτη τιμή του %s (= %s) θα χρησιμοποιηθεί." msgid "There was %d failure%s:\n" msgid_plural "There were %d failures%s:\n" msgstr[0] "Υπήρξε %d αποτυχία:%s\n" msgstr[1] "Υπήρξαν %d αποτυχίες:%s\n" assertive.base/po/R-ko.po0000644000176200001440000000573214001142664014763 0ustar liggesusersmsgid "" msgstr "" "Project-Id-Version: assertive.base 0.0-2\n" "Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base\n" "POT-Creation-Date: 2015-08-11 13:37\n" "PO-Revision-Date: 2015-10-05 14:45+0300\n" "Last-Translator: Sunkyu Choi \n" "Language-Team: LANGUAGE \n" "Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" msgid "%s and %s are not identical." msgstr "%s 와 %s는 동일하지 않다." msgid "The values of %s are not all FALSE." msgstr "%s의 값들이 모두 FALSE는 아닙니다." msgid "The values of %s are never FALSE." msgstr "%s의 값들은 절대 FALSE가 아닙니다." msgid "The values of %s are not all NA." msgstr "%s의 값들이 모두 NA는 아닙니다." msgid "The values of %s are never NA." msgstr "%s의 값들은 절대 NA가 아닙니다." msgid "The values of %s are not all TRUE." msgstr "%s의 값들이 모두 TRUE는 아닙니다." msgid "The values of %s are never TRUE." msgstr "%s의 값들은 절대 TRUE가 아닙니다." msgid "The values of %s are sometimes FALSE." msgstr "%s의 값들은 가끔 FALSE 입니다." msgid "The values of %s are all FALSE." msgstr "%s의 값들은 FALSE 입니다." msgid "The values of %s are sometimes NA." msgstr "%s의 값들은 가끔 NA 입니다." msgid "The values of %s are all NA." msgstr "%s의 값들은 NA입니다." msgid "The values of %s are sometimes TRUE." msgstr "%s의 값들은 가끔 TRUE 입니다." msgid "The values of %s are all TRUE." msgstr "%s의 값들은 모두 TRUE 입니다." msgid "The length of value should be 1 or the length of x (%d) but is %d." msgstr "value 의 길이는 1 또는 X (% d 개)의 길이 만 % d 개입니다해야합니다." msgid "(showing the first %d)" msgstr "첫번째 %d 보기." msgid "You must provide a class." msgstr "당신은 클래스를 제공해야 합니다." msgid "target_class should be a character vector." msgstr "target_class 는 캐릭터 벡터이어야 합니다." msgid "Coercing %s to class %s." msgstr "%s를 클래스 %s로 강요." msgid "%s cannot be coerced to type %s." msgstr "%s는 타입 %s로 강요 받을 수 없습니다." msgid "%s cannot be coerced to any of these types: %s." msgstr "%s는 다른 어떤 타입들로 강요 받을 수 없습니다: %s." msgid "%s is not identical to FALSE." msgstr "%s는 FALSE와 같지 않습니다." msgid "%s is not identical to NA." msgstr "%s는 NA와 같지 않습니다." msgid "%s is not identical to TRUE." msgstr "%s는 TRUE와 같지 않습니다." msgid "Duplicated arguments:" msgstr "이중 인수:" msgid "%s has length 0." msgstr "%s는 0 길이를 갖습니다." msgid "Only the first value of %s (= %s) will be used." msgstr "오직 첫번째 %s의 (= %s) 값만 사용 되어 질 것 입니다." msgid "There was %d failure%s:\n" msgid_plural "There were %d failures%s:\n" msgstr[0] "%d 실패 %s:\n" assertive.base/po/R-ru.po0000644000176200001440000000707014001142664014775 0ustar liggesusersmsgid "" msgstr "" "Project-Id-Version: assertive.base\n" "Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base\n" "POT-Creation-Date: 2015-08-11 13:37\n" "PO-Revision-Date: 2015-10-05 14:45+0300\n" "Last-Translator: Anton Antonov \n" "Language-Team: LANGUAGE \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" msgid "%s and %s are not identical." msgstr "%s и %s не являются идентичными." msgid "The values of %s are not all FALSE." msgstr "Не все из значений %s являются FALSE." msgid "The values of %s are never FALSE." msgstr "Ни одно из значений %s не является FALSE." msgid "The values of %s are not all NA." msgstr "Не все из значений %s являются NA." msgid "The values of %s are never NA." msgstr "Ни одно из значений %s не является NA." msgid "The values of %s are not all TRUE." msgstr "Не все из значений %s являются TRUE." msgid "The values of %s are never TRUE." msgstr "Ни одно из значений %s не является TRUE." msgid "The values of %s are sometimes FALSE." msgstr "Некоторые значения %s являются FALSE." msgid "The values of %s are all FALSE." msgstr "Все из значений %s являются FALSE." msgid "The values of %s are sometimes NA." msgstr "Некоторые значения %s являются NA." msgid "The values of %s are all NA." msgstr "Все из значений %s являются NA." msgid "The values of %s are sometimes TRUE." msgstr "Некоторые значения %s являются TRUE." msgid "The values of %s are all TRUE." msgstr "Все из значений %s являются TRUE." msgid "The length of value should be 1 or the length of x (%d) but is %d." msgstr "Длина value должна быть равна 1 или длине x (%d), но она равна %d." msgid "(showing the first %d)" msgstr "(показаны первые %d)" msgid "You must provide a class." msgstr "Необходимо указать класс." msgid "target_class should be a character vector." msgstr "target_class должен быть текстовым вектором." msgid "Coercing %s to class %s." msgstr "Приводим %s к классу %s." msgid "%s cannot be coerced to type %s." msgstr "%s не может быть приведён к классу %s." msgid "%s cannot be coerced to any of these types: %s." msgstr "%s не может быть приведён ни к одному из этих типов: %s." msgid "%s is not identical to FALSE." msgstr "%s не идентичен FALSE." msgid "%s is not identical to NA." msgstr "%s не идентичен NA." msgid "%s is not identical to TRUE." msgstr "%s не идентичен TRUE." msgid "Duplicated arguments:" msgstr "Повторяющиеся аргументы:" msgid "%s has length 0." msgstr "%s имеет длину 0." msgid "Only the first value of %s (= %s) will be used." msgstr "Будет использовано только первое значение %s (= %s)." msgid "There was %d failure%s:\n" msgid_plural "There were %d failures%s:\n" msgstr[0] "Обнаружена %d ошибка%s:\n" msgstr[1] "Обнаружено %d ошибки%s:\n" msgstr[2] "Обнаружено %d ошибок%s:\n" assertive.base/po/R-sv.po0000644000176200001440000000545414001142664015003 0ustar liggesusersmsgid "" msgstr "" "Project-Id-Version: assertive.base 0.0-2\n" "Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base\n" "POT-Creation-Date: 2015-08-16 14:03\n" "PO-Revision-Date: 2015-10-05 14:45+0300\n" "Last-Translator: Rasmus Bååth \n" "Language-Team: LANGUAGE \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "%s and %s are not identical." msgstr "%s och %s är inte identiska." msgid "The values of %s are not all FALSE." msgstr "Värdena av %s är inte alla FALSE." msgid "The values of %s are never FALSE." msgstr "Värdena av %s är aldrig FALSE." msgid "The values of %s are not all NA." msgstr "Värdena av %s är inte alla NA." msgid "The values of %s are never NA." msgstr "Värdena av %s är aldrig NA." msgid "The values of %s are not all TRUE." msgstr "Värdena av %s är inte alla TRUE." msgid "The values of %s are never TRUE." msgstr "Värdena av %s är aldrig TRUE." msgid "The values of %s are sometimes FALSE." msgstr "Värdena av %s är ibland FALSE." msgid "The values of %s are all FALSE." msgstr "Värdena av %s är alla FALSE." msgid "The values of %s are sometimes NA." msgstr "Värdena av %s är ibland NA." msgid "The values of %s are all NA." msgstr "Värdena av %s är alla NA." msgid "The values of %s are sometimes TRUE." msgstr "Värdena av %s är ibland TRUE." msgid "The values of %s are all TRUE." msgstr "Värdena av %s är alla TRUE." msgid "The length of value should be 1 or the length of x (%d) but is %d." msgstr "value längd borde vara 1 eller längden av x (%d) men är %d." msgid "(showing the first %d)" msgstr "(visar de första %d)" msgid "You must provide a class." msgstr "Du måste tillhandahålla en class." msgid "target_class should be a character vector." msgstr "target_class borde vara en character vector." msgid "Coercing %s to class %s." msgstr "Omvandlar %s till class %s." msgid "%s cannot be coerced to type %s." msgstr "%s kan inte omvandlas till typ %s." msgid "%s cannot be coerced to any of these types: %s." msgstr "%s kan inte omvandlas till någon av dessa typer: %s." msgid "%s is not identical to FALSE." msgstr "%s är inte identiskt med FALSE." msgid "%s is not identical to NA." msgstr "%s är inte identiskt med NA." msgid "%s is not identical to TRUE." msgstr "%s är inte identiskt med TRUE." msgid "Duplicated arguments:" msgstr "Duplicerade argument:" msgid "%s has length 0." msgstr "%s har längd 0." msgid "Only the first value of %s (= %s) will be used." msgstr "Bara det första värdet av %s (= %s) kommer användas." msgid "There was %d failure%s:\n" msgid_plural "There were %d failures%s:\n" msgstr[0] "Där var %d fel%s:\n" msgstr[1] "Där var %d fel%s:\n" assertive.base/po/R-ua.po0000644000176200001440000000660514001142664014757 0ustar liggesusersmsgid "" msgstr "" "Project-Id-Version: assertive.base 0.0-2\n" "Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base\n" "POT-Creation-Date: 2015-08-27 14:40\n" "PO-Revision-Date: 2015-08-17 11:46+0800\n" "Last-Translator: Ivanka Skakun \n" "Language-Team: www.coupofy.com\n" "Language: ua\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" msgid "%s and %s are not identical." msgstr "%s і %s не є ідентичними." msgid "The values of %s are not all FALSE." msgstr "Значення %s не завжди ПОМИЛКОВІ." msgid "The values of %s are never FALSE." msgstr "Значення %s ніколи не є ПОМИЛКОВИМИ." msgid "The values of %s are not all NA." msgstr "Значення %s не всі NA." msgid "The values of %s are never NA." msgstr "Значення %s ніколи не є NA." msgid "The values of %s are not all TRUE." msgstr "Значення %s не всі ІСТИННІ." msgid "The values of %s are never TRUE." msgstr "Значення %s ніколи не є ІСТИННИМИ." msgid "The values of %s are sometimes FALSE." msgstr "Значення %s іноді є ПОМИЛКОВИМИ." msgid "The values of %s are all FALSE." msgstr "Значення %s всі ПОМИЛКОВІ." msgid "The values of %s are sometimes NA." msgstr "Значення %s іноді є NA." msgid "The values of %s are all NA." msgstr "Значення %s всі NA" msgid "The values of %s are sometimes TRUE." msgstr "Значення %s іноді ІСТИННІ." msgid "The values of %s are all TRUE." msgstr "Значення %s всі ВІРНІ." msgid "The length of value should be 1 or the length of x (%d) but is %d." msgstr "Довжина значення має дорівнювати 1 або довжині x (%d) але %d." msgid "(showing the first %d)" msgstr "(показувати перший %d)" msgid "You must provide a class." msgstr "Ви повинні показати клас." msgid "target_class should be a character vector." msgstr "target_class має бути вектором орієнтації знаку." msgid "Coercing %s to class %s." msgstr "Приведення %s до класу %s." msgid "%s cannot be coerced to type %s." msgstr "%s не можна перевести до типу %s." msgid "%s cannot be coerced to any of these types: %s." msgstr "%s не можна перевести до будь-якого з цих типів: %s." msgid "%s is not identical to FALSE." msgstr "%s не збігається з ПОМИЛКОЮ." msgid "%s is not identical to NA." msgstr "%s не збігається з NA." msgid "%s is not identical to TRUE." msgstr "%s не збігається з ВІРНИМ." msgid "Duplicated arguments:" msgstr "Дубльовані аргументи:" msgid "%s has length 0." msgstr "%s має довжину 0." msgid "Only the first value of %s (= %s) will be used." msgstr "Тільки перше значення %s (= %s) буде використане." msgid "There was %d failure%s:\n" msgid_plural "There were %d failures%s:\n" msgstr[0] "Тут %d помилка%s:\n" msgstr[1] "Тут %d помилок%s:\n" msgstr[2] "Тут %d помилок%s:\n" assertive.base/po/R-nl.po0000644000176200001440000000554514001142664014765 0ustar liggesusersmsgid "" msgstr "" "Project-Id-Version: assertive.base 0.0-2\n" "Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base\n" "POT-Creation-Date: 2015-08-11 13:37\n" "PO-Revision-Date: 2015-10-05 14:45+0300\n" "Last-Translator: Aditya Bhagwat \n" "Language-Team: LANGUAGE \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "%s and %s are not identical." msgstr "%s en %s zijn niet identiek." msgid "The values of %s are not all FALSE." msgstr "Niet alle waarden in %s zijn FALSE." msgid "The values of %s are never FALSE." msgstr "Geen enkele waarde in %s is FALSE." msgid "The values of %s are not all NA." msgstr "Niet alle waarden van %s zijn NA." msgid "The values of %s are never NA." msgstr "Geen enkele waarde in %s is NA." msgid "The values of %s are not all TRUE." msgstr "Niet alle waarden in %s zijn TRUE." msgid "The values of %s are never TRUE." msgstr "Geen enkele waarde in %s is TRUE." msgid "The values of %s are sometimes FALSE." msgstr "Sommige waarden in %s zijn FALSE." msgid "The values of %s are all FALSE." msgstr "Alle waarden in %s zijn FALSE." msgid "The values of %s are sometimes NA." msgstr "Sommige waarden in %s zijn NA." msgid "The values of %s are all NA." msgstr "Alle waarden in %s zijn NA." msgid "The values of %s are sometimes TRUE." msgstr "Sommige waarden in %s zijn TRUE." msgid "The values of %s are all TRUE." msgstr "Alle waarden in %s zijn TRUE." msgid "The length of value should be 1 or the length of x (%d) but is %d." msgstr "De lengte van value moet gelijk zijn aan 1 of aan de lengte van x (%d) maar is %d." msgid "(showing the first %d)" msgstr "(de eerste %d worden getoond)" msgid "You must provide a class." msgstr "Je moet een class opgeven." msgid "target_class should be a character vector." msgstr "target_class moet een character vector zijn." msgid "Coercing %s to class %s." msgstr "%s wordt geforceerd naar class %s." msgid "%s cannot be coerced to type %s." msgstr "%s kan niet worden geforceerd naar type %s." msgid "%s cannot be coerced to any of these types: %s." msgstr "%s kan niet worden geforceerd naar eender van beide types: %s." msgid "%s is not identical to FALSE." msgstr "%s is niet identiek aan FALSE." msgid "%s is not identical to NA." msgstr "%s is niet identiek aan NA." msgid "%s is not identical to TRUE." msgstr "%s is niet identiek aan TRUE." msgid "Duplicated arguments:" msgstr "Gedupliceerde argumenten:" msgid "%s has length 0." msgstr "%s heeft lengte 0." msgid "Only the first value of %s (= %s) will be used." msgstr "Alleen de eerste waarde in %s (= %s) wordt gebruikt." msgid "There was %d failure%s:\n" msgid_plural "There were %d failures%s:\n" msgstr[0] "Er was %d failure%s:\n" msgstr[1] "Er waren %d falirues%s:\n" assertive.base/po/R-de.po0000644000176200001440000000560414001142664014740 0ustar liggesusersmsgid "" msgstr "" "Project-Id-Version: assertive.base 0.0-2\n" "Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base\n" "POT-Creation-Date: 2015-08-11 13:37\n" "PO-Revision-Date: 2015-10-05 14:45+0300\n" "Last-Translator: Anja Billing \n" "Language-Team: LANGUAGE \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "%s and %s are not identical." msgstr "%s und %s sind nicht identisch." msgid "The values of %s are not all FALSE." msgstr "Die Werte von %s sind nicht alle FALSE." msgid "The values of %s are never FALSE." msgstr "Die Werte von %s sind nie FALSE." msgid "The values of %s are not all NA." msgstr "Die Werte von %s sind nicht alle NA." msgid "The values of %s are never NA." msgstr "Die Werte von %s sind nie NA." msgid "The values of %s are not all TRUE." msgstr "Die Werte von %s sind nicht alle TRUE." msgid "The values of %s are never TRUE." msgstr "Die Werte von %s sind nie TRUE." msgid "The values of %s are sometimes FALSE." msgstr "Die Werte von %s sind manchmal FALSE." msgid "The values of %s are all FALSE." msgstr "Die Werte von %s sind alle FALSE." msgid "The values of %s are sometimes NA." msgstr "Die Werte von %s sind manchmal NA." msgid "The values of %s are all NA." msgstr "Die Werte von %s sind alle NA." msgid "The values of %s are sometimes TRUE." msgstr "Die Werte von %s sind manchmal TRUE." msgid "The values of %s are all TRUE." msgstr "Die Werte von %s sind alle TRUE." msgid "The length of value should be 1 or the length of x (%d) but is %d." msgstr "The Laenge des Wertes sollte 1 oder die Laenge von x (%d) sein ist aber %d." msgid "(showing the first %d)" msgstr "(zeigt die ersten %d)" msgid "You must provide a class." msgstr "Du musst eine Klasse angeben." msgid "target_class should be a character vector." msgstr "target_class sollte ein Charaktervektor sein." msgid "Coercing %s to class %s." msgstr "Zwingen von %s in Klasse %s." msgid "%s cannot be coerced to type %s." msgstr "%s kann nicht gezwungen werden in %s" msgid "%s cannot be coerced to any of these types: %s." msgstr "%s kann nicht gezwungen werden in keine dieser Typen: %s." msgid "%s is not identical to FALSE." msgstr "%s ist nicht identisch mit FALSE." msgid "%s is not identical to NA." msgstr "%s ist nicht identisch mit NA." msgid "%s is not identical to TRUE." msgstr "%s ist nicht identisch mit TRUE" msgid "Duplicated arguments:" msgstr "Duplizierte Argumente:" msgid "%s has length 0." msgstr "%s hat die Laenge 0." msgid "Only the first value of %s (= %s) will be used." msgstr "Nur der erste Wert von %s (= %s) wird verwendet." msgid "There was %d failure%s:\n" msgid_plural "There were %d failures%s:\n" msgstr[0] "Es ist ein %d Fehler aufgetreten%s:\n" msgstr[1] "Es sind %d Fehler aufgetreten%s:\n" assertive.base/po/R-hu.po0000644000176200001440000000610014001142664014754 0ustar liggesusersmsgid "" msgstr "" "Project-Id-Version: assertive.base 0.0-2\n" "Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base\n" "POT-Creation-Date: 2015-08-11 13:37\n" "PO-Revision-Date: 2015-08-27 14:40+0300\n" "Last-Translator: Gergely Daróczi \n" "Language-Team: LANGUAGE \n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.8.4\n" msgid "%s and %s are not identical." msgstr "%s és %s nem azonos." msgid "The values of %s are not all FALSE." msgstr "A(z) %s értékei közül nem mind FALSE." msgid "The values of %s are never FALSE." msgstr "A(z) %s értékei közül egy sem FALSE." msgid "The values of %s are not all NA." msgstr "A(z) %s értékei közül nem mind NA." msgid "The values of %s are never NA." msgstr "A(z) %s értékei közül egy sem NA." msgid "The values of %s are not all TRUE." msgstr "A(z) %s értékei közül nem mind TRUE." msgid "The values of %s are never TRUE." msgstr "A(z) %s értékei közül egy sem TRUE." msgid "The values of %s are sometimes FALSE." msgstr "Néhány elem a(z) %s értékei közül FALSE." msgid "The values of %s are all FALSE." msgstr "A(z) %s értékei közül mind FALSE." msgid "The values of %s are sometimes NA." msgstr "Néhány elem a(z) %s értékei közül NA." msgid "The values of %s are all NA." msgstr "A(z) %s értékei közül mind NA." msgid "The values of %s are sometimes TRUE." msgstr "Néhány elem a(z) %s értékei közül TRUE." msgid "The values of %s are all TRUE." msgstr "A(z) %s értékei közül mind TRUE." msgid "The length of value should be 1 or the length of x (%d) but is %d." msgstr "" "A \"value\" paraméter hossza 1 vagy \"x\" hosszúságú (%d) kellene legyen %d " "helyett." msgid "(showing the first %d)" msgstr "(az első %d mutatása)" msgid "You must provide a class." msgstr "Hiányzik a \"class\" paraméter." msgid "target_class should be a character vector." msgstr "A \"target_class\" paraméter karakter vektort vár." msgid "Coercing %s to class %s." msgstr "(A)z %s %s osztályba sorolása." msgid "%s cannot be coerced to type %s." msgstr "(A)z %s objektum nem sorolható %s osztályba." msgid "%s cannot be coerced to any of these types: %s." msgstr "(A)z %s objektum nem sorolható egyik osztályba sem: %s." msgid "%s is not identical to FALSE." msgstr "A(z) %s nem FALSE." msgid "%s is not identical to NA." msgstr "A(z) %s nem NA." msgid "%s is not identical to TRUE." msgstr "A(z) %s nem TRUE." msgid "Duplicated arguments:" msgstr "Ismétlődő objektum név:" msgid "%s has length 0." msgstr "A(z) %s hossza 0." msgid "Only the first value of %s (= %s) will be used." msgstr "A(z) %s (= %s) elemei közül csak az első kerül kiértékelésre." msgid "There was %d failure%s:\n" msgid_plural "There were %d failures%s:\n" msgstr[0] "%d hiba fordult elő%s:\n" msgstr[1] "%d hiba fordult elő%s:\n" assertive.base/po/R-assertive.base.pot0000644000176200001440000000403614001142664017450 0ustar liggesusersmsgid "" msgstr "" "Project-Id-Version: assertive.base 0.0-7\n" "Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base/issues\n" "POT-Creation-Date: 2017-06-25 20:34\n" "PO-Revision-Date: 2017-06-25 20:34\n" "Last-Translator: \n" "Language-Team: \n" "Language: LL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=/var/folders/sy/_w4kv6wj37b26k7k52ghxj180000gn/T//RtmpZzZugo/translateme\n" "Content-Transfer-Encoding: 8bit\n" msgid "%s and %s are not identical." msgstr "" msgid "The values of %s are not all FALSE." msgstr "" msgid "The values of %s are never FALSE." msgstr "" msgid "The values of %s are not all NA." msgstr "" msgid "The values of %s are never NA." msgstr "" msgid "The values of %s are not all TRUE." msgstr "" msgid "The values of %s are never TRUE." msgstr "" msgid "The values of %s are sometimes FALSE." msgstr "" msgid "The values of %s are all FALSE." msgstr "" msgid "The values of %s are sometimes NA." msgstr "" msgid "The values of %s are all NA." msgstr "" msgid "The values of %s are sometimes TRUE." msgstr "" msgid "The values of %s are all TRUE." msgstr "" msgid "The length of value should be 1 or the length of x (%d) but is %d." msgstr "" msgid "(showing the first %d)" msgstr "" msgid "You must provide a class." msgstr "" msgid "target_class should be a character vector." msgstr "" msgid "Coercing %s to class %s." msgstr "" msgid "%s cannot be coerced to type %s." msgstr "" msgid "%s cannot be coerced to any of these types: %s." msgstr "" msgid "%s is not identical to FALSE; its value is %s." msgstr "" msgid "%s is not identical to NA; its value is %s." msgstr "" msgid "%s is not identical to TRUE; its value is %s." msgstr "" msgid "There are unnamed elements in x or y, but allow_unnamed_elements = FALSE." msgstr "" msgid "Duplicated arguments:" msgstr "" msgid "%s has length 0." msgstr "" msgid "Only the first value of %s (= %s) will be used." msgstr "" msgctxt "" msgid "There was %d failure%s: " msgid_plural "There were %d failures%s: " msgstr[0] "" msgstr[1] "" assertive.base/po/R-fr.po0000644000176200001440000000565514001142664014765 0ustar liggesusersmsgid "" msgstr "" "Project-Id-Version: assertive.base 0.0-2\n" "Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base\n" "POT-Creation-Date: 2015-08-16 11:17\n" "PO-Revision-Date: 2015-10-05 14:45+0300\n" "Last-Translator: Hisham Ben Hamidane \n" "Language-Team: LANGUAGE \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" msgid "%s and %s are not identical." msgstr "%s et %s ne sont pas identiques." msgid "The values of %s are not all FALSE." msgstr "Les valeurs de %s ne sont pas toutes FALSE." msgid "The values of %s are never FALSE." msgstr "Les valeurs de %s ne sont jamais FALSE" msgid "The values of %s are not all NA." msgstr "Les valeurs de %s ne sont pas toutes NA" msgid "The values of %s are never NA." msgstr "Les valeurs de %s ne sont jamais NA" msgid "The values of %s are not all TRUE." msgstr "Les valeurs de %s ne sont pas toutes TRUE" msgid "The values of %s are never TRUE." msgstr "Les valeurs de %s ne sont jamais TRUE" msgid "The values of %s are sometimes FALSE." msgstr "Les valeurs de %s sont parfois FALSE" msgid "The values of %s are all FALSE." msgstr "Les valeurs de %s sont toutes FALSE" msgid "The values of %s are sometimes NA." msgstr "Les valeurs de %s sont parfois NA" msgid "The values of %s are all NA." msgstr "Les valeurs de %s sont toutes NA" msgid "The values of %s are sometimes TRUE." msgstr "Les valeurs de %s sont parfois TRUE" msgid "The values of %s are all TRUE." msgstr "Les valeurs de %s sont toutes TRUE" msgid "The length of value should be 1 or the length of x (%d) but is %d." msgstr "La longueur de value doit être de 1 ou de la longueur de x (%d) et non de %d" msgid "(showing the first %d)" msgstr "(affichage des premiers %d)" msgid "You must provide a class." msgstr "Une classe doit être specifiée" msgid "target_class should be a character vector." msgstr "target_class doit etre un vecteur de caractères" msgid "Coercing %s to class %s." msgstr "Contrainte de %s en classe %s" msgid "%s cannot be coerced to type %s." msgstr "%s ne peut etre forcé en type %s" msgid "%s cannot be coerced to any of these types: %s." msgstr "%s ne peut etre forcé en aucun des types suivant: %s" msgid "%s is not identical to FALSE." msgstr "%s n'est pas identique à FALSE" msgid "%s is not identical to NA." msgstr "%s n'est pas identique à NA" msgid "%s is not identical to TRUE." msgstr "%s n'est pas identique à TRUE" msgid "Duplicated arguments:" msgstr "Arguments dupliqués:" msgid "%s has length 0." msgstr "%s a une longueur de 0" msgid "Only the first value of %s (= %s) will be used." msgstr "Seule la première valeur de %s (= %s) sera utilisée" msgid "There was %d failure%s:\n" msgid_plural "There were %d failures%s:\n" msgstr[0] "%d echec a été observé%s:\n" msgstr[1] "%d echecs ont été observés%s:\n" assertive.base/po/R-kr.po0000644000176200001440000000572114001142664014764 0ustar liggesusersmsgid "" msgstr "" "Project-Id-Version: assertive.base 0.0-2\n" "Report-Msgid-Bugs-To: https://bitbucket.org/richierocks/assertive.base\n" "POT-Creation-Date: 2015-08-11 13:37\n" "PO-Revision-Date: 2015-08-27 14:40+0300\n" "Last-Translator: Sunkyu Choi \n" "Language-Team: LANGUAGE \n" "Language: kr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" msgid "%s and %s are not identical." msgstr "%s 와 %s는 동일하지 않다." msgid "The values of %s are not all FALSE." msgstr "%s의 값들이 모두 FALSE는 아닙니다." msgid "The values of %s are never FALSE." msgstr "%s의 값들은 절대 FALSE가 아닙니다." msgid "The values of %s are not all NA." msgstr "%s의 값들이 모두 NA는 아닙니다." msgid "The values of %s are never NA." msgstr "%s의 값들은 절대 NA가 아닙니다." msgid "The values of %s are not all TRUE." msgstr "%s의 값들이 모두 TRUE는 아닙니다." msgid "The values of %s are never TRUE." msgstr "%s의 값들은 절대 TRUE가 아닙니다." msgid "The values of %s are sometimes FALSE." msgstr "%s의 값들은 가끔 FALSE 입니다." msgid "The values of %s are all FALSE." msgstr "%s의 값들은 FALSE 입니다." msgid "The values of %s are sometimes NA." msgstr "%s의 값들은 가끔 NA 입니다." msgid "The values of %s are all NA." msgstr "%s의 값들은 NA입니다." msgid "The values of %s are sometimes TRUE." msgstr "%s의 값들은 가끔 TRUE 입니다." msgid "The values of %s are all TRUE." msgstr "%s의 값들은 모두 TRUE 입니다." msgid "The length of value should be 1 or the length of x (%d) but is %d." msgstr "값의 길이는 1 이거나 그 길이의 x (%d)이지만 %d는 아니다." msgid "(showing the first %d)" msgstr "첫번째 %d 보기." msgid "You must provide a class." msgstr "당신은 클래스를 제공해야 합니다." msgid "target_class should be a character vector." msgstr "타켓 클래스는 캐릭터 벡터이어야 합니다." msgid "Coercing %s to class %s." msgstr "%s를 클래스 %s로 강요." msgid "%s cannot be coerced to type %s." msgstr "%s는 타입 %s로 강요 받을 수 없습니다." msgid "%s cannot be coerced to any of these types: %s." msgstr "%s는 다른 어떤 타입들로 강요 받을 수 없습니다: %s." msgid "%s is not identical to FALSE." msgstr "%s는 FALSE와 같지 않습니다." msgid "%s is not identical to NA." msgstr "%s는 NA와 같지 않습니다." msgid "%s is not identical to TRUE." msgstr "%s는 TRUE와 같지 않습니다." msgid "Duplicated arguments:" msgstr "이중 인수:" msgid "%s has length 0." msgstr "%s는 0 길이를 갖습니다." msgid "Only the first value of %s (= %s) will be used." msgstr "오직 첫번째 %s의 (= %s) 값만 사용 되어 질 것 입니다." msgid "There was %d failure%s:\n" msgid_plural "There were %d failures%s:\n" msgstr[0] "%d 실패 %s:\n"