/// <summary>
        /// Builds any number of tests from the specified method and context.
        /// </summary>
        /// <param name="method">The MethodInfo for which tests are to be constructed.</param>
        /// <param name="suite">The suite to which the tests will be added.</param>
        public IEnumerable <ITestCaseData> GetTestCasesFor(MethodInfo method)
        {
            List <ITestCaseData> data = new List <ITestCaseData>();
            var dataProvider          = new ParameterDataProvider(method);

            ParameterInfo[] parameters = method.GetParameters();

            var name = method.Name; // For Debugging

            if (parameters.Length > 0)
            {
                IEnumerable[] sources = new IEnumerable[parameters.Length];

                try
                {
                    for (int i = 0; i < parameters.Length; i++)
                    {
                        sources[i] = dataProvider.GetDataFor(parameters[i]);
                    }

                    foreach (var parms in _strategy.GetTestCases(sources))
                    {
                        data.Add(parms);
                    }
                }
                catch (Exception ex)
                {
                    var parms = new TestCaseParameters(ex);
                    data.Add(parms);
                }
            }

            return(data);
        }
Exemplo n.º 2
0
        public void CanGetDataFromParameterDataProvider()
        {
            var method    = GetType().GetMethod(nameof(MethodWithValues), BindingFlags.Instance | BindingFlags.Public);
            var parameter = method.GetParameters()[0];
            var data      = new ParameterDataProvider(method).GetDataFor(parameter);
            var expected  = new[] { 1, 2, 3 };

            Assert.That(data, Is.EqualTo(expected));
        }
Exemplo n.º 3
0
        public virtual void RunParameterCompletionCommand()
        {
            if (Document.Editor.SelectionMode == Mono.TextEditor.SelectionMode.Block || CompletionWidget == null)
            {
                return;
            }
            ParameterDataProvider cp = null;
            int cpos;

            if (!GetParameterCompletionCommandOffset(out cpos))
            {
                cpos = Editor.Caret.Offset;
            }
            CodeCompletionContext ctx = CompletionWidget.CreateCodeCompletionContext(cpos);

            cp = ParameterCompletionCommand(ctx);
            if (cp != null)
            {
                ParameterInformationWindowManager.ShowWindow(this, CompletionWidget, ctx, cp);
                ParameterInformationWindowManager.PostProcessKeyEvent(this, CompletionWidget, Gdk.Key.F, Gdk.ModifierType.None);
            }
        }
Exemplo n.º 4
0
 public override IParameterDataProvider HandleParameterCompletion(CodeCompletionContext completionContext, char completionChar)
 {
     ParameterDataProvider pdp = null;
     if (char.IsWhiteSpace (completionChar) || '(' == completionChar) {
         pdp = new ParameterDataProvider (Document, completionContext);
     }
     return (null != pdp && pdp.Valid)? pdp: null;
 }
Exemplo n.º 5
0
        public void CanGetDataFromParameterDataProvider()
        {
            var data = new ParameterDataProvider(_method).GetDataFor(_parameter);

            Assert.That(data, Is.EqualTo(Range1to5));
        }
