Changes in version 2.3.3 (2025-08-18) - Removed deprecated calls to internal R functions. - Fixed a minor bug in allMissing() for complex numbers where either the real part or the imaginary part was missing while the other part was not missing (#279). - Dropped usage for internal C function isFrame() for recent R versions (278). - Improved documentation (#273, #264). Changes in version 2.3.2 (2024-07-29) - 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) Changes in version 2.3.1 (2023-12-04) - Fixed a sprintf format string for long integers. Changes in version 2.3.0 (2023-10-25) - 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). Changes in version 2.2.0 (2023-04-27) - 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. Changes in version 2.1.0 (2022-04-21) - New arguments n.chars and max.chars for checkCharacter() and checkString(). - Checks for integerish now compare the tolerance with the difference to the nearest integer with > instead of >= to allow specifying a tolerance of exactly 0 (#177). - Checks for integerish now check for class Date an POSIXt. - Coercion of double to integer in assertInt() and assertIntegerish() now round to the nearest integer instead of always rounding via trunc(). - 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 via AssertCollection (#112). - New exported C function qcheck() (#180). - Fixed a bug in checkFunction(..., ordered = TRUE) (#204). - Removed deprecated S macro DOUBLE_EPS from C source. Changes in version 2.0.0 (2020-02-06) - Expectations now optionally support the package tinytest. tinytest is used as backend if it is attached, otherwise checkmate defaults to testthat. There is now also a vignette on how to setup checkmate for tinytest. - Coercion now only affects double vectors. - Improved error message for type detection in *List. - Removed *Bit, the bit package is orphaned. - Fixed documentation. Changes in version 1.9.4 (2019-07-04) - Fixed factors being detected as integerish. - Fixed error message for name checks of vectors. Changes in version 1.9.3 (2019-05-03) - New argument extension for checkPathForOutput() (#162). - Fixed handling of different NA types in all set functions (#158). - expect_vector removed due to a nameclash with package testthat. Changes in version 1.9.2 - 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. Changes in version 1.9.1 (2019-01-15) - Fix segfault on Solaris - Fix warnings reported by rchk - Fix checking private slots in checkR6 (#156) Changes in version 1.9.0 (2019-01-09) - 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 always FALSE and expect-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 to assertCount/assert_count, assertInt/assert_int and assertIntegerish/assert_integerish which optionally coerces x to integer after an successful assertion. This supersedes the functions asCount, asInt and asInteger (#77). - Added arguments max.rows and max.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: https://github.com/Rdatatable/data.table/issues/3149 Changes in version 1.8.5 (2017-10-24) - 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 to ls() anymore to support R versions prior to v3.2.0. Changes in version 1.8.4 (2017-09-25) - 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 or bit. This ensures that all operations work as expected after the check. - *Names with type="unnamed" now works with NULL. - New argument must.include for *Names. - Fixed possible protection stack imbalance as reported by rchk. Changes in version 1.8.3 (2017-07-03) - New argument sorted (defaults to FALSE) for *Integer, *Integerish and Numeric to check for ascending order of vector elements. - New argument null.ok (defaults to FALSE) for *Choice and *Class. - *Subset now allows to pass empty vectors to choices. - 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 argument min.chars). To disallow missing values, set any.missing or na.ok, respectively. - *Date now ignores missing values in for lower/upper bound checks. To disallow missing values, set any.missing to FALSE. 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. Changes in version 1.8.2 (2016-11-02) - *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 and asCount). - Added checkTibble. Changes in version 1.8.1 (2016-06-28) - Function test_file is longer exported. - *Function does not longer lookup functions with match.fun. As a result, passing functions via the string of the function name stopped working. - In qassert using f as first char in a rule now specifies factor (before: function). Changes in version 1.8.0 (2016-06-06) - Most functions now support the handling of default arguments encoded as NULL via argument null.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 in assert(). Changes in version 1.7.4 (2016-04-08) - Compatibility with the upcoming testthat version. - expect_ functions now return the checked object invisibly. - Changed default of argument .var.name for assertions and label for expectations: They now default to the return value of the exported function vname (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 and qtestr where the error message was not properly generated if multiple rules were provided. - New argument depth for qtestr to control the recursion depth while checking nested lists. Changes in version 1.7.3 (2016-03-10) - 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. Changes in version 1.7.2 (2016-02-25) - 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 and ignore.case for the *String family of functions. - Exported helper functions wf (which.first) and wl (which.last). - Now importing the new backports package for functions lengths() and dir.exists. Changes in version 1.7.1 (2016-02-02) - Fixed a segfault while checking an upper bound in qassert/qtest. - Some minor speedups Changes in version 1.7.0 (2016-01-23) - Added alias functions for all functions to support the underscore style, e.g. assert_numeric is the new alias for assertNumeric and test_matrix is the alias for test_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 and makeExpectation to assist expanding the package with user-generated checks. - Added functions makeAssertionFunction, makeTestFunction and makeExpectationFunction to automatically create the respective functions based on a provided check function. Changes in version 1.6.3 (2015-10-23) - Assertions can now be collected (via makeAssertCollection()) and reported (via reportAssertions()). - 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. Changes in version 1.6.2 (2015-07-26) - 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. The expect_* family of functions can still be used, the namespace will be loaded on demand. Changes in version 1.6.1 (2015-07-17) - New family of functions: expect_* is intended to be used in combination with testthat. But note that functions expect_null() and expect_named() are not provided to avoid name clashes with testthat. - Added qexpect() and qexpectr(). - Added argument all.missing for checks of matricies and data frames. - Added anyNaN(). - Clarified documentation for assert() and allMissing(). - Fixed a bug where bound checks were performed on missing values. - Fixed a bug where missingness was not correctly detected in data frames. Changes in version 1.6.0 (2015-06-19) - 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. Changes in version 1.5.3 (2015-05-13) - 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". Changes in version 1.5.2 (2015-03-20) - 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. Changes in version 1.5.1 (2014-12-14) - 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. Changes in version 1.5.0 (2014-10-19) - Added checkNames(). - Added checkPercentage(). - Added anyInfinite(). - Fixed error messages for some dimension checks. - Fixed an error while checking numerics for finiteness. Changes in version 1.4 (2014-09-03) - 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. Changes in version 1.3 (2014-08-15) - Fixed a bug where logical values passed a check for numerics in qassert. - Family *SetEqual: new argument "ordered". - checkPathForOutput: new argument "overwrite". Changes in version 1.2 (2014-07-21) - Fixed bug in checkList. - Fixed dimnames check on empty matrices and data frames. - Added *SetEqual functions. Changes in version 1.1 (2014-06-28) - 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 and checkDataFrame. Changes in version 1.0 (2014-06-17) - Initial release on CRAN.