* topic/PR-112-deliberate-failure-tests-not-optimized-away:
Change log
Added BOOST_MSVC version check to test patches
Deliberate-failure tests shouldn't be optimized
A few tests designed to deliberately fail appeal to UB (undefined
behavior), but as the MSVC optimizer improves we will take advantage of
that to remove UB statements. In order for deliberate failures to occur,
the tests must have the optimizer turned off.
- execution_monitor.ipp: m_sig_info doesn't have all the POSIX designated members and VxWorks has no USER signal
- basic_cstring.hpp: Diab compiler has limit on size of enum, similar to the IBM compiler
- VxWorks also has limited signals
Most of the difficulty came from the fact that c-strings are also c-arrays, but comparisons are made in a different way (eg. not considering the last \0 element in the computation of the size, etc)
- is_forward_iterable now just checks if the type has accessors that makes it forward iterable (no size member function for instance)
- new concept: is_forward_container_iterable that looks for forward_iterable access + size and specific types. This is needed in order to disambiguate the dataset creation for arrays from the ones for collections
- is_cstring is now only for the C-string type of arrays. std::string and basic_cstring are not a C-strings anymore
- new concept is_cstring_comparable: indicates that types can be compared as if they were strings
- new concept for converting types to a basic_cstring, used for comparisons
- wrapper for accessing the begin/end/size (works for containers and C-arrays
- copy ctor for basic_cstring
- boost.range(begin/end) does not work well for array types
- unit tests for the message part: for checking the dataset, we need to register it and then to re-run it under our own environment (so technically it runs twice in the test module)
- refactoring of tests for reusing the stream checker that is agnostic to filenames location, testing time, etc. Modifying the baseline outputs accordingly
- simplifying the logic behind the operations
- minor doc fixes
- tests output change slightly due to the fact that <= and >= are now going through the
floating point comparison