[gstreamermm: 103/167] added Bin tests



commit 55758b0f83288856ccd699ed648ebfd223d60817
Author: Marcin Kolny at Flytronic <marcin kolny flytronic pl>
Date:   Wed Jul 31 16:57:18 2013 +0200

    added Bin tests

 .gitignore                          |    1 +
 tests/Makefile                      |   20 ++++++
 tests/test-bin.cc                   |  129 +++++++++++++++++++++++++++++++++++
 tests/{buffer.cc => test-buffer.cc} |    2 +-
 4 files changed, 151 insertions(+), 1 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 4850a4f..dbf47d9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -464,6 +464,7 @@ gstreamer/src/xvimagesink.hg
 
 #tests/
 tests/test-all
+!tests/Makefile
 
 # old-tests/
 old-tests/test-buffer-mapinfo
diff --git a/tests/Makefile b/tests/Makefile
new file mode 100644
index 0000000..4d46b27
--- /dev/null
+++ b/tests/Makefile
@@ -0,0 +1,20 @@
+CXX=g++
+MODULES=gstreamermm-1.0
+CXXFLAGS=-c -std=c++0x
+CXXFLAGS+=$(shell pkg-config --cflags $(MODULES))
+LDFLAGS = -lgtest -lpthread 
+LDFLAGS+=$(shell pkg-config --libs $(MODULES))
+SRC = $(wildcard *.cc)
+OBJ = $(SRC:.cc=.o)
+EXEC = test-all
+
+all: $(SRC) $(EXEC)
+
+$(EXEC): $(OBJ) 
+       $(CXX) $(OBJ) -o $@ $(LDFLAGS) 
+
+%.cpp%.o:
+       $(CXX) $(CXXFLAGS) $< -o $@
+
+clean:
+       rm -rf *.o $(EXEC)
diff --git a/tests/test-bin.cc b/tests/test-bin.cc
new file mode 100644
index 0000000..7e0560f
--- /dev/null
+++ b/tests/test-bin.cc
@@ -0,0 +1,129 @@
+/*
+ * test-bin.cc
+ *
+ *  Created on: Jul 31, 2013
+ *      Author: m.kolny
+ */
+
+#include <gtest/gtest.h>
+#include <gstreamermm.h>
+#include <string>
+
+using namespace Gst;
+using Glib::RefPtr;
+
+class BinTest : public ::testing::Test
+{
+protected:
+    RefPtr<Bin> bin;
+    static constexpr gchar* element_name = "source";
+    static constexpr gchar* default_element = "fakesrc";
+
+    virtual void SetUp()
+    {
+        bin = Bin::create("sample-bin");
+    }
+
+    RefPtr<Element> AddElementToBin(const gchar* element_name = default_element, const gchar* name = 
element_name)
+    {
+        RefPtr<Element> element = ElementFactory::create_element(element_name, name);
+
+        bin->add(element);
+
+        return element;
+    }
+};
+
+
+TEST_F(BinTest, CreatingBin)
+{
+    ASSERT_TRUE(bin);
+}
+
+
+TEST_F(BinTest, GetElementFromBin)
+{
+    AddElementToBin();
+
+    RefPtr<Element> source_copy = bin->get_element(element_name);
+
+    ASSERT_TRUE(source_copy);
+}
+
+TEST_F(BinTest, GetNonExistingElement)
+{
+    AddElementToBin();
+
+    RefPtr<Element> source_copy = bin->get_element("element-with-this-name-cannot-exists-in-bin");
+
+    ASSERT_FALSE(source_copy);
+}
+
+TEST_F(BinTest, RemoveElementFromBin)
+{
+    AddElementToBin();
+
+    RefPtr<Element> source = bin->get_element(element_name);
+
+    bin->remove(source);
+
+    RefPtr<Element> source_copy = bin->get_element(element_name);
+
+    ASSERT_FALSE(source_copy);
+}
+
+TEST_F(BinTest, FindElementInParentBin)
+{
+    RefPtr<Bin> bin_child = Bin::create();
+
+    AddElementToBin();
+
+    bin->add(bin_child);
+
+    RefPtr<Element> source = bin_child->get_element_recurse_up(element_name);
+
+    ASSERT_TRUE(source);
+}
+
+TEST_F(BinTest, AddTwoElementsWithTheSameName)
+{
+    AddElementToBin();
+
+    EXPECT_ANY_THROW(AddElementToBin());
+}
+
+TEST_F(BinTest, FindUnlinkedPad)
+{
+    AddElementToBin();
+    AddElementToBin("fakesink", "sink");
+
+    RefPtr<Pad> pad_sink = bin->find_unlinked_pad(PAD_SINK);
+    RefPtr<Pad> pad_src = bin->find_unlinked_pad(PAD_SRC);
+
+    ASSERT_TRUE(pad_sink);
+    ASSERT_TRUE(pad_src);
+}
+
+TEST_F(BinTest, FindUnlinkedPadWhenElementsAreLinked)
+{
+    RefPtr<Element> src = AddElementToBin();
+    RefPtr<Element> sink = AddElementToBin("fakesink", "sink");
+
+    src->link(sink);
+
+    RefPtr<Pad> pad_sink = bin->find_unlinked_pad(PAD_SINK);
+    RefPtr<Pad> pad_src = bin->find_unlinked_pad(PAD_SRC);
+
+    ASSERT_FALSE(pad_sink);
+    ASSERT_FALSE(pad_src);
+}
+
+TEST_F(BinTest, GetCorrectChildNumber)
+{
+    int element_count = 5;
+
+    for (int i =0; i < element_count; i++)
+        AddElementToBin("fakesrc", std::string(std::string("element") + std::to_string(i)).c_str());
+
+    EXPECT_EQ(element_count, bin->get_num_children());
+}
diff --git a/tests/buffer.cc b/tests/test-buffer.cc
similarity index 97%
rename from tests/buffer.cc
rename to tests/test-buffer.cc
index 78af9bb..efab5e1 100644
--- a/tests/buffer.cc
+++ b/tests/test-buffer.cc
@@ -1,5 +1,5 @@
 /*
- * buffer.cc
+ * test-buffer.cc
  *
  *  Created on: Jul 31, 2013
  *      Author: m.kolny


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]