summaryrefslogtreecommitdiff
path: root/tests/glibext/singleton.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/glibext/singleton.py')
-rw-r--r--tests/glibext/singleton.py54
1 files changed, 48 insertions, 6 deletions
diff --git a/tests/glibext/singleton.py b/tests/glibext/singleton.py
index b0608f0..4588ae5 100644
--- a/tests/glibext/singleton.py
+++ b/tests/glibext/singleton.py
@@ -47,12 +47,15 @@ class TestSingleton(ChrysalideTestCase):
super().__init__()
self._val = val
- def __eq__(self, other):
- return self._val == other._val
+ def _list_inner_instances(self):
+ return ()
def __hash__(self):
return hash('common-key')
+ def __eq__(self, other):
+ return self._val == other._val
+
val_0 = IntegerCacheImplem(0)
val_0_bis = IntegerCacheImplem(0)
val_1 = IntegerCacheImplem(1)
@@ -70,24 +73,31 @@ class TestSingleton(ChrysalideTestCase):
def testSingletonFootprint(self):
"""Check for singleton memory footprint."""
+ sf = SingletonFactory()
+
+
class IntegerCacheImplem(GObject.Object, SingletonCandidate):
def __init__(self, val):
super().__init__()
self._val = val
- def __eq__(self, other):
- return self._val == other._val
+ def _list_inner_instances(self):
+ return ()
def __hash__(self):
return hash('common-key')
+ def __eq__(self, other):
+ return self._val == other._val
+
+ def _set_read_only(self):
+ pass
+
val_0 = IntegerCacheImplem(0)
val_0_bis = IntegerCacheImplem(0)
val_1 = IntegerCacheImplem(1)
- sf = SingletonFactory()
-
obj = sf.get_instance(val_0)
self.assertTrue(obj is val_0)
@@ -99,3 +109,35 @@ class TestSingleton(ChrysalideTestCase):
obj = sf.get_instance(val_1)
self.assertTrue(obj is val_1)
+
+ self.assertEqual(len(obj.inner_instances), 0)
+
+
+ class MasterCacheImplem(GObject.Object, SingletonCandidate):
+
+ def __init__(self, children):
+ super().__init__()
+ self._children = children
+
+ def _list_inner_instances(self):
+ return self._children
+
+ def _update_inner_instances(self, instances):
+ self._children = instances
+
+ def __hash__(self):
+ return hash('master-key')
+
+ def __eq__(self, other):
+ return False
+
+ def _set_read_only(self):
+ pass
+
+ master = MasterCacheImplem(( val_0_bis, val_1 ))
+
+ obj = sf.get_instance(master)
+
+ self.assertTrue(obj.inner_instances[0] is val_0)
+
+ self.assertTrue(obj.inner_instances[1] is val_1)