diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-10-13 22:22:04 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-10-15 16:49:55 +0300 |
commit | f391048a7b987a149d0ba5421846b9b5ab916338 (patch) | |
tree | de82297ab5c83cc530d51bd9e76040f6d0b909f3 /test/utils.cpp | |
parent | ce739e616c42105e5c6f22bf4df5dc19b5e8c8f9 (diff) |
libcamera: utils: Add hex stream output helper
Add a utils::hex() function that simplifies writing hexadecimal values
to an ostream. The function handles the '0x' prefix, the field width and
the fill character automatically. Use it through the libcamera code
base, and add a test.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Diffstat (limited to 'test/utils.cpp')
-rw-r--r-- | test/utils.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/test/utils.cpp b/test/utils.cpp new file mode 100644 index 00000000..9fe0d477 --- /dev/null +++ b/test/utils.cpp @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Copyright (C) 2018, Google Inc. + * + * utils.cpp - Miscellaneous utility tests + */ + +#include <iostream> +#include <sstream> + +#include "test.h" +#include "utils.h" + +using namespace std; +using namespace libcamera; + +class UtilsTest : public Test +{ +protected: + int run() + { + std::ostringstream os; + std::string ref; + + os << utils::hex(static_cast<int32_t>(0x42)) << " "; + ref += "0x00000042 "; + os << utils::hex(static_cast<uint32_t>(0x42)) << " "; + ref += "0x00000042 "; + os << utils::hex(static_cast<int64_t>(0x42)) << " "; + ref += "0x0000000000000042 "; + os << utils::hex(static_cast<uint64_t>(0x42)) << " "; + ref += "0x0000000000000042 "; + os << utils::hex(static_cast<int32_t>(0x42), 4) << " "; + ref += "0x0042 "; + os << utils::hex(static_cast<uint32_t>(0x42), 1) << " "; + ref += "0x42 "; + os << utils::hex(static_cast<int64_t>(0x42), 4) << " "; + ref += "0x0042 "; + os << utils::hex(static_cast<uint64_t>(0x42), 1) << " "; + ref += "0x42 "; + + std::string s = os.str(); + if (s != ref) { + cerr << "utils::hex() test failed, expected '" << ref + << "', got '" << s << "'"; + return TestFail; + } + + return TestPass; + } +}; + +TEST_REGISTER(UtilsTest) |