From 38c9fefa0127b4773b102c070af9e3e01d74264e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= <tim.muller@collabora.co.uk>
Date: Wed, 23 Nov 2011 00:57:39 +0000
Subject: [PATCH] tests: add basic unit test for matroskaparse

---
 tests/check/Makefile.am              |   1 +
 tests/check/elements/.gitignore      |   1 +
 tests/check/elements/matroskaparse.c | 118 +++++++++++++++++++++++++++
 tests/files/pinknoise-vorbis.mkv     | Bin 0 -> 5486 bytes
 4 files changed, 120 insertions(+)
 create mode 100644 tests/check/elements/matroskaparse.c
 create mode 100644 tests/files/pinknoise-vorbis.mkv

diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am
index 046d0f3845..b466193629 100644
--- a/tests/check/Makefile.am
+++ b/tests/check/Makefile.am
@@ -133,6 +133,7 @@ check_PROGRAMS = \
 	elements/interleave \
 	elements/level \
 	elements/matroskamux \
+	elements/matroskaparse \
 	elements/mpegaudioparse \
 	elements/multifile \
 	elements/qtmux \
diff --git a/tests/check/elements/.gitignore b/tests/check/elements/.gitignore
index 62c482a186..c868fc81ef 100644
--- a/tests/check/elements/.gitignore
+++ b/tests/check/elements/.gitignore
@@ -37,6 +37,7 @@ interleave
 jpegenc
 level
 matroskamux
+matroskaparse
 mpegaudioparse
 multifile
 qtmux
diff --git a/tests/check/elements/matroskaparse.c b/tests/check/elements/matroskaparse.c
new file mode 100644
index 0000000000..e1d5e411ac
--- /dev/null
+++ b/tests/check/elements/matroskaparse.c
@@ -0,0 +1,118 @@
+/* GStreamer unit tests for matroskaparse
+ * Copyright (C) 2011 Tim-Philipp Müller  <tim centricular net>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <gst/check/gstcheck.h>
+
+#include <gst/gst.h>
+
+static void
+run_check_for_file (const gchar * file_name, gboolean push_mode)
+{
+  GstStateChangeReturn state_ret;
+  GstMessage *msg;
+  GstElement *src, *sep, *sink, *matroskaparse, *pipeline;
+  GstBus *bus;
+  gchar *path;
+
+  pipeline = gst_pipeline_new ("pipeline");
+  fail_unless (pipeline != NULL, "Failed to create pipeline!");
+
+  bus = gst_element_get_bus (pipeline);
+
+  src = gst_element_factory_make ("filesrc", "filesrc");
+  fail_unless (src != NULL, "Failed to create 'filesrc' element!");
+
+  if (push_mode) {
+    sep = gst_element_factory_make ("queue", "queue");
+    fail_unless (sep != NULL, "Failed to create 'queue' element");
+  } else {
+    sep = gst_element_factory_make ("identity", "identity");
+    fail_unless (sep != NULL, "Failed to create 'identity' element");
+  }
+
+  matroskaparse = gst_element_factory_make ("matroskaparse", "matroskaparse");
+  fail_unless (matroskaparse != NULL, "Failed to create matroskaparse element");
+
+  sink = gst_element_factory_make ("fakesink", "fakesink");
+  fail_unless (sink != NULL, "Failed to create 'fakesink' element!");
+
+  gst_bin_add_many (GST_BIN (pipeline), src, sep, matroskaparse, sink, NULL);
+
+  fail_unless (gst_element_link (src, sep));
+  fail_unless (gst_element_link (sep, matroskaparse));
+  fail_unless (gst_element_link (matroskaparse, sink));
+
+  path = g_build_filename (GST_TEST_FILES_PATH, file_name, NULL);
+  GST_LOG ("reading file '%s'", path);
+  g_object_set (src, "location", path, NULL);
+
+  state_ret = gst_element_set_state (pipeline, GST_STATE_PAUSED);
+  fail_unless (state_ret != GST_STATE_CHANGE_FAILURE);
+
+  if (state_ret == GST_STATE_CHANGE_ASYNC) {
+    GST_LOG ("waiting for pipeline to reach PAUSED state");
+    state_ret = gst_element_get_state (pipeline, NULL, NULL, -1);
+    fail_unless_equals_int (state_ret, GST_STATE_CHANGE_SUCCESS);
+  }
+
+  GST_LOG ("PAUSED, let's play a little..");
+  state_ret = gst_element_set_state (pipeline, GST_STATE_PLAYING);
+  fail_unless (state_ret != GST_STATE_CHANGE_FAILURE);
+
+  msg = gst_bus_poll (bus, GST_MESSAGE_EOS, -1);
+  fail_unless (msg != NULL, "Expected EOS message on bus! (%s)", file_name);
+
+  gst_message_unref (msg);
+  gst_object_unref (bus);
+
+  fail_unless_equals_int (gst_element_set_state (pipeline, GST_STATE_NULL),
+      GST_STATE_CHANGE_SUCCESS);
+  gst_object_unref (pipeline);
+
+  g_free (path);
+}
+
+GST_START_TEST (test_parse_file_pull)
+{
+  run_check_for_file ("pinknoise-vorbis.mkv", TRUE);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_parse_file_push)
+{
+  run_check_for_file ("pinknoise-vorbis.mkv", FALSE);
+}
+
+GST_END_TEST;
+
+static Suite *
+matroskaparse_suite (void)
+{
+  Suite *s = suite_create ("matroskaparse");
+  TCase *tc_chain = tcase_create ("general");
+
+  suite_add_tcase (s, tc_chain);
+  tcase_add_test (tc_chain, test_parse_file_pull);
+  tcase_add_test (tc_chain, test_parse_file_push);
+
+  return s;
+}
+
+GST_CHECK_MAIN (matroskaparse)
diff --git a/tests/files/pinknoise-vorbis.mkv b/tests/files/pinknoise-vorbis.mkv
new file mode 100644
index 0000000000000000000000000000000000000000..f83006c8558f12b5ff859b9718bedbb4088f5815
GIT binary patch
literal 5486
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

literal 0
HcmV?d00001