davemds pushed a commit to branch master.

http://git.enlightenment.org/bindings/python/python-efl.git/commit/?id=243664d73887b1831c4accddf73b714141b2949d

commit 243664d73887b1831c4accddf73b714141b2949d
Author: Dave Andreoli <d...@gurumeditation.it>
Date:   Fri Jun 3 14:20:41 2016 +0200

    Add a test to check eo class names
    
    a bit hackish, but do his work.
    And is important to check those names now that efl class names are going to 
be shuffled around :P
---
 efl/eo/efl.eo.pyx               |  5 +++
 tests/eo/test_02_class_names.py | 85 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 90 insertions(+)

diff --git a/efl/eo/efl.eo.pyx b/efl/eo/efl.eo.pyx
index 282c8ec..bd3549a 100644
--- a/efl/eo/efl.eo.pyx
+++ b/efl/eo/efl.eo.pyx
@@ -266,6 +266,11 @@ cdef class Eo(object):
 
         return 1
 
+    def _wipe_obj_data_NEVER_USE_THIS(self):
+        # only used in tests/eo/test_02_class_names.py
+        # to force object_from_instance() to recreate the obj
+        eo_key_data_set(self.obj, "python-eo", NULL)
+
     cdef int _set_properties_from_keyword_args(self, dict kwargs) except 0:
         if kwargs:
             for k, v in kwargs.items():
diff --git a/tests/eo/test_02_class_names.py b/tests/eo/test_02_class_names.py
new file mode 100644
index 0000000..d86823e
--- /dev/null
+++ b/tests/eo/test_02_class_names.py
@@ -0,0 +1,85 @@
+#!/usr/bin/env python
+
+from efl import evas
+from efl import elementary as elm
+
+import unittest
+
+
+""" NOT TESTED YET:
+
+Evas_Canvas  ->  Canvas
+Evas_Smart  ->  SmartObject
+Evas_FilledImage  ->  FilledImage
+
+Elm_Conformant  ->  Conformant
+Elm_Widget  ->  Object
+Elm_Web  ->  Web
+
+"""
+
+class TestElmClassNames(unittest.TestCase):
+
+    def setUp(self):
+        elm.need_ethumb()
+        self.win = elm.Window("t", elm.ELM_WIN_BASIC)
+        self.frame = elm.Frame(self.win)
+
+    def tearDown(self):
+        self.win.delete()
+
+    def testElm(self):
+        # 1. test window
+
+        # this code will force the recreation of the py object (by class name)
+        # in the function object_from_instance()
+        self.win._wipe_obj_data_NEVER_USE_THIS()
+        del self.win
+        self.win = self.frame.top_widget_get()
+        self.assertIsInstance(self.win, elm.Window)
+
+        # 2. test all the other widgets
+        for cls in [elm.Actionslider, elm.Background, elm.Box,
+                    elm.Bubble, elm.Button, elm.Calendar, elm.Check, elm.Clock,
+                    elm.Colorselector, elm.Combobox, elm.Ctxpopup, 
elm.Datetime,
+                    elm.Dayselector, elm.Diskselector, elm.Entry, 
elm.Fileselector,
+                    elm.FileselectorButton, elm.FileselectorEntry, elm.Flip,
+                    elm.FlipSelector, elm.Frame, elm.Gengrid, elm.Genlist,
+                    elm.GestureLayer, elm.Grid, elm.Hover, elm.Hoversel, 
elm.Icon,
+                    elm.Image, elm.Index, elm.InnerWindow, elm.Label, 
elm.Layout,
+                    elm.List, elm.Map, elm.Mapbuf, elm.Menu, 
elm.MultiButtonEntry,
+                    elm.Naviframe, elm.Notify, elm.Panel, elm.Panes, elm.Photo,
+                    elm.Photocam, elm.Plug, elm.Popup, elm.Progressbar, 
elm.Radio,
+                    elm.Scroller, elm.SegmentControl, elm.Separator, 
elm.Slider,
+                    elm.Slideshow, elm.Spinner, elm.Table, elm.Thumb, 
elm.Toolbar,
+                    elm.Video, elm.Player]:
+            obj1 = cls(self.win)
+            self.frame.content = obj1
+
+            obj1._wipe_obj_data_NEVER_USE_THIS()
+            del obj1
+            obj2 = self.frame.content
+            self.assertIsInstance(obj2, cls)
+
+            obj2.delete()
+            del obj2
+
+    def testEvas(self):
+        for cls in [evas.Image, evas.Line, evas.Polygon, evas.Text, 
evas.Textblock,
+                    evas.Box, evas.Textgrid, evas.Table, evas.Grid]:
+            obj1 = cls(self.win.evas)
+            self.frame.content = obj1
+
+            obj1._wipe_obj_data_NEVER_USE_THIS()
+            del obj1
+            obj2 = self.frame.content
+            self.assertIsInstance(obj2, cls)
+
+            obj2.delete()
+            del obj2
+
+
+if __name__ == '__main__':
+    unittest.main(verbosity=2)
+
+

-- 


Reply via email to