aboutsummaryrefslogtreecommitdiff
path: root/test/common
AgeCommit message (Collapse)Author
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-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-10-09JANITORIAL: Remove more trailing spacesEugene Sandulenko
2016-09-05TESTS: Fix warningEugene Sandulenko
2016-06-04TESTS: Fix SortedArray testEugene Sandulenko
2016-05-23TESTS: Implement SortedArray testEugene 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-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
2014-12-21TEST: Create test cases for reading uint64 from a streamAdrian Astley
2014-12-19TEST: Add unit tests for uint64 readingAdrian Astley
2014-08-07TEST: Remove odd test in rendermode tests.Johannes Schickel
This specific test checked whether the pointer for two static strings have a different address. Since the specific strings checked had the same "value" string pooling optimizations will result in them to have the same address and thus make this test fail. Furthermore, the test seemed completely pointless, I simply dropped it now.
2014-03-30ALL: Resolve multiple clang warningsMax Horn
2013-07-10TEST: Whitespaces in test/common/Tobia Tesan
2013-07-10TEST: removed fixed hashes in test/common/hash-str.hTobia Tesan
The hash function does not necessarily have to conform to one specific algorithm as long as equals/differs is respected.
2013-07-10TEST: Thorough testing for common/hash-str.hTobia Tesan
We test the various equal_to and hash functions therein.
2013-07-10TEST: reorganize test/common/util.hTobia Tesan
Split a few test cases in two. The resulting file is now better organized.
2013-07-10TEST: tests for common/rendermode.hTobia Tesan
tests for parseRenderMode, renderMode2GUIO and getRenderModeCode.
2013-07-10TEST: test cases for common/util.cppTobia Tesan
2013-07-10TEST: tests for common/huffman.hTobia Tesan
A few tests for the Huffman decoder. The encoding is the example from Wikipedia. This could be improved by someone more knowledgeable by generating one at runtime or using multiple encodings which would each contain one edge case.
2013-06-20COMMON: Add erase method to String classrichiesams
2013-01-26TESTS: Add failing test for repeated seeks in BufferedSeekableReadStreamWillem Jan Palenstijn
2012-12-16TEST: Add missing includeBastien Bouclet
2012-12-16TEST: Add some tests for Common::BitStreamImplBastien Bouclet
2012-10-09TEST: Add two (simple) tests for MemoryWriteStream.Johannes Schickel
2012-03-11TEST: Add a test case for SafeSeekableSubReadStream::eos handling.Johannes Schickel
2012-03-11TEST: Add a test case for MemoryReadStream::eos handling.Johannes Schickel
2012-02-22TEST: Silence some signed/unsigned comparison warnings.Johannes Schickel
2012-02-15JANITORIAL: Fix missing whitespace in pointer castTarek Soliman
find -name '*.h' -or -name '*.cpp' | xargs sed -r -i 's@\(([A-Za-z0-9]+)\*\)@(\1 *)@g' This seems to have caught some params as well which is not undesirable IMO. It also caught some strings containing this which is undesirable so I excluded them manually. (engines/sci/engine/kernel_tables.h)
2011-10-09TEST: Extend Common::Array copy-constructor test a bit.Johannes Schickel
2011-08-19TEST: Add a very tiny and simple unit test for intLog2.Johannes Schickel
2011-08-07COMMON: Replace x + ARRAYSIZE(x) by the simpler ARRAYEND(x).Christoph Mallon
2011-08-07JANITORIAL: Remove trailing empty lines.Christoph Mallon
2011-06-03COMMON: Let Common::normalizePath normalize '..' in pathsMax Horn
There are some unit tests to verify that this works correctly. There is a small chance that this causes regressions in weird setups.