summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Reiter <reiter.christoph@gmail.com>2018-02-16 17:43:00 +0100
committerChristoph Reiter <reiter.christoph@gmail.com>2018-02-16 17:43:00 +0100
commitc56b4510649dae58519681c1a53aed85d598139e (patch)
tree26ca827c3bee994425d2a53f7adb93db1a8cfcc3
parent9c3cb6b49c33f53d637e80aad68a67e89d0eb944 (diff)
downloadpygobject-c56b4510649dae58519681c1a53aed85d598139e.tar.gz
tests: add tests for boxed in GLists. See !24
-rw-r--r--tests/regressextra.c33
-rw-r--r--tests/regressextra.h4
-rw-r--r--tests/test_everything.py16
3 files changed, 53 insertions, 0 deletions
diff --git a/tests/regressextra.c b/tests/regressextra.c
index 9efa5986..4c92f337 100644
--- a/tests/regressextra.c
+++ b/tests/regressextra.c
@@ -67,3 +67,36 @@ regress_test_array_fixed_boxed_none_out (RegressTestBoxedC ***objs)
*objs = arr;
}
+
+/**
+ * regress_test_glist_boxed_none_return
+ * Return value: (element-type RegressTestBoxedC) (transfer none):
+**/
+GList *
+regress_test_glist_boxed_none_return (guint count)
+{
+ static GList *list = NULL;
+ if (!list) {
+ while (count > 0) {
+ list = g_list_prepend (list, regress_test_boxed_c_new ());
+ count--;
+ }
+ }
+
+ return list;
+}
+
+/**
+ * regress_test_glist_boxed_full_return
+ * Return value: (element-type RegressTestBoxedC) (transfer full):
+**/
+GList *
+regress_test_glist_boxed_full_return (guint count)
+{
+ GList *list = NULL;
+ while (count > 0) {
+ list = g_list_prepend (list, regress_test_boxed_c_new ());
+ count--;
+ }
+ return list;
+}
diff --git a/tests/regressextra.h b/tests/regressextra.h
index bfc6c3b0..d42edbd4 100644
--- a/tests/regressextra.h
+++ b/tests/regressextra.h
@@ -16,5 +16,9 @@ RegressTestBoxedC *regress_test_boxed_c_wrapper_get (RegressTestBoxedCWrapper *s
_GI_TEST_EXTERN
void regress_test_array_fixed_boxed_none_out (RegressTestBoxedC ***objs);
+_GI_TEST_EXTERN
+GList *regress_test_glist_boxed_none_return (guint count);
+_GI_TEST_EXTERN
+GList *regress_test_glist_boxed_full_return (guint count);
#endif /* REGRESS_EXTRA_H */
diff --git a/tests/test_everything.py b/tests/test_everything.py
index ee852098..c8694add 100644
--- a/tests/test_everything.py
+++ b/tests/test_everything.py
@@ -1166,6 +1166,22 @@ class TestBoxed(unittest.TestCase):
assert arr[0].refcount == 2
assert arr[1].refcount == 2
+ def test_glist_boxed_none_return(self):
+ assert len(Everything.test_glist_boxed_none_return(0)) == 0
+
+ list_ = Everything.test_glist_boxed_none_return(2)
+ assert len(list_) == 2
+ assert list_[0].refcount == 2
+ assert list_[1].refcount == 2
+
+ def test_glist_boxed_full_return(self):
+ assert len(Everything.test_glist_boxed_full_return(0)) == 0
+
+ list_ = Everything.test_glist_boxed_full_return(2)
+ assert len(list_) == 2
+ assert list_[0].refcount == 1
+ assert list_[1].refcount == 1
+
class TestTortureProfile(unittest.TestCase):
def test_torture_profile(self):