예제 #1
0
            public ArgumentRule Required()
            {
                ArgumentRule result = this;

                result.Repeat = ArgumentRepeat.One;
                return(result);
            }
예제 #2
0
            public ArgumentRule Optional()
            {
                ArgumentRule result = this;

                result.Repeat = ArgumentRepeat.ZeroOrOne;
                return(result);
            }
예제 #3
0
            public ArgumentRule Many()
            {
                ArgumentRule result = this;

                result.Repeat = ArgumentRepeat.ZeroOrMore;
                return(result);
            }
예제 #4
0
            public ArgumentRule AtLeastOnce()
            {
                ArgumentRule result = this;

                result.Repeat = ArgumentRepeat.OneOrMore;
                return(result);
            }
예제 #5
0
        public void AddOptionLazy()
        {
            var input     = "hah -searchTarget:";
            var generator = new CandidatesGenerator(Syntax);
            var result    = generator.GenerateCandidates(input);

            Assert.AreEqual(2, result.Count());

            var optionArgTextBox = new ArgumentRule("TextBox", MockMethods.TextBox);
            var targetArgs       = Syntax[0].OptionalArgs.ElementAt(1).OptionalArgs;

            targetArgs.Add(optionArgTextBox);

            result = generator.GenerateCandidates(input);
            Assert.AreEqual(3, result.Count());

            CollectionAssert.AreEqual(targetArgs.Select(x => x.Name).ToArray(), result.Select(x => x.Name).ToArray());
        }
예제 #6
0
        public void Setup()
        {
            Syntax      = new CommandSyntax();
            Parser      = new CommandParser(Syntax);
            Validator   = new CommandValidator(Parser, new MockLocalizer());
            MockMethods = new MockCommand();
            Generator   = new CandidatesGenerator(Syntax);

            Switch      = new ArgumentRule("switch", MockMethods.Switch);
            Click       = new ArgumentRule("click", MockMethods.Click);
            RightClick  = new ArgumentRule("rightclick", MockMethods.RightClick);
            DoubleClick = new ArgumentRule("doubleclick", MockMethods.DoubleClick);

            ArgApplication   = new ArgumentRule("application", MockMethods.Application, ArgsFactory(Switch));
            ArgWindow        = new ArgumentRule("window", MockMethods.Window, ArgsFactory(Click, RightClick, DoubleClick));
            ArgTaskbar       = new ArgumentRule("taskbar", MockMethods.Taskbar, ArgsFactory(Click, RightClick));
            ArgDividedscreen = new ArgumentRule("windowdividedscreen", MockMethods.WindowDividedScreen, ArgsFactory(Click, DoubleClick));

            ArgText           = new ArgumentRule("Text", MockMethods.Text);
            ArgCommand        = new ArgumentRule("Command", MockMethods.Command);
            ArgInItemsControl = new ArgumentRule("TextInItemsControl", MockMethods.TextInItemsControl);

            OptButton   = new ArgumentRule("Button", MockMethods.Button);
            OptCheckBox = new ArgumentRule("CheckBox", MockMethods.CheckBox);

            OptGenerator = new ArgumentRule("-hintGenerator", MockMethods.HintGenerator);
            OptTarget    = new ArgumentRule("-searchTarget", MockMethods.SearchTarget, null, ArgsFactory(OptButton, OptCheckBox));

            Hah            = new CommandRule("hah", MockMethods.HitaHint, ArgsFactory(ArgWindow, ArgApplication, ArgTaskbar, ArgDividedscreen), ArgsFactory(OptGenerator, OptTarget));
            SearchByText   = new CommandRule("/", MockMethods.SearchByText, ArgsFactory(ArgText, ArgCommand, ArgInItemsControl), ArgsFactory(OptTarget));
            Hah2           = new CommandRule("hah2", MockMethods.HitaHint2, ArgsFactory(ArgWindow, ArgDividedscreen));
            MouseEmulation = new CommandRule("me", MockMethods.MouseEmulation);

            Syntax.Add(Hah);
            Syntax.Add(SearchByText);
            Syntax.Add(Hah2);
            Syntax.Add(MouseEmulation);
        }