mirror of
https://github.com/boostorg/gil.git
synced 2026-02-18 14:12:10 +00:00
Motivation: - state clearly what is covered with tests without reading non-trivial code - avoid cleverness - tests should be no-brainer - get closer to one test case targets one feature/beaviour with one check - replace obscure `throw std::exception` with diagnostics that are actually useful to pin-point failure cause and location - makes CI logs useful. - allow to select and run specific tests - make tests maintenance easy, quick and fun Propose new structure of tests that reflects the previous tests hierarchy, but organizes channel tests in test/channel directory with test programs each covering specific library feature (or set of closely related features). The refactored tests cover 100% of checks from the old `channel.cpp`, plus it refines or adds a bunch more. NOTE: old test/channel.cpp has not been removed yet. Common definitions from the single test/channel.cpp moved to channel_test_fixtures.hpp and namespace boost::gil::test::fixture: Classes and typedefs: - `do_test` as `fixture::channel` - `value_core` as `fixture::channel_value` - `reference_core` as `fixture::channel_reference` - `packed_reference_core` as `fixture::packed_channel_reference` - `packed_dynamic_reference_core` as `fixture::packed_dynamic_channel_reference` - `channel_archetype` and relatives to `channel_concepts.cpp` which is compile test in Jamfile - `test_packed_channel_reference()` parts as `fixture::packed_channels565` - `test_packed_dynamic_channel_reference()` parts as `fixture::packed_dynamic_channels565` Test case functions called from `do_test<T>::test_all`: - `test_channel_invert()` to `algorithm_channel_invert.cpp` suite - `test_channel_convert()` to `algorithm_channel_convert.cpp` suite - `test_channel_multiply()` to `algorithm_channel_multiply.cpp` suite - `test_channel_math()` split to `algorithm_channel_relation.cpp` and `algorithm_channel_arithmetic.cpp` Add test cases for each channel value type T as used to run from `test_channel_value_impl<T>`, `test_packed_channel_reference<T>` and `test_packed_dynamic_channel_reference<T>`. Add list of possible T-s defined as type-lists `fixture::channel_byte_types`, `fixture::channel_integer_types`, `channel_float_types` and `channel_bitfield_types` which used with `BOOST_AUTO_TEST_CASE_TEMPLATE` generate all possible combination of inputs. Add new `channel_test_fixture.cpp` is a self-test suite verifying the fixtures.
28 lines
1.3 KiB
Plaintext
28 lines
1.3 KiB
Plaintext
# Boost.GIL (Generic Image Library)
|
|
#
|
|
# Copyright (c) 2018 Mateusz Loskot <mateusz@loskot.net>
|
|
#
|
|
# Use, modification and distribution is subject to the Boost Software License,
|
|
# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
|
# http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
project boost-gil
|
|
:
|
|
requirements
|
|
# MSVC: Since VS2017, default is -std:c++14, so no explicit switch is required.
|
|
<toolset>msvc:<asynch-exceptions>on
|
|
<toolset>msvc:<cxxflags>/W4
|
|
<toolset>msvc:<cxxflags>/bigobj
|
|
<toolset>msvc:<define>_SCL_SECURE_NO_DEPRECATE <define>_CRT_SECURE_NO_WARNINGS <define>_CRT_NONSTDC_NO_DEPRECATE <define>NOMINMAX
|
|
<toolset>intel:<debug-symbols>off
|
|
<toolset>gcc:<cxxflags>"-std=c++11 -pedantic -fstrict-aliasing -Wconversion -Wextra -Wfloat-equal -Wshadow -Wsign-promo -Wstrict-aliasing -Wunused-parameter "
|
|
<toolset>darwin:<cxxflags>"-std=c++11 -pedantic -fstrict-aliasing -Wconversion -Wextra -Wfloat-equal -Wshadow -Wsign-promo -Wstrict-aliasing -Wunused-parameter "
|
|
<toolset>clang:<cxxflags>"-std=c++11 -pedantic -fstrict-aliasing -Wconversion -Wextra -Wfloat-equal -Wshadow -Wsign-promo -Wstrict-aliasing -Wunused-parameter -Wsign-conversion"
|
|
;
|
|
|
|
build-project example ;
|
|
build-project test ;
|
|
build-project numeric/test ;
|
|
build-project toolbox/test ;
|
|
build-project io/test ;
|