- Removed calls to deprecated / internal C routines.
- Fixed compiler warnings regarding sprintf format strings.
- Fixed an issue regarding sortedness and missing numeric values (#259, thanks to @tdeenes)
- Fixed a sprintf format string for long integers.
NULL
is not longer considered to be atomic in future versions of R (c.f. https://stat.ethz.ch/pipermail/r-devel/2023-September/082892.html). To avoid breaking reverse dependencies, checkmate will stick to the old behavior until further notice.- Fixed a warning in
checkAtomic()
(#245).
- Fixed C compiler warnings for windows
- Added
checkPermutation
(#230). - Better handling of long vectors (#231).
- Fixed a bounds check for numeric vectors and infinite bounds.
- New arguments
n.chars
andmax.chars
forcheckCharacter()
andcheckString()
. - Checks for integerish now compare the tolerance with the difference to the
nearest integer with
>
instead of>=
to allow specifying a tolerance of exactly0
(#177). - Checks for integerish now check for class
Date
anPOSIXt
. - Coercion of double to integer in
assertInt()
andassertIntegerish()
now round to the nearest integer instead of always rounding viatrunc()
. - Fixed an error message where the wrong variable name was reported by
assert()
(#182). - Checks on POSIXct dates with storage mode integer should now work instead of raising an exception (#175).
*Matrix()
and*Array()
now allow different storage types than the one specified if all values are missing (#184).- Function
assert()
now supports collecting assertions viaAssertCollection
(#112). - New exported C function
qcheck()
(#180). - Fixed a bug in
checkFunction(..., ordered = TRUE)
(#204). - Removed deprecated S macro
DOUBLE_EPS
from C source.
- Expectations now optionally support the package
tinytest
.tinytest
is used as backend if it is attached, otherwise checkmate defaults totestthat
. There is now also a vignette on how to setupcheckmate
fortinytest
. - Coercion now only affects double vectors.
- Improved error message for type detection in
*List
. - Removed
*Bit
, thebit
package is orphaned. - Fixed documentation.
- Fixed factors being detected as integerish.
- Fixed error message for name checks of vectors.
- New argument
extension
forcheckPathForOutput()
(#162). - Fixed handling of different NA types in all set functions (#158).
expect_vector
removed due to a nameclash with packagetestthat
.
assert*(..., coerce = TRUE)
does not drop names during conversion (#157), thanks to @mb706.- Fixed documentation in
checkDataFrame
(#159), thanks to @harvey131. - Changed heuristic in
vname()
to improve lookup of variable names.
- Fix segfault on Solaris
- Fix warnings reported by rchk
- Fix checking private slots in
checkR6
(#156)
- Error messages now provide more information about error locations, e.g., the position of the first missing element in a vector.
- If the object to check is missing,
assert
-functions now give a better error message,test
-functions are alwaysFALSE
andexpect
-functions always raise an exception. - Checks for missingness and sort order optimized for ALTREPs.
- The calling frame reported in assertions is now identical to the calling
frame reported by R's
stop()
function (#117). - Added
checkDouble
to explicitly check for non-integer numerics. - Added
checkRaw
to check raw vectors. - Added
checkFormula
to check formula objects. - Added
checkMultiClass
to check for inheritance from a set of candidates - Added
checkDisjunct
to check sets for being disjunct. - Added abbreviation
"p"
to qassert to check for POSIXct objects. - Added argument
coerce
toassertCount
/assert_count
,assertInt
/assert_int
andassertIntegerish
/assert_integerish
which optionally coercesx
to integer after an successful assertion. This supersedes the functionsasCount
,asInt
andasInteger
(#77). - Added arguments
max.rows
andmax.cols
to check for maximum number of rows and columns for matrices, data.frames, tibbles and data.tables. - Added argument
disjunct.from
to*Names
. - Fixed an error message in
checkChoice
. - Fixed
*Function
to work properly with Primitives. - Fixed
*List
where the check for missingness was broken. - Workaround for
*DataTable
for the detection of the number of rows of null data.tables: Rdatatable/data.table#3149
- Added
*POSIXct
to check POSIXct data-time objects in POSIXct format. - The set functions optionally support the package
fastmatch
now. - Argument
sorted = TRUE
is not passed tols()
anymore to support R versions prior to v3.2.0.
- New functions to test bit vectors implemented in package
bit
. - New functions to test R6 classes implemented in package
R6
. - Always load (not attach) the respective namespace if checking for objects of
type
data.table
,tibble
,R6
orbit
. This ensures that all operations work as expected after the check. *Names
withtype="unnamed"
now works withNULL
.- New argument
must.include
for*Names
. - Fixed possible protection stack imbalance as reported by
rchk
.
- New argument
sorted
(defaults toFALSE
) for*Integer
,*Integerish
andNumeric
to check for ascending order of vector elements. - New argument
null.ok
(defaults toFALSE
) for*Choice
and*Class
. *Subset
now allows to pass empty vectors tochoices
.- Improved error message for
*Choice
. - The set family of functions is now more restrict regarding the class, e.g. they differentiate between factors and characters.
*Character
and*String
now ignores missing values in regular expressions and for string length checks (using argumentmin.chars
). To disallow missing values, setany.missing
orna.ok
, respectively.*Date
now ignores missing values in for lower/upper bound checks. To disallow missing values, setany.missing
toFALSE
. Thanks to Will Beasley (@wibeasley) for the PR.- Package
microbenchmark
is no longer strictly required to build the vignette. If not installed, some output and figures will be missing though.
*Matrix
and*Array
now additionally allow to check for integerish storage type via argument "mode".- Functions
*Count
,*Int
,*Number
,*Integer
,*Integerish
and*Numeric
do not accept logical values any more. checkAtomicVector
is now more restrictive and prohibits a dimension symbol. Thus, a matrix is not considered an atomic vector any more.- Dropped support for AssertCollections in convert functions (
asInt
,asInteger
andasCount
). - Added
checkTibble
.
- Function
test_file
is longer exported. *Function
does not longer lookup functions withmatch.fun
. As a result, passing functions via the string of the function name stopped working.- In
qassert
usingf
as first char in a rule now specifies factor (before: function).
- Most functions now support the handling of default arguments encoded as
NULL
via argumentnull.ok
. - Functions
*File
and*Directory
are deprecated due to name clashes and will be removed in a future version. Please use*FileExists
or*DirectoryExists
instead. - New helper function
matchArg
to provide a simple an easy way for partial argument matching in combination with an AssertCollection. - Added alias functions for all check functions (
check_*
) to provide support for the underscore programming style inassert()
.
- Compatibility with the upcoming testthat version.
expect_
functions now return the checked object invisibly.- Changed default of argument
.var.name
for assertions andlabel
for expectations: They now default to the return value of the exported functionvname
(instead of missing which confuses some linters). - Fixed error message in convert functions: Variable name was not properly looked up by the heuristic.
- Fixed a bug in
qassertr
andqtestr
where the error message was not properly generated if multiple rules were provided. - New argument
depth
forqtestr
to control the recursion depth while checking nested lists.
- Added
checkDate
. - Argument
.var.name
of assert functions now has \code{NULL} as default value (instead of missing). - Fixed a bug in
*OS
functions. - Fixed a bug in
*Directory
functions. - New argument
extension
for the*File
family of functions.
- Added
checkOS()
. - Argument
fixed
for*Character
functions now accepts a string instead of a boolean value and thus can directly be used for a substring search. - New arguments
min.chars
,pattern
,fixed
andignore.case
for the*String
family of functions. - Exported helper functions
wf
(which.first) andwl
(which.last). - Now importing the new backports package for functions
lengths()
anddir.exists
.
- Fixed a segfault while checking an upper bound in qassert/qtest.
- Some minor speedups
- Added alias functions for all functions to support the underscore style, e.g.
assert_numeric
is the new alias forassertNumeric
andtest_matrix
is the alias fortest_matrix
. - All assert functions now invisibly return the tested object instead of
TRUE
and thus can be used with magrittr pipes. - Improved speed for most functions by reducing the .Call overhead (Thanks to Hadley Wickham).
- Added
*DataTable
functions to properly test primary and secondary keys of data tables. - Removed
*Percentage
family of functions. - Exported functions
makeAssertion
,makeTest
andmakeExpectation
to assist expanding the package with user-generated checks. - Added functions
makeAssertionFunction
,makeTestFunction
andmakeExpectationFunction
to automatically create the respective functions based on a provided check function.
- Assertions can now be collected (via
makeAssertCollection()
) and reported (viareportAssertions()
). qassert()
can now perform bound checks on strings.- The default for the parameter "ordered" of the
*SetEqual
functions is now set to FALSE, as described in the documentation.
- Fixed a compile-time warning.
- checkmate does not import
testthat
anymore in order to speed up package loading times and to keep the dependencies at a minimum. Theexpect_*
family of functions can still be used, the namespace will be loaded on demand.
- New family of functions:
expect_*
is intended to be used in combination with testthat. But note that functionsexpect_null()
andexpect_named()
are not provided to avoid name clashes with testthat. - Added
qexpect()
andqexpectr()
. - Added argument
all.missing
for checks of matricies and data frames. - Added
anyNaN()
. - Clarified documentation for
assert()
andallMissing()
. - Fixed a bug where bound checks were performed on missing values.
- Fixed a bug where missingness was not correctly detected in data frames.
- Started to support long vectors.
- Added a short vignette.
- Improved documentation.
- New argument "combine" for
assert()
to allow combining check functions with an AND instead of an OR.
- Fixed a bug regarding the number of rows in zero-column data frames.
- Fixed a bug where the type of lists with dimension attribute where reported as "array" or "matrix".
- Family *Array: new arguments "min.d" and "max.d".
- Family *Array and *Matrix: Argument "mode" now additionally accepts strings "list" and "atomic".
- Fixed:
(assert|check|test)Character(NA_character_, min.chars = 1)
does not eval to TRUE anymore. - New arguments for
*Factor
functions:(n|min|max).levels
. - Improved error messages for type and length checks.
- Improved error messages for missing arguments.
- Included a workaround for R's nrow and ncol to properly work with data frames.
- Fixed a bug handling complex number in checks for integerish values.
- Improved documentation.
- Added
checkNames()
. - Added
checkPercentage()
. - Added
anyInfinite()
. - Fixed error messages for some dimension checks.
- Fixed an error while checking numerics for finiteness.
- Fixed a bug where rownames and colnames of data.frames where not retrieved correctly.
- Fixed a bug in
checkVector()
(wrong order of arguments in call to C). - Filesystem access: checks for write and executable rights are now disabled on windows.
- Fixed a bug where logical values passed a check for numerics in
qassert
. - Family
*SetEqual
: new argument "ordered". checkPathForOutput
: new argument "overwrite".
- Fixed bug in checkList.
- Fixed dimnames check on empty matrices and data frames.
- Added
*SetEqual
functions.
- Improved error messages in
assert*
functions. - New argument 'empty.ok' for
*Subset
functions. assert()
now returns TRUE invisibly (as documented).- Fixed handling of zero-length arguments in
checkFunction()
. - Fixed error message if duplicated values where found.
- Fixed a missing check for row names in
checkMatrix
andcheckDataFrame
.
- Initial release on CRAN.