[ElmSharp] Add new APIs for automation test (#619)
authorarosis78 <35049857+arosis78@users.noreply.github.com>
Tue, 18 Dec 2018 07:42:39 +0000 (16:42 +0900)
committerGitHub <noreply@github.com>
Tue, 18 Dec 2018 07:42:39 +0000 (16:42 +0900)
* [ElmSharp] Add new APIs for automation test

Signed-off-by: Jeonghyun Yun <jh0506.yun@samsung.com>
* Update Elementary.cs

* Update EvasObject.cs

src/ElmSharp/ElmSharp/Elementary.cs [changed mode: 0644->0755]
src/ElmSharp/ElmSharp/EvasObject.cs
test/ElmSharp.Test/TestRunner.cs [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index 43b7a2b..1fbd4eb
@@ -48,7 +48,18 @@ namespace ElmSharp
     /// <since_tizen> preview </since_tizen>
     public static class Elementary
     {
-        private static readonly string _themeFilePath = "/usr/share/elm-sharp/elm-sharp-theme.edj";
+        private const string _themeFilePath = "/usr/share/elm-sharp/elm-sharp-theme.edj";
+
+        /// <summary>
+        /// EvasObjectRealized will be triggered when the EvasObject is realized.
+        /// </summary>
+        /// <since_tizen> preview </since_tizen>
+        public static event EventHandler EvasObjectRealized;
+        
+        internal static void SendEvasObjectRealized(EvasObject obj)
+        {
+            EvasObjectRealized?.Invoke(obj, EventArgs.Empty);
+        }
 
         /// <summary>
         /// Gets or sets the configured finger size.
@@ -399,4 +410,4 @@ namespace ElmSharp
             Interop.Elementary.elm_config_all_flush();
         }
     }
-}
\ No newline at end of file
+}
index 1661184..cb65a04 100755 (executable)
@@ -184,6 +184,7 @@ namespace ElmSharp
     {
         private IntPtr _realHandle = IntPtr.Zero;
         private EvasCanvas _evasCanvas;
+        private string _automationId;
 
         private event EventHandler _backButtonPressed;
 
@@ -228,6 +229,8 @@ namespace ElmSharp
         EvasObjectEvent<EvasKeyEventArgs> _keydown;
         EvasObjectEvent _moved;
         EvasObjectEvent _resized;
+        EvasObjectEvent _shown;
+        EvasObjectEvent _hidden;
         EventHandler _renderPost;
         Interop.Evas.EvasCallback _renderPostCallback = null;
         Interop.Elementary.Elm_Tooltip_Content_Cb _tooltipContentCallback = null;
@@ -367,6 +370,26 @@ namespace ElmSharp
         }
 
         /// <summary>
+        /// Shown will be triggered when the widget is shown.
+        /// </summary>
+        /// <since_tizen> preview </since_tizen>
+        public event EventHandler Shown
+        {
+            add { _shown.On += value; }
+            remove { _shown.On -= value; }
+        }
+        
+        /// <summary>
+        /// Hidden will be triggered when the widget is hidden.
+        /// </summary>
+        /// <since_tizen> preview </since_tizen>
+        public event EventHandler Hidden
+        {
+            add { _hidden.On += value; }
+            remove { _hidden.On -= value; }
+        }
+
+        /// <summary>
         /// RenderPost Event Handler of the current widget.
         /// </summary>
         /// <since_tizen> preview </since_tizen>
@@ -420,6 +443,24 @@ namespace ElmSharp
         }
 
         /// <summary>
+        /// Sets of gets a value that allow the automation framework to find and interact with this object.
+        /// </summary>
+        /// <since_tizen> preview </since_tizen>
+        public string AutomationId
+        {
+            get
+            {
+                return _automationId;
+            }
+            set
+            {
+                if (_automationId != null)
+                    throw new InvalidOperationException("AutomationId may only be set one time.");
+                _automationId = value;
+            }
+        }
+
+        /// <summary>
         /// Gets the current class's Name.
         /// </summary>
         /// <since_tizen> preview </since_tizen>
@@ -1181,8 +1222,12 @@ namespace ElmSharp
                 _keyup = new EvasObjectEvent<EvasKeyEventArgs>(this, RealHandle, EvasObjectCallbackType.KeyUp, EvasKeyEventArgs.Create);
                 _moved = new EvasObjectEvent(this, EvasObjectCallbackType.Move);
                 _resized = new EvasObjectEvent(this, EvasObjectCallbackType.Resize);
+                _shown = new EvasObjectEvent(this, EvasObjectCallbackType.Show);
+                _hidden = new EvasObjectEvent(this, EvasObjectCallbackType.Hide);
 
                 _deleted.On += (s, e) => MakeInvalidate();
+
+                Elementary.SendEvasObjectRealized(this);
             }
         }
 
old mode 100644 (file)
new mode 100755 (executable)
index 315cb0b..182fd60
@@ -220,6 +220,12 @@ namespace ElmSharp.Test
             Console.WriteLine("ELM_PROFILE : {0}", profile);
             Console.WriteLine("ELM_SCALE : {0}", Elementary.GetScale());
 
+            Elementary.EvasObjectRealized += (s, e) =>
+            {
+                var obj = (EvasObject)s;
+                //Console.WriteLine("EvasObject Realized : ClassName = {0}", obj.ClassName);
+            };
+
             TestRunner testRunner = new TestRunner();
             testRunner.Profile = profile;
             testRunner.Run(args);