From d85767a8c82df0ad8530800172d7bae4f837d6d8 Mon Sep 17 00:00:00 2001
From: Jacopo Mondi <jacopo@jmondi.org>
Date: Fri, 11 Jan 2019 09:59:03 +0100
Subject: test: media_device: Make MediaDeviceTest a MediaDevicePrintTest

As a new class for test link handling will be added as a separate test,
it makes no sense to have a generic "MediaDeviceTest" class. Rename it
in "MediaDevicePrintTest", and make it run only printing test.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
---
 test/media_device/media_device_print_test.cpp | 171 +++++++++++++++++++++++++
 test/media_device/media_device_test.cpp       | 174 --------------------------
 test/media_device/meson.build                 |   2 +-
 3 files changed, 172 insertions(+), 175 deletions(-)
 create mode 100644 test/media_device/media_device_print_test.cpp
 delete mode 100644 test/media_device/media_device_test.cpp

(limited to 'test/media_device')

diff --git a/test/media_device/media_device_print_test.cpp b/test/media_device/media_device_print_test.cpp
new file mode 100644
index 00000000..13af722a
--- /dev/null
+++ b/test/media_device/media_device_print_test.cpp
@@ -0,0 +1,171 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (C) 2018-2019, Google Inc.
+ *
+ * media_device_print_test.cpp - Print out media devices
+ */
+#include <iostream>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "media_device.h"
+
+#include "test.h"
+
+using namespace libcamera;
+using namespace std;
+
+/*
+ * MediaDevicePrintTest takes all media devices found in the system and print
+ * them out to verify correctness.
+ *
+ * If no accessible media device is found, the test is skipped.
+ */
+class MediaDevicePrintTest : public Test
+{
+public:
+	MediaDevicePrintTest() { }
+	~MediaDevicePrintTest() { }
+
+protected:
+	int init() { return 0; }
+	int run();
+	void cleanup() { }
+
+private:
+	int testMediaDevice(string devnode);
+
+	void printMediaGraph(const MediaDevice &media, ostream &os);
+	void printLinkFlags(const MediaLink *link, ostream &os);
+	void printNode(const MediaPad *pad, ostream &os);
+};
+
+void MediaDevicePrintTest::printNode(const MediaPad *pad, ostream &os)
+{
+	const MediaEntity *entity = pad->entity();
+
+	os << "\"" << entity->name() << "\"["
+	   << pad->index() << "]";
+}
+
+void MediaDevicePrintTest::printLinkFlags(const MediaLink *link, ostream &os)
+{
+	unsigned int flags = link->flags();
+
+	os << " [";
+	if (flags) {
+		os << (flags & MEDIA_LNK_FL_ENABLED ? "ENABLED," : "")
+		   << (flags & MEDIA_LNK_FL_IMMUTABLE ? "IMMUTABLE" : "");
+	}
+	os  << "]\n";
+}
+
+/*
+ * For each entity in the media graph, printout links directed to its sinks
+ * and source pads.
+ */
+void MediaDevicePrintTest::printMediaGraph(const MediaDevice &media, ostream &os)
+{
+	os << "\n" << media.driver() << " - " << media.devnode() << "\n\n";
+
+	for (auto const &entity : media.entities()) {
+		os << "\"" << entity->name() << "\"\n";
+
+		for (auto const &sink : entity->pads()) {
+			if (!(sink->flags() & MEDIA_PAD_FL_SINK))
+				continue;
+
+			os << "  [" << sink->index() << "]" << ": Sink\n";
+			for (auto const &link : sink->links()) {
+				os << "\t";
+				printNode(sink, os);
+				os << " <- ";
+				printNode(link->source(), os);
+				printLinkFlags(link, os);
+			}
+			os << "\n";
+		}
+
+		for (auto const &source : entity->pads()) {
+			if (!(source->flags() & MEDIA_PAD_FL_SOURCE))
+				continue;
+
+			os << "  [" << source->index() << "]" << ": Source\n";
+			for (auto const &link : source->links()) {
+				os << "\t";
+				printNode(source, os);
+				os << " -> ";
+				printNode(link->sink(), os);
+				printLinkFlags(link, os);
+			}
+			os << "\n";
+		}
+	}
+
+	os.flush();
+}
+
+/* Test a single media device. */
+int MediaDevicePrintTest::testMediaDevice(const string devnode)
+{
+	MediaDevice dev(devnode);
+	int ret;
+
+	/* Fuzzy open/close sequence. */
+	ret = dev.open();
+	if (ret)
+		return ret;
+
+	ret = dev.open();
+	if (!ret)
+		return ret;
+
+	dev.close();
+
+	ret = dev.open();
+	if (ret)
+		return ret;
+
+	ret = dev.populate();
+	if (ret)
+		return ret;
+
+	/* Print out the media graph. */
+	printMediaGraph(dev, cerr);
+
+	dev.close();
+
+	return 0;
+}
+
+/* Run tests on all media devices. */
+#define MAX_MEDIA_DEV 256
+int MediaDevicePrintTest::run()
+{
+	const string devnode("/dev/media");
+	unsigned int i;
+	int ret = 77; /* skip test exit code */
+
+	/*
+	 * Run the test sequence on all media device found in the
+	 * system, if any.
+	 */
+	for (i = 0; i < MAX_MEDIA_DEV; i++) {
+		string mediadev = devnode + to_string(i);
+		struct stat pstat = { };
+
+		if (stat(mediadev.c_str(), &pstat))
+			continue;
+
+		ret = testMediaDevice(mediadev);
+		if (ret)
+			return ret;
+
+	}
+
+	return ret;
+}
+
+TEST_REGISTER(MediaDevicePrintTest);
diff --git a/test/media_device/media_device_test.cpp b/test/media_device/media_device_test.cpp
deleted file mode 100644
index c482b2e1..00000000
--- a/test/media_device/media_device_test.cpp
+++ /dev/null
@@ -1,174 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/*
- * Copyright (C) 2018, Google Inc.
- *
- * media_device_test.cpp - Tests for the media device class.
- *
- * Test library for the media device class.
- */
-#include <iostream>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-#include "media_device.h"
-
-#include "test.h"
-
-using namespace libcamera;
-using namespace std;
-
-/*
- * MediaDeviceTest object: runs a sequence of tests on all media
- * devices found in the system.
- *
- * If no accessible media device is found, the test is skipped.
- */
-class MediaDeviceTest : public Test
-{
-public:
-	MediaDeviceTest() { }
-	~MediaDeviceTest() { }
-
-protected:
-	int init() { return 0; }
-	int run();
-	void cleanup() { }
-
-private:
-	int testMediaDevice(string devnode);
-
-	void printMediaGraph(const MediaDevice &media, ostream &os);
-	void printLinkFlags(const MediaLink *link, ostream &os);
-	void printNode(const MediaPad *pad, ostream &os);
-};
-
-void MediaDeviceTest::printNode(const MediaPad *pad, ostream &os)
-{
-	const MediaEntity *entity = pad->entity();
-
-	os << "\"" << entity->name() << "\"["
-	   << pad->index() << "]";
-}
-
-void MediaDeviceTest::printLinkFlags(const MediaLink *link, ostream &os)
-{
-	unsigned int flags = link->flags();
-
-	os << " [";
-	if (flags) {
-		os << (flags & MEDIA_LNK_FL_ENABLED ? "ENABLED," : "")
-		   << (flags & MEDIA_LNK_FL_IMMUTABLE ? "IMMUTABLE" : "");
-	}
-	os  << "]\n";
-}
-
-/*
- * For each entity in the media graph, printout links directed to its sinks
- * and source pads.
- */
-void MediaDeviceTest::printMediaGraph(const MediaDevice &media, ostream &os)
-{
-	os << "\n" << media.driver() << " - " << media.devnode() << "\n\n";
-
-	for (auto const &entity : media.entities()) {
-		os << "\"" << entity->name() << "\"\n";
-
-		for (auto const &sink : entity->pads()) {
-			if (!(sink->flags() & MEDIA_PAD_FL_SINK))
-				continue;
-
-			os << "  [" << sink->index() << "]" << ": Sink\n";
-			for (auto const &link : sink->links()) {
-				os << "\t";
-				printNode(sink, os);
-				os << " <- ";
-				printNode(link->source(), os);
-				printLinkFlags(link, os);
-			}
-			os << "\n";
-		}
-
-		for (auto const &source : entity->pads()) {
-			if (!(source->flags() & MEDIA_PAD_FL_SOURCE))
-				continue;
-
-			os << "  [" << source->index() << "]" << ": Source\n";
-			for (auto const &link : source->links()) {
-				os << "\t";
-				printNode(source, os);
-				os << " -> ";
-				printNode(link->sink(), os);
-				printLinkFlags(link, os);
-			}
-			os << "\n";
-		}
-	}
-
-	os.flush();
-}
-
-/* Test a single media device. */
-int MediaDeviceTest::testMediaDevice(const string devnode)
-{
-	MediaDevice dev(devnode);
-	int ret;
-
-	/* Fuzzy open/close sequence. */
-	ret = dev.open();
-	if (ret)
-		return ret;
-
-	ret = dev.open();
-	if (!ret)
-		return ret;
-
-	dev.close();
-
-	ret = dev.open();
-	if (ret)
-		return ret;
-
-	ret = dev.populate();
-	if (ret)
-		return ret;
-
-	/* Run tests in sequence. */
-	printMediaGraph(dev, cerr);
-	/* TODO: add more tests here. */
-
-	dev.close();
-
-	return 0;
-}
-
-/* Run tests on all media devices. */
-#define MAX_MEDIA_DEV 256
-int MediaDeviceTest::run()
-{
-	const string devnode("/dev/media");
-	unsigned int i;
-	int ret = 77; /* skip test exit code */
-
-	/*
-	 * Run the test sequence on all media device found in the
-	 * system, if any.
-	 */
-	for (i = 0; i < MAX_MEDIA_DEV; i++) {
-		string mediadev = devnode + to_string(i);
-		struct stat pstat = { };
-
-		if (stat(mediadev.c_str(), &pstat))
-			continue;
-
-		ret = testMediaDevice(mediadev);
-		if (ret)
-			return ret;
-
-	}
-
-	return ret;
-}
-
-TEST_REGISTER(MediaDeviceTest);
diff --git a/test/media_device/meson.build b/test/media_device/meson.build
index 40f9ffa4..e4bedb79 100644
--- a/test/media_device/meson.build
+++ b/test/media_device/meson.build
@@ -1,5 +1,5 @@
 media_device_tests = [
-    ['media_device_test',               'media_device_test.cpp'],
+    ['media_device_print_test',         'media_device_print_test.cpp'],
 ]
 
 foreach t : media_device_tests
-- 
cgit v1.2.1