summaryrefslogtreecommitdiff
path: root/test/utils.cpp
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-10-13 22:22:04 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-10-15 16:49:55 +0300
commitf391048a7b987a149d0ba5421846b9b5ab916338 (patch)
treede82297ab5c83cc530d51bd9e76040f6d0b909f3 /test/utils.cpp
parentce739e616c42105e5c6f22bf4df5dc19b5e8c8f9 (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.cpp53
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)