algorithm_channel_invert.cpp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. //
  2. // Copyright 2005-2007 Adobe Systems Incorporated
  3. // Copyright 2018 Mateusz Loskot <mateusz at loskot dot net>
  4. //
  5. // Distributed under the Boost Software License, Version 1.0
  6. // See accompanying file LICENSE_1_0.txt or copy at
  7. // http://www.boost.org/LICENSE_1_0.txt
  8. //
  9. #include <boost/gil/channel_algorithm.hpp>
  10. #define BOOST_TEST_MODULE test_algorithm_channel_invert
  11. #include "unit_test.hpp"
  12. #include "test_fixture.hpp"
  13. namespace gil = boost::gil;
  14. namespace fixture = boost::gil::test::fixture;
  15. template <typename ChannelFixtureBase>
  16. void test_channel_invert()
  17. {
  18. fixture::channel<ChannelFixtureBase> f;
  19. BOOST_TEST(gil::channel_invert(f.min_v_) == f.max_v_);
  20. BOOST_TEST(gil::channel_invert(f.max_v_) == f.min_v_);
  21. }
  22. BOOST_AUTO_TEST_CASE_TEMPLATE(channel_value, Channel, fixture::channel_byte_types)
  23. {
  24. using fixture_t = fixture::channel_value<Channel>;
  25. test_channel_invert<fixture_t>();
  26. }
  27. BOOST_AUTO_TEST_CASE_TEMPLATE(channel_reference, Channel, fixture::channel_byte_types)
  28. {
  29. using fixture_t = fixture::channel_reference<Channel&>;
  30. test_channel_invert<fixture_t>();
  31. }
  32. BOOST_AUTO_TEST_CASE_TEMPLATE(
  33. channel_reference_const, Channel, fixture::channel_byte_types)
  34. {
  35. using fixture_t = fixture::channel_reference<Channel const&>;
  36. test_channel_invert<fixture_t>();
  37. }
  38. BOOST_AUTO_TEST_CASE_TEMPLATE(
  39. packed_channel_reference, BitField, fixture::channel_bitfield_types)
  40. {
  41. using channels565_t = fixture::packed_channels565<BitField>;
  42. test_channel_invert<typename channels565_t::fixture_0_5_t>();
  43. test_channel_invert<typename channels565_t::fixture_5_6_t >();
  44. test_channel_invert<typename channels565_t::fixture_11_5_t>();
  45. }
  46. BOOST_AUTO_TEST_CASE_TEMPLATE(
  47. packed_dynamic_channel_reference, BitField, fixture::channel_bitfield_types)
  48. {
  49. using channels565_t = fixture::packed_dynamic_channels565<BitField>;
  50. test_channel_invert<typename channels565_t::fixture_5_t>();
  51. test_channel_invert<typename channels565_t::fixture_6_t>();
  52. }
  53. // TODO: packed_channel_reference_const ?
  54. // TODO: packed_dynamic_channel_reference_const ?