diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2022-08-23 17:36:10 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2022-08-26 01:04:27 +0300 |
commit | 555d27ce58cd6eeb050f7201ae67c4cd88607fc4 (patch) | |
tree | fa3219ea1a2ea46c717d337b8188fafa25c7c4a9 /test/color-space.cpp | |
parent | fbfdaa2d205b8898527609fb18d641429f0e0710 (diff) |
test: Add a ColorSpace test
Add a test for the ColorSpace class that exercises the toString() and
fromString() functions.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Diffstat (limited to 'test/color-space.cpp')
-rw-r--r-- | test/color-space.cpp | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/test/color-space.cpp b/test/color-space.cpp new file mode 100644 index 00000000..7d45b217 --- /dev/null +++ b/test/color-space.cpp @@ -0,0 +1,105 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Copyright (C) 2022, Laurent Pinchart <laurent.pinchart@ideasonboard.com> + * + * libcamera ColorSpace test + */ + +#include <array> +#include <iostream> + +#include <libcamera/color_space.h> + +#include "test.h" + +using namespace libcamera; +using namespace std; + +class ColorSpaceTest : public Test +{ +protected: + int run() + { + if (ColorSpace::toString(std::nullopt) != "Unset") { + std::cerr << "Conversion from nullopt to string failed" << std::endl; + return TestFail; + } + + const std::array<std::pair<ColorSpace, std::string>, 10> colorSpaces = { { + { ColorSpace::Raw, "RAW" }, + { ColorSpace::Srgb, "sRGB" }, + { ColorSpace::Sycc, "sYCC" }, + { ColorSpace::Smpte170m, "SMPTE170M" }, + { ColorSpace::Rec709, "Rec709" }, + { ColorSpace::Rec2020, "Rec2020" }, + { + ColorSpace{ + ColorSpace::Primaries::Raw, + ColorSpace::TransferFunction::Linear, + ColorSpace::YcbcrEncoding::None, + ColorSpace::Range::Limited + }, + "RAW/Linear/None/Limited" + }, { + ColorSpace{ + ColorSpace::Primaries::Smpte170m, + ColorSpace::TransferFunction::Srgb, + ColorSpace::YcbcrEncoding::Rec601, + ColorSpace::Range::Full + }, + "SMPTE170M/sRGB/Rec601/Full" + }, { + ColorSpace{ + ColorSpace::Primaries::Rec709, + ColorSpace::TransferFunction::Rec709, + ColorSpace::YcbcrEncoding::Rec709, + ColorSpace::Range::Full + }, + "Rec709/Rec709/Rec709/Full" + }, { + ColorSpace{ + ColorSpace::Primaries::Rec2020, + ColorSpace::TransferFunction::Linear, + ColorSpace::YcbcrEncoding::Rec2020, + ColorSpace::Range::Limited + }, + "Rec2020/Linear/Rec2020/Limited" + }, + } }; + + for (const auto &[colorSpace, name] : colorSpaces) { + if (colorSpace.toString() != name) { + std::cerr + << "Conversion from ColorSpace to string failed: " + << "expected " << name + << ", got " << colorSpace.toString() + << std::endl; + return TestFail; + } + + if (ColorSpace::fromString(name) != colorSpace) { + std::cerr + << "Conversion from string " + << name << " to ColorSpace failed" + << std::endl; + return TestFail; + } + } + + if (ColorSpace::fromString("Invalid")) { + std::cerr << "Conversion from invalid name string to color space succeeded" + << std::endl; + return TestFail; + } + + if (ColorSpace::fromString("Rec709/Rec709/Rec710/Limited")) { + std::cerr << "Conversion from invalid component string to color space succeeded" + << std::endl; + return TestFail; + } + + return TestPass; + } +}; + +TEST_REGISTER(ColorSpaceTest) |