コード例 #1
0
        public AppResult[] WaitForElement(AppQuery query, int timeout)
        {
            const int pollTime = 200;

            syncEvent.Reset();
            AppResult[] resultSet = null;

            GLib.Timeout.Add((uint)pollTime, () => {
                resultSet = ExecuteQueryNoWait(query);

                if (resultSet.Length > 0)
                {
                    syncEvent.Set();
                    return(false);
                }

                timeout -= pollTime;
                return(timeout > 0);
            });

            if (!syncEvent.WaitOne(timeout))
            {
                throw new TimeoutException(String.Format("Timeout while executing WaitForElement: {0}", query));
            }

            return(resultSet);
        }
コード例 #2
0
		public AppQuery CreateNewQuery ()
		{
			AppQuery query = new AppQuery ();
			query.SessionDebug = SessionDebug;

			return query;
		}
コード例 #3
0
        public void WaitForNoElement(Func <AppQuery, AppQuery> query, int timeout = 5000)
        {
            AppQuery c = session.CreateNewQuery();

            c = query(c);

            ClearEventQueue();
            session.WaitForNoElement(c, timeout);
        }
コード例 #4
0
        public AppResult[] WaitForElement(Func <AppQuery, AppQuery> query, int timeout = 5000)
        {
            AppQuery c = session.CreateNewQuery();

            c = query(c);

            ClearEventQueue();
            return(session.WaitForElement(c, timeout));
        }
コード例 #5
0
        public AppResult[] Query(Func <AppQuery, AppQuery> query)
        {
            AppQuery c = session.CreateNewQuery();

            c = query(c);

            ClearEventQueue();
            return(session.ExecuteQuery(c));
        }
コード例 #6
0
        // Executes the query outside of a syncEvent wait so it is safe to call from
        // inside an ExecuteOnIdleAndWait
        internal AppResult[] ExecuteQueryNoWait(AppQuery query)
        {
            AppResult[] resultSet = query.Execute();
            Sync(() => {
                DispatchService.RunPendingEvents();
                return(true);
            });

            return(resultSet);
        }
コード例 #7
0
        public AppQuery CreateNewQuery()
        {
            AppQuery query = new AppQuery();

            query.SessionDebug = SessionDebug;

            lock (queries)
                queries.Add(query);
            return(query);
        }
コード例 #8
0
        public AppResult[] ExecuteQuery(AppQuery query, int timeout = 20000)
        {
            AppResult[] resultSet = null;

            try {
                ExecuteOnIdle(() => {
                    resultSet = ExecuteQueryNoWait(query);
                }, timeout: timeout);
            } catch (TimeoutException e) {
                throw new TimeoutException(string.Format("Timeout while executing ExecuteQuery: {0}", query), e);
            }
            return(resultSet);
        }
コード例 #9
0
            public override void Replay(AutoTestSession testSession)
            {
                AppQuery query = testSession.CreateNewQuery();

                AppResult[] results = query.Window().Marked("MonoDevelop.Ide.Gui.DefaultWorkbench").Execute();
                if (results.Length == 0)
                {
                    return;
                }

                testSession.Select(results [0]);

                if (results [0] is AutoTest.Results.GtkWidgetResult)
                {
                    AutoTest.Results.GtkWidgetResult widgetResult = (AutoTest.Results.GtkWidgetResult)results [0];
                    widgetResult.EnterText(Text);
                }
            }
コード例 #10
0
            public override void Replay(AutoTestSession testSession)
            {
                // Select the main window and then we can push key events to it.
                AppQuery query = testSession.CreateNewQuery();

                AppResult[] results = query.Window().Marked("MonoDevelop.Ide.Gui.DefaultWorkbench").Execute();
                if (results.Length == 0)
                {
                    return;
                }

                testSession.Select(results[0]);
                // We need the GtkWidgetResult for the main window as we only have the keys as a Gdk key
                if (results [0] is AutoTest.Results.GtkWidgetResult)
                {
                    AutoTest.Results.GtkWidgetResult widgetResult = (AutoTest.Results.GtkWidgetResult)results[0];
                    widgetResult.RealTypeKey(Key, Modifiers);
                }
            }
コード例 #11
0
        public void WaitForNoElement(AppQuery query, int timeout)
        {
            const int pollTime = 100;

            syncEvent.Reset();
            AppResult[] resultSet = null;

            GLib.Timeout.Add((uint)pollTime, () => {
                resultSet = query.Execute();
                if (resultSet.Length == 0)
                {
                    syncEvent.Set();
                    return(false);
                }

                timeout -= pollTime;
                return(timeout > 0);
            });

            if (!syncEvent.WaitOne(timeout))
            {
                throw new Exception("Timeout while executing synchronized call");
            }
        }
コード例 #12
0
		public void WaitForNoElement (AppQuery query, int timeout)
		{
			const int pollTime = 100;
			syncEvent.Reset ();
			AppResult[] resultSet = null;

			GLib.Timeout.Add ((uint)pollTime, () => {
				resultSet = ExecuteQueryNoWait (query);
				if (resultSet.Length == 0) {
					syncEvent.Set ();
					return false;
				}

				timeout -= pollTime;
				return timeout > 0;
			});

			if (!syncEvent.WaitOne (timeout)) {
				throw new TimeoutException (String.Format ("Timeout while executing WaitForNoElement: {0}", query));
			}
		}
コード例 #13
0
		public AppResult[] ExecuteQuery (AppQuery query, int timeout = 20000)
		{
			AppResult[] resultSet = null;

			try {
				ExecuteOnIdle (() => {
					resultSet = ExecuteQueryNoWait (query);
				});
			} catch (TimeoutException e) {
				throw new TimeoutException (string.Format ("Timeout while executing ExecuteQuery: {0}", query), e);
			}

			return resultSet;
		}
コード例 #14
0
		// Executes the query outside of a syncEvent wait so it is safe to call from
		// inside an ExecuteOnIdleAndWait
		AppResult[] ExecuteQueryNoWait (AppQuery query)
		{
			AppResult[] resultSet = query.Execute ();
			Sync (() => {
				DispatchService.RunPendingEvents ();
				return true;
			});

			return resultSet;
		}
コード例 #15
0
		public AppQuery CreateNewQuery ()
		{
			AppQuery query = new AppQuery ();
			query.SessionDebug = SessionDebug;

			return query;
		}
コード例 #16
0
 public AppResult[] ExecuteQuery(AppQuery query)
 {
     return(query.Execute());
 }