aboutsummaryrefslogtreecommitdiff
path: root/test
AgeCommit message (Collapse)Author
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
2016-05-23BUILD: Fix test compilation with event recorder enabledEugene Sandulenko
2016-05-16COMMON: Add replace functions to Common and String.Borja Lorente Escobar
COMMON: Add replacement to common/algorithm.h COMMON: Intermediate commit to show doubts. COMMON: Basic String::replace() methods implemented. COMMON: Fix typo in the algorithm.h documentation. COMMON: Fix documentation of String::replace() COMMON: Fix formatting issues in method signatures. COMMON: Add assert and reformat loops in str and algorithm. COMMON: Fix typo in comment. COMMON: Fix style in string test cases. COMMON: Add Doxygen documentation to algorithm and String. COMMON: Add Doxygen documentation to algorithm and String. COMMON: Add Doxygen documentation to algorithm. COMMON: Fix style in algorithm comments. COMMON: Add Doxygen comments to String. COMMON: Add Doxygen comments to algorithm test function. COMMON: Add String support for substring replace. COMMON: Fix string replace to comply with STL COMMON: Fix documentation on string replace COMMON: Fix style in string replace COMMON: Fix unwanted reference problem in String::replace(). COMMON: Fix indentation in comments for replace COMMON: Fix indentation in replace COMMON: Fix comments in String::replace to match implementation. COMMON: Remove assert to allow for not-null-terminated character arrays COMMON: Add new test for String::replace COMMON: Fix broken comments on String::replace COMMON: Fix sharing bug on ensureCapacity COMMON: Remove superfluous call to makeUnique()
2016-02-18COMMON: Add convenience method to Common::Rational for 1:1 ratiosColin Snover
For SCI engine games, ratios may not be normalised and so to avoid extra scaling, there needs to be a way to simply check whether a ratio is 1:1.
2016-02-18COMMON: Add methods for inserting and erasing with iteratorsColin Snover
This provides improved feature parity to Common::List and is used in SCI32 engine.
2016-01-26COMMON: Allow '#' to only match digits in matchString.Johannes Schickel
2015-11-10COMMON: More sort unit testsBertrand Augereau
2015-01-18TEST: Use "/usr/bin/env python" as the shebang line in cxxtestgen.pyclone2727
2015-01-04TEST: Fix another typo in uint64 endian tests.Johannes Schickel
2015-01-04TEST: Fix uint64 endian related test code.Johannes Schickel
This does not fix the actual implementation issues which are present right now!
2015-01-04TEST: Fix C++11 compat warnings.Johannes Schickel
2015-01-04Merge pull request #508 from RichieSams/add_endian_and_stream_support_for_int64Eugene Sandulenko
COMMON: Add support for endian-safe reading/writing of int64
2014-12-21TEST: Create test cases for reading uint64 from a streamAdrian Astley
2014-12-20AUDIO: Wrap around in the Timestamp constructorBastien Bouclet
The "making of" video in the Xbox version of Myst III is unusually long. VideoDecoder::FixedRateVideoTrack::getFrameTime would trigger an overflow.
2014-12-19TEST: Add unit tests for uint64 readingAdrian Astley