summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMurray Cumming <murrayc@murrayc.com>2017-04-09 12:32:44 +0200
committerMurray Cumming <murrayc@murrayc.com>2017-04-09 13:02:05 +0200
commit696685eeaa639ae5e41a9eaa761250368af492db (patch)
treec83e58911c52680c139f857bedbf923662902f10 /tests
parentbc233c576d24adf640d333394228b93d548d75cc (diff)
downloadglibmm-696685eeaa639ae5e41a9eaa761250368af492db.tar.gz
tests: Split object_move and objectbase_move tests.
This allows further reuse of the DerivedObject and DerivedObjectBase test classes.
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am5
-rw-r--r--tests/glibmm_object/main.cc24
-rw-r--r--tests/glibmm_object/test_derived_object.h60
-rw-r--r--tests/glibmm_object_move/main.cc55
-rw-r--r--tests/glibmm_objectbase/main.cc24
-rw-r--r--tests/glibmm_objectbase/test_derived_objectbase.h36
-rw-r--r--tests/glibmm_objectbase_move/main.cc61
7 files changed, 152 insertions, 113 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 47c1b114..7231b703 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -35,6 +35,7 @@ check_PROGRAMS = \
glibmm_mainloop/test \
glibmm_nodetree/test \
glibmm_object_move/test \
+ glibmm_objectbase/test \
glibmm_objectbase_move/test \
glibmm_ustring_compose/test \
glibmm_ustring_format/test \
@@ -102,7 +103,11 @@ glibmm_interface_move_test_CXXFLAGS = $(GLIBMM_INTERFACE_TEST_WXXFLAGS) $(cxxfla
glibmm_mainloop_test_SOURCES = glibmm_mainloop/main.cc
glibmm_nodetree_test_SOURCES = glibmm_nodetree/main.cc
+glibmm_object_test_SOURCES = glibmm_object/main.cc \
+ glibmm/object/test_derived_object.h
glibmm_object_move_test_SOURCES = glibmm_object_move/main.cc
+glibmm_objectbase_test_SOURCES = glibmm_objectbase/main.cc \
+ glibmm/objectbase/test_derived_objectbase.h
glibmm_objectbase_move_test_SOURCES = glibmm_objectbase_move/main.cc
glibmm_ustring_compose_test_SOURCES = glibmm_ustring_compose/main.cc
glibmm_ustring_format_test_SOURCES = glibmm_ustring_format/main.cc
diff --git a/tests/glibmm_object/main.cc b/tests/glibmm_object/main.cc
new file mode 100644
index 00000000..aeb71b70
--- /dev/null
+++ b/tests/glibmm_object/main.cc
@@ -0,0 +1,24 @@
+#include "test_derived_object.h"
+#include <glibmm.h>
+#include <iostream>
+#include <stdlib.h>
+
+static void
+test_object()
+{
+ GObject* gobject = G_OBJECT(g_object_new(TEST_TYPE_DERIVED, nullptr));
+ DerivedObject derived(gobject, 5);
+ // std::cout << "debug: gobj(): " << derived.gobj() << std::endl;
+ g_assert(derived.gobj() == gobject);
+}
+
+int
+main(int, char**)
+{
+ Glib::init();
+
+ test_objectbase();
+ test_object();
+
+ return EXIT_SUCCESS;
+}
diff --git a/tests/glibmm_object/test_derived_object.h b/tests/glibmm_object/test_derived_object.h
new file mode 100644
index 00000000..4c506b2b
--- /dev/null
+++ b/tests/glibmm_object/test_derived_object.h
@@ -0,0 +1,60 @@
+#ifndef _GLIBMM_TEST_DERIVED_OBJECT_H
+#define _GLIBMM_TEST_DERIVED_OBJECT_H
+
+#include <glibmm.h>
+
+// A basic derived GObject, just to test Glib::Object.
+typedef struct
+{
+ GObject parent;
+} TestDerived;
+
+typedef struct
+{
+ GObjectClass parent;
+} TestDerivedClass;
+
+#define TEST_TYPE_DERIVED (test_derived_get_type())
+#define TEST_DERIVED(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), TEST_TYPE_DERIVED, TestDerived))
+#define TEST_DERIVED_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST((cls), TEST_TYPE_DERIVED, TestDerivedClass))
+#define TEST_DERIVED_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS((obj), TEST_TYPE_DERIVED, TestDerivedClass))
+
+static void
+test_derived_class_init(TestDerivedClass*)
+{
+}
+static void
+test_derived_init(TestDerived*)
+{
+}
+
+G_DEFINE_TYPE(TestDerived, test_derived, G_TYPE_OBJECT)
+
+class DerivedObject : public Glib::Object
+{
+public:
+ // A real application would never make the constructor public.
+ // It would instead have a protected constructor and a public create() method.
+ DerivedObject(GObject* gobject, int i) : Glib::Object(gobject), i_(i) {}
+
+ DerivedObject(const DerivedObject& src) = delete;
+ DerivedObject& operator=(const DerivedObject& src) = delete;
+
+ DerivedObject(DerivedObject&& src) noexcept : Glib::Object(std::move(src)), i_(std::move(src.i_))
+ {
+ }
+
+ DerivedObject& operator=(DerivedObject&& src) noexcept
+ {
+ Glib::Object::operator=(std::move(src));
+ i_ = std::move(src.i_);
+
+ return *this;
+ }
+
+ int i_;
+};
+
+#endif // _GLIBMM_TEST_DERIVED_OBJECT_H
diff --git a/tests/glibmm_object_move/main.cc b/tests/glibmm_object_move/main.cc
index 4f34cb73..1383b74e 100644
--- a/tests/glibmm_object_move/main.cc
+++ b/tests/glibmm_object_move/main.cc
@@ -1,61 +1,8 @@
+#include "../glibmm_object/test_derived_object.h"
#include <glibmm.h>
#include <iostream>
#include <stdlib.h>
-// A basic derived GObject, just to test Glib::Object.
-typedef struct
-{
- GObject parent;
-} TestDerived;
-
-typedef struct
-{
- GObjectClass parent;
-} TestDerivedClass;
-
-#define TEST_TYPE_DERIVED (test_derived_get_type())
-#define TEST_DERIVED(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), TEST_TYPE_DERIVED, TestDerived))
-#define TEST_DERIVED_CLASS(cls) \
- (G_TYPE_CHECK_CLASS_CAST((cls), TEST_TYPE_DERIVED, TestDerivedClass))
-#define TEST_DERIVED_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), TEST_TYPE_DERIVED, TestDerivedClass))
-
-static void
-test_derived_class_init(TestDerivedClass*)
-{
-}
-static void
-test_derived_init(TestDerived*)
-{
-}
-
-G_DEFINE_TYPE(TestDerived, test_derived, G_TYPE_OBJECT)
-
-class DerivedObject : public Glib::Object
-{
-public:
- // A real application would never make the constructor public.
- // It would instead have a protected constructor and a public create() method.
- DerivedObject(GObject* gobject, int i) : Glib::Object(gobject), i_(i) {}
-
- DerivedObject(const DerivedObject& src) = delete;
- DerivedObject& operator=(const DerivedObject& src) = delete;
-
- DerivedObject(DerivedObject&& src) noexcept : Glib::Object(std::move(src)), i_(std::move(src.i_))
- {
- }
-
- DerivedObject& operator=(DerivedObject&& src) noexcept
- {
- Glib::Object::operator=(std::move(src));
- i_ = std::move(src.i_);
-
- return *this;
- }
-
- int i_;
-};
-
static void
test_object_move_constructor()
{
diff --git a/tests/glibmm_objectbase/main.cc b/tests/glibmm_objectbase/main.cc
new file mode 100644
index 00000000..9ccf52e6
--- /dev/null
+++ b/tests/glibmm_objectbase/main.cc
@@ -0,0 +1,24 @@
+#include "test_derived_objectbase.h"
+#include "../glibmm_object/test_derived_object.h"
+#include <glibmm.h>
+#include <iostream>
+#include <stdlib.h>
+
+static void
+test_objectbase()
+{
+ GObject* gobject = G_OBJECT(g_object_new(TEST_TYPE_DERIVED, nullptr));
+ DerivedObjectBase derived(gobject, 5);
+ // std::cout << "debug: gobj(): " << derived.gobj() << std::endl;
+ g_assert(derived.gobj() == gobject);
+}
+
+int
+main(int, char**)
+{
+ Glib::init();
+
+ test_objectbase();
+
+ return EXIT_SUCCESS;
+}
diff --git a/tests/glibmm_objectbase/test_derived_objectbase.h b/tests/glibmm_objectbase/test_derived_objectbase.h
new file mode 100644
index 00000000..a4a509a8
--- /dev/null
+++ b/tests/glibmm_objectbase/test_derived_objectbase.h
@@ -0,0 +1,36 @@
+#ifndef _GLIBMM_TEST_DERIVED_OBJECTBASE_H
+#define _GLIBMM_TEST_DERIVED_OBJECTBASE_H
+
+#include <glibmm.h>
+
+class DerivedObjectBase : public Glib::ObjectBase
+{
+public:
+ // A real application would never make the constructor public.
+ // It would instead have a protected constructor and a public create() method.
+ DerivedObjectBase(GObject* gobject, int i) : Glib::ObjectBase(nullptr), i_(i)
+ {
+ Glib::ObjectBase::initialize(gobject);
+ }
+
+ DerivedObjectBase(const DerivedObjectBase& src) = delete;
+ DerivedObjectBase& operator=(const DerivedObjectBase& src) = delete;
+
+ DerivedObjectBase(DerivedObjectBase&& src) noexcept : Glib::ObjectBase(std::move(src)),
+ i_(std::move(src.i_))
+ {
+ ObjectBase::initialize_move(src.gobject_, &src);
+ }
+
+ DerivedObjectBase& operator=(DerivedObjectBase&& src) noexcept
+ {
+ Glib::ObjectBase::operator=(std::move(src));
+ i_ = std::move(src.i_);
+
+ return *this;
+ }
+
+ int i_;
+};
+
+#endif // _GLIBMM_TEST_DERIVED_OBJECTBASE_H
diff --git a/tests/glibmm_objectbase_move/main.cc b/tests/glibmm_objectbase_move/main.cc
index 697f3cf5..79bab6a4 100644
--- a/tests/glibmm_objectbase_move/main.cc
+++ b/tests/glibmm_objectbase_move/main.cc
@@ -1,66 +1,9 @@
+#include "../glibmm_objectbase/test_derived_objectbase.h"
+#include "../glibmm_object/test_derived_object.h"
#include <glibmm.h>
#include <iostream>
#include <stdlib.h>
-// A basic derived GObject, just to test Glib::ObjectBase.
-typedef struct
-{
- GObject parent;
-} TestDerived;
-
-typedef struct
-{
- GObjectClass parent;
-} TestDerivedClass;
-
-#define TEST_TYPE_DERIVED (test_derived_get_type())
-#define TEST_DERIVED(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), TEST_TYPE_DERIVED, TestDerived))
-#define TEST_DERIVED_CLASS(cls) \
- (G_TYPE_CHECK_CLASS_CAST((cls), TEST_TYPE_DERIVED, TestDerivedClass))
-#define TEST_DERIVED_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj), TEST_TYPE_DERIVED, TestDerivedClass))
-
-static void
-test_derived_class_init(TestDerivedClass*)
-{
-}
-static void
-test_derived_init(TestDerived*)
-{
-}
-
-G_DEFINE_TYPE(TestDerived, test_derived, G_TYPE_OBJECT)
-
-class DerivedObjectBase : public Glib::ObjectBase
-{
-public:
- // A real application would never make the constructor public.
- // It would instead have a protected constructor and a public create() method.
- DerivedObjectBase(GObject* gobject, int i) : Glib::ObjectBase(nullptr), i_(i)
- {
- Glib::ObjectBase::initialize(gobject);
- }
-
- DerivedObjectBase(const DerivedObjectBase& src) = delete;
- DerivedObjectBase& operator=(const DerivedObjectBase& src) = delete;
-
- DerivedObjectBase(DerivedObjectBase&& src) noexcept : Glib::ObjectBase(std::move(src)),
- i_(std::move(src.i_))
- {
- ObjectBase::initialize_move(src.gobject_, &src);
- }
-
- DerivedObjectBase& operator=(DerivedObjectBase&& src) noexcept
- {
- Glib::ObjectBase::operator=(std::move(src));
- i_ = std::move(src.i_);
-
- return *this;
- }
-
- int i_;
-};
-
static void
test_objectbase_move_constructor()
{