summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Andreoli <dave@gurumeditation.it>2018-01-01 08:35:39 +0100
committerDave Andreoli <dave@gurumeditation.it>2018-01-01 08:37:13 +0100
commite7a26af3302784ef30fe26cd1a5801cba155b1b2 (patch)
treecf7a1a6dc34d70f38070d5df0da8a6741c0e3291
parentdd97383887c2439f5edfc5651bee45a27b9af5d9 (diff)
downloadefl-e7a26af3302784ef30fe26cd1a5801cba155b1b2.tar.gz
Pyolian: better equality test, new hierarchy prop and some tests
-rw-r--r--src/scripts/pyolian/eolian.py21
-rwxr-xr-xsrc/scripts/pyolian/test_eolian.py22
-rw-r--r--src/scripts/pyolian/test_gen_class.template14
3 files changed, 50 insertions, 7 deletions
diff --git a/src/scripts/pyolian/eolian.py b/src/scripts/pyolian/eolian.py
index ced4934f2e..a5653a5120 100644
--- a/src/scripts/pyolian/eolian.py
+++ b/src/scripts/pyolian/eolian.py
@@ -272,7 +272,14 @@ class EolianBaseObject(object):
type(c_obj_pointer), self.__class__.__name__))
def __eq__(self, other):
- return self._obj.value == other._obj.value
+ if isinstance(other, EolianBaseObject):
+ return self._obj.value == other._obj.value
+ elif isinstance(other, str):
+ if hasattr(self, 'full_name'):
+ return self.full_name == other
+ elif hasattr(self, 'name'):
+ return self.name == other
+ return False
def __hash__(self):
return self._obj.value
@@ -499,6 +506,15 @@ class Class(EolianBaseObject):
return L
@property
+ def hierarchy(self):
+ L = []
+ base = self.base_class
+ while base:
+ L.append(base)
+ base = base.base_class
+ return L
+
+ @property
def base_class(self):
inherits = list(self.inherits)
if len(inherits) > 0:
@@ -884,9 +900,6 @@ class Implement(EolianBaseObject):
def is_method(self):
return not self.is_property
- def is_overridden(self, cls):
- return cls.name == self.class_.name # TODO equality inside class
-
class Type(EolianBaseObject): # OK (4 eolian issue)
def __repr__(self):
diff --git a/src/scripts/pyolian/test_eolian.py b/src/scripts/pyolian/test_eolian.py
index 24b76c5686..76baf887f2 100755
--- a/src/scripts/pyolian/test_eolian.py
+++ b/src/scripts/pyolian/test_eolian.py
@@ -30,12 +30,27 @@ class TestBaseObject(unittest.TestCase):
self.assertIsInstance(cls1, eolian.Class)
self.assertIsInstance(cls2, eolian.Class)
self.assertEqual(cls1, cls2)
+ self.assertEqual(cls1, 'Efl.Loop.Timer')
+ self.assertEqual(cls2, 'Efl.Loop.Timer')
+ self.assertNotEqual(cls1, 'another string')
+ self.assertNotEqual(cls1, 1234)
+ self.assertNotEqual(cls1, None)
+ self.assertNotEqual(cls1, 0)
enum1 = state.typedecl_enum_get_by_name('Efl.Ui.Focus.Direction')
enum2 = state.typedecl_enum_get_by_name('Efl.Ui.Focus.Direction')
self.assertIsInstance(enum1, eolian.Typedecl)
self.assertIsInstance(enum2, eolian.Typedecl)
self.assertEqual(enum1, enum2)
+ self.assertEqual(enum1, 'Efl.Ui.Focus.Direction')
+ self.assertEqual(enum2, 'Efl.Ui.Focus.Direction')
+ self.assertNotEqual(enum1, 'another string')
+ self.assertNotEqual(enum1, 1234)
+ self.assertNotEqual(enum1, None)
+ self.assertNotEqual(enum1, 0)
+
+ self.assertNotEqual(cls1, enum1)
+
class TestEolianUnit(unittest.TestCase):
@@ -152,7 +167,10 @@ class TestEolianClass(unittest.TestCase):
self.assertIsNone(cls.eo_prefix) # TODO fin a class with a value
self.assertIsNone(cls.event_prefix) # TODO same as above
self.assertIsNone(cls.data_type) # TODO same as above
- self.assertEqual(len(list(cls.inherits)), 1)
+ self.assertEqual(cls.base_class.full_name, 'Efl.Loop.Consumer')
+ self.assertEqual([c.full_name for c in cls.inherits], ['Efl.Loop.Consumer'])
+ self.assertEqual([c.full_name for c in cls.inherits_full], ['Efl.Loop.Consumer', 'Efl.Object'])
+ self.assertEqual([c.full_name for c in cls.hierarchy], ['Efl.Loop.Consumer', 'Efl.Object'])
self.assertFalse(cls.ctor_enable)
self.assertFalse(cls.dtor_enable)
self.assertEqual(cls.c_get_function_name, 'efl_loop_timer_class_get')
@@ -225,6 +243,8 @@ class TestEolianImplement(unittest.TestCase):
self.assertFalse(im.is_pure_virtual())
self.assertFalse(im.is_prop_set)
self.assertFalse(im.is_prop_get)
+ self.assertFalse(im.is_property)
+ self.assertTrue(im.is_method)
class TestEolianEvent(unittest.TestCase):
diff --git a/src/scripts/pyolian/test_gen_class.template b/src/scripts/pyolian/test_gen_class.template
index 7f03b5edd2..ff8c17de62 100644
--- a/src/scripts/pyolian/test_gen_class.template
+++ b/src/scripts/pyolian/test_gen_class.template
@@ -4,8 +4,10 @@ Class: ${cls.full_name}$
================================================================================
Class type: ${cls.type}$
Base Class: ${cls.base_class.full_name if cls.base_class else None}$
-Inherits: ${list(cls.inherits)}$
-InheritsFull: ${cls.inherits_full}$
+Inherits: ${', '.join([i.full_name for i in cls.inherits])}$
+Hierarchy: ${' => '.join([i.full_name for i in cls.hierarchy])}$
+InheritsFull: ${', '.join([i.full_name for i in cls.inherits_full])}$
+Namespace: ${cls.namespace}$
Namespaces: ${list(cls.namespaces)}$
File: ${cls.file}$
Ctor enable: ${cls.ctor_enable}$
@@ -35,6 +37,14 @@ Properties:
no properties available
<!--(end)-->
+Implements:
+===========
+<!--(for i in cls.implements)-->
+ * ${i.full_name}$
+<!--(else)-->
+ no implements available
+<!--(end)-->
+
Events:
=======
<!--(for event in cls.events)-->