[libcamera-devel] [PATCH] tests: Add a base Test class

Laurent Pinchart laurent.pinchart at ideasonboard.com
Wed Dec 19 10:48:30 CET 2018


The base Test class is meant to provide infrastructure common to all
tests. It is very limited for now, and should be extended with at least
logging and assertion handling.

Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
 test/meson.build |  6 ++++++
 test/test.cpp    | 28 ++++++++++++++++++++++++++++
 test/test.h      | 28 ++++++++++++++++++++++++++++
 3 files changed, 62 insertions(+)
 create mode 100644 test/test.cpp
 create mode 100644 test/test.h

diff --git a/test/meson.build b/test/meson.build
index 24d1927f977c..fc9c124927d2 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -1,3 +1,9 @@
+libtest_sources = files([
+    'test.cpp',
+])
+
+libtest = static_library('libtest', libtest_sources)
+
 test_init = executable('test_init', 'init.cpp',
                        link_with : libcamera,
                        include_directories : libcamera_includes)
diff --git a/test/test.cpp b/test/test.cpp
new file mode 100644
index 000000000000..4e7779e750d5
--- /dev/null
+++ b/test/test.cpp
@@ -0,0 +1,28 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (C) 2018, Google Inc.
+ *
+ * test.cpp - libcamera test base class
+ */
+
+#include "test.h"
+
+Test::Test()
+{
+}
+
+Test::~Test()
+{
+	cleanup();
+}
+
+int Test::execute()
+{
+	int ret;
+
+	ret = init();
+	if (ret < 0)
+		return ret;
+
+	return run();
+}
diff --git a/test/test.h b/test/test.h
new file mode 100644
index 000000000000..2464fc5cb607
--- /dev/null
+++ b/test/test.h
@@ -0,0 +1,28 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (C) 2018, Google Inc.
+ *
+ * test.h - libcamera test base class
+ */
+
+#include <sstream>
+
+class Test
+{
+public:
+	Test();
+	virtual ~Test();
+
+	int execute();
+
+protected:
+	virtual int init() { return 0; }
+	virtual int run() = 0;
+	virtual void cleanup() { }
+};
+
+#define TEST_REGISTER(klass)						\
+int main(int argc, char *argv[])					\
+{									\
+	return klass().execute();					\
+}
-- 
Regards,

Laurent Pinchart



More information about the libcamera-devel mailing list