[libcamera-devel] [PATCH RFC 1/2] test: Add TestStatus classes
Kieran Bingham
kieran.bingham at ideasonboard.com
Mon Jan 14 10:54:16 CET 2019
Provide Class object to return the test status, and perform any result reporting.
Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
---
test/libtest/meson.build | 1 +
test/libtest/test.h | 2 ++
test/libtest/test_status.cpp | 42 +++++++++++++++++++++++++++
test/libtest/test_status.h | 55 ++++++++++++++++++++++++++++++++++++
4 files changed, 100 insertions(+)
create mode 100644 test/libtest/test_status.cpp
create mode 100644 test/libtest/test_status.h
diff --git a/test/libtest/meson.build b/test/libtest/meson.build
index e0893b70c3d4..a9e67d8d7e6c 100644
--- a/test/libtest/meson.build
+++ b/test/libtest/meson.build
@@ -1,5 +1,6 @@
libtest_sources = files([
'test.cpp',
+ 'test_status.cpp',
])
libtest = static_library('libtest', libtest_sources)
diff --git a/test/libtest/test.h b/test/libtest/test.h
index ec08bf97c03d..d816cf15aaf0 100644
--- a/test/libtest/test.h
+++ b/test/libtest/test.h
@@ -9,6 +9,8 @@
#include <sstream>
+#include "test_status.h"
+
enum TestStatus {
TestPass = 0,
TestFail = -1,
diff --git a/test/libtest/test_status.cpp b/test/libtest/test_status.cpp
new file mode 100644
index 000000000000..c0daef866740
--- /dev/null
+++ b/test/libtest/test_status.cpp
@@ -0,0 +1,42 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (C) 2019, Google Inc.
+ *
+ * test_status.cpp - libcamera test result management
+ */
+
+#include "test.h"
+
+static unsigned int test_number = 0;
+
+TestStatusBase::TestStatusBase()
+ : value(-99)
+{
+ test_number++;
+};
+
+TestStatusBase::~TestStatusBase()
+{
+ std::cout << prefix << test_number << " " << message << std::endl;
+};
+
+TestStatusPass::TestStatusPass(const std::string &m)
+{
+ value = ValuePass;
+ prefix = "ok ";
+ message = m;
+};
+
+TestStatusFail::TestStatusFail(const std::string &m)
+{
+ value = ValueFail;
+ prefix = "not ok ";
+ message = m;
+};
+
+TestStatusSkip::TestStatusSkip(const std::string &m)
+{
+ value = ValueSkip;
+ prefix = "skip ";
+ message = m;
+};
diff --git a/test/libtest/test_status.h b/test/libtest/test_status.h
new file mode 100644
index 000000000000..2e4713ad3f6d
--- /dev/null
+++ b/test/libtest/test_status.h
@@ -0,0 +1,55 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (C) 2019, Google Inc.
+ *
+ * test_status.h - libcamera test status class
+ */
+#ifndef __TEST_TEST_STATUS_H__
+#define __TEST_TEST_STATUS_H__
+
+#include <iostream>
+#include <string>
+
+class TestStatusBase
+{
+public:
+ TestStatusBase();
+ TestStatusBase(const std::string &m);
+ ~TestStatusBase();
+
+ operator int() { return value; };
+
+ enum ReturnValues {
+ ValuePass = 0,
+ ValueFail = -1,
+ ValueSkip = 77,
+ };
+
+protected:
+ int value;
+ std::string prefix;
+ std::string message;
+};
+
+class TestStatusPass : public TestStatusBase
+{
+public:
+ TestStatusPass(const std::string &m);
+};
+
+class TestStatusFail : public TestStatusBase
+{
+public:
+ TestStatusFail(const std::string &m);
+};
+
+class TestStatusSkip : public TestStatusBase
+{
+public:
+ TestStatusSkip(const std::string &m);
+};
+
+#define is(a, b, m) ({((a) == (b)) ? TestStatusPass((m)) : TestStatusFail((m));})
+#define isnt(a, b, m) ({((a) != (b)) ? TestStatusPass((m)) : TestStatusFail((m));})
+
+#endif /* __TEST_TEST_STATUS_H__ */
--
2.17.1
More information about the libcamera-devel
mailing list