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) + + --