Commit Graph
238 Commits
Author SHA1 Message Date
Colin Snover 9ff41967a0 BUILD: Fix PSP build of test runner 2017-01-15 18:32:07 -06:00
Colin Snover 5d22cc438f BUILD: Fix N64 build of test runner 2017-01-15 13:49:33 -06:00
Eugene Sandulenko c46697be48 TESTS: Build Wintermute test only for static plugin 2017-01-15 18:30:13 +01:00
Colin Snover 871c9d26b2 BUILD: Fix compilation of test runner on Dreamcast
LIBS needs to go after LDFLAGS for the Dreamcast linker to run
correctly.
2017-01-15 11:17:52 -06:00
Colin Snover 4510c3ec27 TESTS: Attempt to fix buildbot builds for backends with extra flags 2017-01-14 16:45:32 -06:00
Bastien Bouclet ce343f7168 TESTS: Fix building Common::Span test on big endian systems 2017-01-14 10:36:04 +01:00
Colin Snover 3cfc396ecd COMMON: Simplify Span code
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-08 14:08:16 -06:00
Colin Snover 9c60bcf069 COMMON: Add more lcov-guided Span tests 2017-01-08 13:21:10 -06:00
Colin Snover 2558b20cdd COMMON: Improve test coverage for Span and fix bugs from testing 2017-01-08 13:20:23 -06:00
Colin Snover 640f6039ca COMMON: Add Span to common library
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-08 13:20:23 -06:00
Willem Jan Palenstijn c919c9996c TESTS: Fix warnings 2017-01-05 22:07:24 +01:00
Colin Snover 9d3893459f COMMON: Add strnlen for safer C string length reads
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.
2017-01-05 22:07:24 +01:00
Colin Snover 6687d9c1ab TEST: Only build Wintermute tests when that engine is enabled 2016-12-27 12:30:24 -06:00
Eugene Sandulenko 8477c4beb2 Merge pull request #874 from tobiatesan/fix_getfilename_cr5
WINTERMUTE: Fix PathUtils and add workaround for mixed separators
2016-12-26 16:15:38 +01:00
Tobia Tesan 72376681af WINTERMUTE: Try to "correctly" handle dir paths
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-26 12:05:41 +01:00
Tobia Tesan 9339490236 WINTERMUTE: only access -1th char of string if length > 0 in getFileName
Fixes #6594
2016-12-26 12:02:56 +01:00
Tobia Tesan e3fdd8d5fe WINTERMUTE: Add tests for engines/wintermute/path_utils.h 2016-12-26 10:41:48 +01:00
Eugene Sandulenko 355c4fa646 JANITORIAL: Remove more trailing spaces 2016-10-09 15:02:02 +02:00
Eugene Sandulenko 78e240c23b TESTS: Fix warning 2016-09-05 08:24:37 +02:00
Bastien Bouclet 8d34d5190d Revert "BUILD: Fix test compilation with event recorder enabled"
This reverts commit 1f8667c5d9.
2016-07-28 18:23:50 +02:00
Eugene Sandulenko e0d445bb74 TESTS: Fix SortedArray test 2016-06-04 13:49:55 +02:00
Eugene Sandulenko 5a8eb1c9d6 TESTS: Implement SortedArray test 2016-05-23 16:36:34 +02:00
Eugene Sandulenko 1f8667c5d9 BUILD: Fix test compilation with event recorder enabled 2016-05-23 16:36:26 +02:00
Borja Lorente Escobar a19b50ddf2 COMMON: Add replace functions to Common and String.
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-05-16 22:01:21 +02:00
Colin Snover 4ba0ff8deb COMMON: Add convenience method to Common::Rational for 1:1 ratios
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-18 13:18:02 -06:00
Colin Snover 7d54f0aaaf COMMON: Add methods for inserting and erasing with iterators
This provides improved feature parity to Common::List and is used
in SCI32 engine.
2016-02-18 13:18:01 -06:00
Johannes Schickel 06641f29a7 COMMON: Allow '#' to only match digits in matchString. 2016-01-26 16:35:30 +01:00
Bertrand Augereau 5ad9cd1a1a COMMON: More sort unit tests 2015-11-10 20:30:51 +01:00
clone2727 79c902338b TEST: Use "/usr/bin/env python" as the shebang line in cxxtestgen.py 2015-01-18 14:41:16 -05:00
Johannes Schickel ba228f2bea TEST: Fix another typo in uint64 endian tests. 2015-01-04 21:22:43 +01:00
Johannes Schickel daa8fca001 TEST: Fix uint64 endian related test code.
This does not fix the actual implementation issues which are present right
now!
2015-01-04 21:09:32 +01:00
Johannes Schickel f1e58efe90 TEST: Fix C++11 compat warnings. 2015-01-04 21:09:32 +01:00
Eugene Sandulenko 9abd92a711 Merge pull request #508 from RichieSams/add_endian_and_stream_support_for_int64
COMMON: Add support for endian-safe reading/writing of int64
2015-01-04 19:50:33 +01:00
Adrian Astley 93167fabb5 TEST: Create test cases for reading uint64 from a stream 2014-12-21 04:12:43 -06:00
Bastien Bouclet 200b05246c AUDIO: Wrap around in the Timestamp constructor
The "making of" video in the Xbox version of Myst III is
unusually long. VideoDecoder::FixedRateVideoTrack::getFrameTime
would trigger an overflow.
2014-12-20 19:38:18 +01:00
Adrian Astley a4685796ce TEST: Add unit tests for uint64 reading 2014-12-19 11:53:32 -06:00
Johannes Schickel bb70ea04e9 TEST: Remove odd test in rendermode tests.
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-08-07 15:04:13 +02:00
Max Horn 4d02f67bd1 ALL: Resolve multiple clang warnings 2014-03-30 14:38:02 +02:00
Max Horn bd0db73a64 BUILD: fix 'make test' compile error 2013-08-05 11:44:27 +02:00
Tobia Tesan d2c85e19eb TEST: Whitespaces in test/common/ 2013-07-10 13:22:57 +02:00
Tobia Tesan e9406fad24 TEST: removed fixed hashes in test/common/hash-str.h
The hash function does not necessarily have to conform to one specific algorithm as long as equals/differs is respected.
2013-07-10 13:22:01 +02:00
Tobia Tesan 6245a68632 TEST: Thorough testing for common/hash-str.h
We test the various equal_to and hash functions therein.
2013-07-10 13:21:24 +02:00
Tobia Tesan 2e4933dcd5 TEST: reorganize test/common/util.h
Split a few test cases in two.
The resulting file is now better organized.
2013-07-10 13:17:59 +02:00
Tobia Tesan 377789db77 TEST: tests for common/rendermode.h
tests for parseRenderMode, renderMode2GUIO and getRenderModeCode.
2013-07-10 13:17:52 +02:00
Tobia Tesan 4a18eab8a5 TEST: test cases for common/util.cpp 2013-07-10 13:17:47 +02:00
Tobia Tesan 4f7d92acb4 TEST: tests for common/huffman.h
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-07-10 13:17:41 +02:00
richiesams e1ff60da7a COMMON: Add erase method to String class 2013-06-20 15:40:25 -05:00
Willem Jan Palenstijn da8eeb9dbe TESTS: Add failing test for repeated seeks in BufferedSeekableReadStream 2013-01-26 19:25:41 +01:00
Bastien Bouclet c5f368d115 TEST: Add missing include 2012-12-16 10:45:31 +01:00
Bastien Bouclet 0f432b9003 TEST: Add some tests for Common::BitStreamImpl 2012-12-16 10:29:58 +01:00