summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2018-12-19 11:37:23 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2018-12-21 06:44:55 +0200
commit4114a93dff6f497e8c5fc4c2328fc2a774d9ef15 (patch)
tree9b36e64d0e43ab54f64b1858d947da254a9c2937 /test
parent907602eab5d6071e0b979807b697e1d3fd6ac6c3 (diff)
tests: Add a base Test class
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@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Diffstat (limited to 'test')
-rw-r--r--test/meson.build6
-rw-r--r--test/test.cpp28
-rw-r--r--test/test.h32
3 files changed, 66 insertions, 0 deletions
diff --git a/test/meson.build b/test/meson.build
index 924a26f1..da0aea96 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 00000000..4e7779e7
--- /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 00000000..c85eeb5d
--- /dev/null
+++ b/test/test.h
@@ -0,0 +1,32 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (C) 2018, Google Inc.
+ *
+ * test.h - libcamera test base class
+ */
+#ifndef __TEST_TEST_H__
+#define __TEST_TEST_H__
+
+#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(); \
+}
+
+#endif /* __TEST_TEST_H__ */