Exemplo n.º 6
0
        protected override bool OnKeyPressEvent(Gdk.EventKey evnt)
        {
            char charKey = (char)Gdk.Keyval.ToUnicode(evnt.KeyValue);

            if ((evnt.State == Gdk.ModifierType.ControlMask) && (charKey == 'v'))
            {
                PasteClipboard();
                return(true);
            }
            ;
            if ((evnt.State == Gdk.ModifierType.ControlMask) && (charKey == 'c'))
            {
                CopyClipboard();
                return(true);
            }
            ;

            KeyActions ka = KeyActions.None;

            //if (currentCompletionContext != null) {
            if (CompletionWindowManager.PreProcessKeyEvent(evnt.Key, (char)evnt.Key, evnt.State, out ka))
            {
                CompletionWindowManager.PostProcessKeyEvent(ka);

                if (evnt.Key == Gdk.Key.Up || evnt.Key == Gdk.Key.Down || evnt.Key == Gdk.Key.Return ||
                    evnt.Key == Gdk.Key.Left || evnt.Key == Gdk.Key.Right)                          //)
                {
                    return(true);
                }
            }
            //}

            if (ParameterInformationWindowManager.IsWindowVisible)
            {
                if (ParameterInformationWindowManager.ProcessKeyEvent(this, evnt.Key, evnt.State))
                {
                    return(false);
                }
            }

            if (CompletionWindowManager.IsTemplateModes)
            {
                return(true);
            }


            bool result = base.OnKeyPressEvent(evnt);

            if (!MainClass.Settings.SourceEditorSettings.AggressivelyTriggerCL)
            {
                return(result);
            }
            if (banCompletion)
            {
                return(result);
            }

            completionType = CompletionTyp.allType;

            if ((evnt.State != Gdk.ModifierType.None) && charKey != '(' && charKey != ')')
            {
                return(result);
            }

            int         offset      = this.Document.LocationToOffset(this.Caret.Location);
            int         lineNumber  = this.Document.OffsetToLineNumber(offset);
            LineSegment lineSegment = this.Document.GetLine(lineNumber);

            string lineText = this.Document.GetTextBetween(lineSegment.Offset, offset);


            int countBrackets1 = lineText.Count(c => c == '(');
            int countBrackets2 = lineText.Count(c => c == ')');

            if (countBrackets1 <= countBrackets2)
            {
                ParameterInformationWindowManager.HideWindow(this);
            }

            if (((charKey == '\0') || (char.IsPunctuation(charKey)) &&
                 (char.IsSymbol(charKey))
                 // ||( char.IsWhiteSpace(charKey) )
                 ) &&
                (charKey != '#') &&
                (charKey != '_') &&
                (charKey != '.'))
            {
                return(result);
            }


            int endOffset = offset;

            offset = FindPrevWordOffset(offset);

            if (offset > 0 || endOffset > 0 || offset < endOffset)
            {
                int    offset2      = FindPrevWordOffsetStartSpace(offset);
                string previousWord = this.Document.GetTextBetween(offset2, offset).Trim();

                int    offset3         = FindPrevWordOffsetWithoutDot(offset);
                string previousWordDot = this.Document.GetTextBetween(offset3, offset).Trim();

                //Console.WriteLine("previousWord-> {0}",previousWord);
                //Console.WriteLine("previousWord-> {0}",previousWordDot);

                /*int lineNumber= this.Document.OffsetToLineNumber(endOffset);
                 * LineSegment lineSegment = this.Document.GetLine(lineNumber);
                 *
                 * string lineText =this.Document.GetTextBetween(lineSegment.Offset,endOffset);
                 */

                if (!string.IsNullOrEmpty(lineText))                  // som za komentarom
                {
                    if (lineText.Contains("//"))
                    {
                        return(result);
                    }
                }

                string docText = this.Document.GetTextBetween(0, endOffset);

                int countCommentStart = CountExpresion("/*", docText);             //
                int countCommentEnd   = CountExpresion("*/", docText);             //
                //int countComment = CountExpresion(""",docText);

                int countSem = docText.Count(c => c == '"');

                if (charKey == '(')
                {
                    int    offsetB       = FindPrevWordOffsetWithoutBrackets(offset);
                    string previousWordB = this.Document.GetTextBetween(offsetB, offset - 1).Trim();
                    if ((charKey == '(') || (previousWordB.Trim().Contains('(')))
                    {
                        ParameterDataProvider pdp = new ParameterDataProvider(this, previousWordB.Trim());

                        /*IParameterDataProvider cp = null;
                         * CodeCompletionContext ctx = CreateCodeCompletionContext (cpos);
                         * cp = ParameterCompletionCommand (ctx);
                         */
                        ParameterInformationWindowManager.ShowWindow(this, pdp);

                        return(result);
                    }
                    return(result);
                }
                if (charKey == ')')
                {
                    ParameterInformationWindowManager.HideWindow(this);
                    return(result);
                }

                /*if(lineText.Trim().StartsWith("include")){
                 *      completionType = CompletionTyp.includeType;
                 *
                 *      Gtk.Action act = MainClass.MainWindow.EditorNotebook.EditorAction.GetAction("sourceeditor_insertautocomplete");
                 *      if (act!=null){
                 *              act.Activate();
                 *      }
                 *      return result;
                 * }*/

                // komentar alebo string "" /**/
                if ((countCommentStart > countCommentEnd) || (!ItEven(countSem)))
                {
                    return(result);
                }

                if ((charKey == '.') || (previousWordDot.Trim().Contains('.')))
                {
                    completionType = CompletionTyp.dotType;
                }

                if (previousWord.Trim() == "new")
                {
                    completionType = CompletionTyp.newType;
                }



                string word = this.Document.GetTextAt(offset, endOffset - offset).Trim();
                if ((!IsKeyvord(previousWord.Trim()) && IsIdentifier(word)) ||
                    (previousWord.Trim() == "new") ||
                    (charKey == '.'))
                {
                    Gtk.Action act = MainClass.MainWindow.EditorNotebook.EditorAction.GetAction("sourceeditor_insertautocomplete");
                    if (act != null)
                    {
                        act.Activate();
                    }
                }
            }

            return(result);
        }