diff options
author | Murray Cumming <murrayc@murrayc.com> | 2017-04-09 12:32:44 +0200 |
---|---|---|
committer | Murray Cumming <murrayc@murrayc.com> | 2017-04-09 13:02:05 +0200 |
commit | 696685eeaa639ae5e41a9eaa761250368af492db (patch) | |
tree | c83e58911c52680c139f857bedbf923662902f10 | |
parent | bc233c576d24adf640d333394228b93d548d75cc (diff) | |
download | glibmm-696685eeaa639ae5e41a9eaa761250368af492db.tar.gz |
tests: Split object_move and objectbase_move tests.
This allows further reuse of the DerivedObject and DerivedObjectBase test classes.
-rw-r--r-- | tests/Makefile.am | 5 | ||||
-rw-r--r-- | tests/glibmm_object/main.cc | 24 | ||||
-rw-r--r-- | tests/glibmm_object/test_derived_object.h | 60 | ||||
-rw-r--r-- | tests/glibmm_object_move/main.cc | 55 | ||||
-rw-r--r-- | tests/glibmm_objectbase/main.cc | 24 | ||||
-rw-r--r-- | tests/glibmm_objectbase/test_derived_objectbase.h | 36 | ||||
-rw-r--r-- | tests/glibmm_objectbase_move/main.cc | 61 |
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() { |