[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