aboutsummaryrefslogtreecommitdiff
path: root/test
AgeCommit message (Collapse)Author
2019-04-13COMMON: Use a prefix table to speed up the Huffman decoderBastien Bouclet
Symbols for codes shorter than the prefix table index width are stored in the table. All the entries in the table with an index starting with the code are set to the symbol value. That way, when decoding it is possible to get the number of bits corresponding to the table width from the bitstream and directly find the symbol value. Longer code still need to be searched for in the codes list.
2019-04-13COMMON: Rework the BitStream class to improve its performanceBastien Bouclet
* Fixed peekBits not to seek the underlying stream. Seeking can be slow when the stream is a file. * Changed multi-bit operations to work on multiple bits at once rather than iterating over single-bit operations. This is an almost direct port of a patch for xoreos provided by DrMcCoy.
2019-04-12TESTS: Reduce error for double precision math testThierry Crozat
If we want to properly test the computation is in double precision, we should be using a much smaller error than the one used for the single precision tests.
2019-04-11TESTS: Use relative difference for math testsDavid Fioramonti
Also add double template variants and use already defined delta assert macro.
2019-04-11TESTS: further reduce precision for math testsDavid Fioramonti
Since the math is doing subtraction on numbers around 360 and single precision has about ~7 decimal digits of accuracy we can only compare numbers to 360.0001 to be safe i'll use 1e-3.
2019-04-11TESTS: reduce precision for math testsDavid Fioramonti
I can't reproduce any precision issues on my machine so this is only a guess.
2019-04-11TESTS: Use Less than or equal to for math testsDavid Fioramonti
This should fix debian build. Its seems the precision that debian is using is rounding the error delta to zero so that the actual error is not less than this.
2019-04-06TESTS: Use M_PI for Common math testsDavid Fioramonti
Instead of defining a new variable constant pi we use M_PI.
2019-04-06COMMON: add tests for Common::StringJaromir Wysoglad
I added tests for firstChar, setChar, insertChar
2019-04-06COMMON: add test for Common::isPunctJaromir Wysoglad
2019-04-06COMMON: add 2 tests for common/math.hJaromir Wysoglad
2019-03-03COMMON: Allow '\#' to match '#' in matchStringsluicebox
matchString patterns couldn't be used to find files with the # character as it was only treated as a digit wildcard. SCI expected that to work as it looks for files that start with the # character.
2017-11-20TESTS: Remove zero-length string and associated -Wformat massageColin Snover
This was being patched out downstream in Debian. A solution that works for everybody is to just not use a zero-length string when testing formatting with no conversion specifications.
2017-11-18TESTS: Remove unnecessary heap allocationColin Snover
2017-11-18COMMON: Add limited support for custom deleters to ScopedPtrColin Snover
Custom deleters of ScopedPtr are not currently fully conforming to C++11's support for custom deleters in std::unique_ptr for the sake of simplicity of implementation. Unlike in the standard library, plain functions and lvalue references are not supported, nor may custom deleters be passed to the constructor at runtime. This can be improved in the future, if necessary, by doing what standard library implementations usually do and creating a Pair class that uses the Empty Base Optimization idiom to avoid extra storage overhead of the deleter instance when it is not needed, as in typical standard library implementations, plus some additional type traits to support the necessary metaprogramming for the different type overloads.
2017-11-10COMMON: Add basic fixed-width word wrap to Common::StringColin Snover
2017-10-06COMMON: Allow construction of Arrays of non-copyable membersColin Snover
Although the previous count-constructor would never make a copy of a member at runtime, Array<T>::reserve *may* copy-construct, so the compiler would forbid creation of arrays of NonCopyable objects even when the array was created only once and then never resized (and thus never actually tried to perform a copy-construction).
2017-09-30COMMON: Add standard data method to Common::ArrayColin Snover
This matches the C++11 std::vector method of the same name, and replaces usage of taking the address of the first element of an array by &array[0] or &array.front() or &*array.begin(). The data method is better than these usages because it can be used even when the array is empty.
2017-09-30COMMON: Add standard count & count+copy array constructorsColin Snover
These are additions to match C++11 std::vector common init patterns, to make Common::Array cover more common use cases where C-style arrays are currently used (and should not be).
2017-08-24COMMON: Add BitStream classes for memory buffersWillem Jan Palenstijn
2017-06-08COMMON: Make SpanOwner copy assignment make a copy of the owned SpanColin Snover
To move data from one SpanOwner to another, use `moveFrom`. Thanks @waltervn for pointing out the problem.
2017-03-30COMMON: Reduce maximum Span size to 4GiBColin Snover
Until C++11 (which introduces the z and t length modifiers), there is no consistent way to print size_t and ptrdiff_t types using printf formatting across 32-bit, LLP64, and LP64 architectures without using a cumbersome macro to select the appropriate length modifier for the target architecture. Since ScummVM engines currently need to support 32-bit targets, there is no reason at the moment to support any larger memory sizes in Span anyway. Span error output is also updated in this commit to reflect that index values are unsigned.
2017-02-08COMMON: Fix calling Span::getStringAt with non-zero indexColin Snover
2017-01-23TESTS: Fix tests buildingEugene Sandulenko
2017-01-23TESTS: Revert changes to module MakefileEugene Sandulenko
The recent changes were made in attempt to fix the test building for NDS target, but since we're not building tests there, these changes are reverted for the sake of cleaner code.
2017-01-23TESTS: Fix missing QUIET_CXX option in MakefileEugene Sandulenko
2017-01-23TESTS: Attempt to fix Makefile for NDS buildEugene Sandulenko
2017-01-23TESTS: Fix linking target in MakefileEugene Sandulenko
2017-01-15BUILD: Fix PSP build of test runnerColin Snover
2017-01-15BUILD: Fix N64 build of test runnerColin Snover
2017-01-15TESTS: Build Wintermute test only for static pluginEugene Sandulenko
2017-01-15BUILD: Fix compilation of test runner on DreamcastColin Snover
LIBS needs to go after LDFLAGS for the Dreamcast linker to run correctly.
2017-01-14TESTS: Attempt to fix buildbot builds for backends with extra flagsColin Snover
2017-01-14TESTS: Fix building Common::Span test on big endian systemsBastien Bouclet
2017-01-08COMMON: Simplify Span codeColin Snover
Implicitly generated constructors can be used instead of explicit constructors, which reduces the amount of necessary boilerplate. Long lists of identical typedefs to the superclass are now defined using a macro. data() const now returns a pointer to data that matches the value_type of the data, instead of forcing the data to be const. This better matches the intent of the Span class, which provides a view into data, rather than being a container that holds data.
2017-01-08COMMON: Add more lcov-guided Span testsColin Snover
2017-01-08COMMON: Improve test coverage for Span and fix bugs from testingColin Snover
2017-01-08COMMON: Add Span to common libraryColin Snover
Span is roughly modelled on the GSL span<T> type, and is intended to replace direct access to raw pointers -- especially pointers that are passed to functions along with a separate size parameter. It provides low-cost bounds-checked reads and writes, as well as convenience functions for reading common values (integers of varying endianness, strings, etc.). While similar to MemoryReadStream in purpose, Span is superior in cases where memory is writable, where memory is accessed randomly rather than sequentially, or where any invalid access should be treated as an unrecoverable error. It should also be more efficient than a MemoryReadStream because it is implemented using CRTP, so there is no runtime overhead from dynamic dispatch. NamedSpan is an extension of Span which provides enhanced debugging information when out-of-bounds memory accesses occur. It allows programmers to name the memory span at construction time, and it also tracks the offsets of subspans so that the absolute byte offset of the original memory can be provided in the error message if an out-of-bounds access occurs. SpanOwner is similar to ScopedPtr but has awareness of the design of Span objects, so allows the memory pointed to by the Span object inside the SpanOwner to be freed when the SpanOwner is freed without requiring holding a separate pointer to the start of memory. It also provides some copy semantics, so unlike a ScopedPtr, SpanOwners can be held by objects in movable containers like Common::Array -- but note that because there are no move semantics in C++98, this means that a new, complete memory copy of the pointed-to data will be created, rather than just a new Span pointing to the same block of memory, when a container holding a SpanOwner expands.
2017-01-05TESTS: Fix warningsWillem Jan Palenstijn
2017-01-05COMMON: Add strnlen for safer C string length readsColin Snover
This API is intended for use in cases where C strings come from untrusted sources like game files, where malformed data missing the null terminator would cause strlen to read out of bounds.
2016-12-27TEST: Only build Wintermute tests when that engine is enabledColin Snover
2016-12-26Merge pull request #874 from tobiatesan/fix_getfilename_cr5Eugene Sandulenko
WINTERMUTE: Fix PathUtils and add workaround for mixed separators
2016-12-26WINTERMUTE: Try to "correctly" handle dir pathsTobia Tesan
I put scare quotes around "correctly" because I can't swear this is the intended behaviour of the original interpreter. I don't think accessing filenames that end with / in the .DCPs is even defined behaviour, so this is a best guess.
2016-12-26WINTERMUTE: only access -1th char of string if length > 0 in getFileNameTobia Tesan
Fixes #6594
2016-12-26WINTERMUTE: Add tests for engines/wintermute/path_utils.hTobia Tesan
2016-10-09JANITORIAL: Remove more trailing spacesEugene Sandulenko
2016-09-05TESTS: Fix warningEugene Sandulenko
2016-07-28Revert "BUILD: Fix test compilation with event recorder enabled"Bastien Bouclet
This reverts commit 1f8667c5d949070035390531e4f10c0f945d7352.
2016-06-04TESTS: Fix SortedArray testEugene Sandulenko
2016-05-23TESTS: Implement SortedArray testEugene Sandulenko