[glibmm/vector] Add tests for singly-linked lists also.
- From: Krzesimir Nowak <krnowak src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glibmm/vector] Add tests for singly-linked lists also.
- Date: Tue, 18 Jan 2011 22:42:52 +0000 (UTC)
commit 76b099f2c278d7c1b2e91ef93b035f788b2dda94
Author: Krzesimir Nowak <qdlacz gmail com>
Date: Tue Jan 18 23:42:07 2011 +0100
Add tests for singly-linked lists also.
tests/glibmm_vector/main.cc | 159 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 159 insertions(+), 0 deletions(-)
---
diff --git a/tests/glibmm_vector/main.cc b/tests/glibmm_vector/main.cc
index 2fc9b12..474bfe3 100644
--- a/tests/glibmm_vector/main.cc
+++ b/tests/glibmm_vector/main.cc
@@ -42,6 +42,18 @@ create_list ()
return g_list_reverse (head);
}
+GSList*
+create_slist ()
+{
+ GSList* head = 0;
+
+ for (unsigned int iter (0); iter < magic_limit; ++iter)
+ {
+ head = g_slist_prepend (head, g_credentials_new ());
+ }
+ return g_slist_reverse (head);
+}
+
GCredentials**
create_array ()
{
@@ -72,6 +84,7 @@ struct Cache
public:
Cache()
: glist_ (create_list ()),
+ gslist_ (create_slist ()),
garray_ (create_array ())
{}
@@ -82,6 +95,11 @@ public:
g_list_foreach (glist_, reinterpret_cast<GFunc> (g_object_unref), 0);
g_list_free (glist_);
}
+ if (gslist_)
+ {
+ g_slist_foreach (gslist_, reinterpret_cast<GFunc> (g_object_unref), 0);
+ g_slist_free (gslist_);
+ }
if (garray_)
{
for (unsigned int iter (0); iter < magic_limit; ++iter)
@@ -110,6 +128,24 @@ public:
}
}
+ void print_slist ()
+ {
+ unsigned int counter (1);
+
+ for (GSList* node (gslist_); node; node = node->next, ++counter)
+ {
+ std::cout << counter << ": ";
+ if (G_IS_CREDENTIALS (node->data))
+ {
+ std::cout << node->data << ", ref: " << G_OBJECT (node->data)->ref_count <<"\n";
+ }
+ else
+ {
+ std::cout << "no C instance?\n";
+ }
+ }
+ }
+
void print_array ()
{
for (unsigned int iter (0); iter < magic_limit; ++iter)
@@ -127,6 +163,7 @@ public:
}
GList* glist_;
+ GSList* gslist_;
GCredentials** garray_;
private:
@@ -160,6 +197,24 @@ return_unowned_list ()
return create_list ();
}
+GSList*
+return_deep_owned_slist ()
+{
+ return get_cache ().gslist_;
+}
+
+GSList*
+return_shallow_owned_slist ()
+{
+ return g_slist_copy (return_deep_owned_slist ());
+}
+
+GSList*
+return_unowned_slist ()
+{
+ return create_slist ();
+}
+
GCredentials**
return_deep_owned_array ()
{
@@ -230,6 +285,56 @@ take_list_nothing (GList* list)
/* they are probably buggy by design...
void
+take_slist_all (GSList* slist)
+{
+ if (slist)
+ {
+ // i'm lazy.
+ Cache& cache (get_cache ());
+ GSList* backup = cache.gslist_;
+
+ cache.gslist_ = slist;
+ cache.print_slist ();
+ cache.gslist_ = backup;
+ g_slist_foreach (slist, reinterpret_cast<GFunc> (g_object_unref), 0);
+ g_slist_free (slist);
+ }
+}
+
+void
+take_list_members (GSList* slist)
+{
+ if (slist)
+ {
+ // i'm lazy.
+ Cache& cache (get_cache ());
+ GSList* backup = cache.gslist_;
+
+ cache.gslist_ = slist;
+ cache.print_slist ();
+ cache.gslist_ = backup;
+ g_slist_foreach (slist, reinterpret_cast<GFunc> (g_object_unref), 0);
+ }
+}
+*/
+
+void
+take_slist_nothing (GSList* slist)
+{
+ if (slist)
+ {
+ // i'm lazy.
+ Cache& cache (get_cache ());
+ GSList* backup = cache.gslist_;
+
+ cache.gslist_ = slist;
+ cache.print_slist ();
+ cache.gslist_ = backup;
+ }
+}
+
+/* they are probably buggy by design...
+void
take_array_all (GCredentials** array)
{
if (array)
@@ -303,6 +408,24 @@ cxx_get_none_list ()
}
std::vector<Glib::RefPtr<Gio::Credentials> >
+cxx_get_deep_slist ()
+{
+ return Glib::VectorHandler<Glib::RefPtr<Gio::Credentials> >::slist_to_vector (return_deep_owned_slist (), Glib::OWNERSHIP_NONE);
+}
+
+std::vector<Glib::RefPtr<Gio::Credentials> >
+cxx_get_shallow_slist ()
+{
+ return Glib::VectorHandler<Glib::RefPtr<Gio::Credentials> >::slist_to_vector (return_shallow_owned_slist (), Glib::OWNERSHIP_SHALLOW);
+}
+
+std::vector<Glib::RefPtr<Gio::Credentials> >
+cxx_get_none_slist ()
+{
+ return Glib::VectorHandler<Glib::RefPtr<Gio::Credentials> >::slist_to_vector (return_unowned_slist (), Glib::OWNERSHIP_DEEP);
+}
+
+std::vector<Glib::RefPtr<Gio::Credentials> >
cxx_get_deep_array ()
{
return Glib::VectorHandler<Glib::RefPtr<Gio::Credentials> >::array_to_vector (return_deep_owned_array (), Glib::OWNERSHIP_NONE);
@@ -372,6 +495,26 @@ cxx_list_take_nothing (const std::vector<Glib::RefPtr<Gio::Credentials> >& v)
/* they are probably buggy by design...
void
+cxx_slist_take_all (const std::vector<Glib::RefPtr<Gio::Credentials> >& v)
+{
+ take_slist_all (Glib::VectorHandler<Glib::RefPtr<Gio::Credentials> >::vector_to_slist (v, Glib::OWNERSHIP_NONE));
+}
+
+void
+cxx_slist_take_members (const std::vector<Glib::RefPtr<Gio::Credentials> >& v)
+{
+ take_slist_members (Glib::VectorHandler<Glib::RefPtr<Gio::Credentials> >::vector_to_slist (v, Glib::OWNERSHIP_SHALLOW));
+}
+*/
+
+void
+cxx_slist_take_nothing (const std::vector<Glib::RefPtr<Gio::Credentials> >& v)
+{
+ take_slist_nothing (Glib::VectorHandler<Glib::RefPtr<Gio::Credentials> >::vector_to_slist (v, Glib::OWNERSHIP_SHALLOW));
+}
+
+/* they are probably buggy by design...
+void
cxx_array_take_all (const std::vector<Glib::RefPtr<Gio::Credentials> >& v)
{
take_array_all (Glib::VectorHandler<Glib::RefPtr<Gio::Credentials> >::vector_to_array (v, Glib::OWNERSHIP_NONE));
@@ -400,6 +543,8 @@ main()
std::cout << "Cache list before:\n";
cache.print_list ();
+ std::cout << "Cache slist before:\n";
+ cache.print_slist ();
std::cout << "Cache array before:\n";
cache.print_array ();
std::cout << "Deep list:\n";
@@ -408,6 +553,12 @@ main()
print_vector (cxx_get_shallow_list ());
std::cout << "None list:\n";
print_vector (cxx_get_none_list ());
+ std::cout << "Deep slist:\n";
+ print_vector (cxx_get_deep_slist ());
+ std::cout << "Shallow slist:\n";
+ print_vector (cxx_get_shallow_slist ());
+ std::cout << "None slist:\n";
+ print_vector (cxx_get_none_slist ());
std::cout << "Deep array:\n";
print_vector (cxx_get_deep_array ());
std::cout << "Shallow array:\n";
@@ -416,6 +567,8 @@ main()
print_vector (cxx_get_none_array ());
std::cout << "Cache list after:\n";
cache.print_list ();
+ std::cout << "Cache slist after:\n";
+ cache.print_slist ();
std::cout << "Cache array after:\n";
cache.print_array ();
@@ -431,6 +584,12 @@ main()
//cxx_list_take_members (v);
std::cout << "Take list nothing:\n";
cxx_list_take_nothing (v);
+ //std::cout << "Take slist all:\n";
+ //cxx_slist_take_all (v);
+ //std::cout << "Take slist members:\n";
+ //cxx_slist_take_members (v);
+ std::cout << "Take slist nothing:\n";
+ cxx_slist_take_nothing (v);
// Ditto.
//std::cout << "Take array all:\n";
//cxx_array_take_all (v);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]