Esempio n. 1
0
        public void Not_Throw_If_An_Unexpected_Argument_Is_Found()
        {
            // arrange
            var builder = DefaultBuilder.CreateDefaultBuilder();
            var strat   = new ParseStrategy(builder.Context);
            var mock    = new Mock <IPotentialConsumerStrategy>();

            mock.SetupAllProperties();
            mock.Setup(s => s.IdentifyPotentialConsumer(It.IsAny <PotentialConsumerRequest>())).Returns(
                new PotentialConsumerResult(builder.Context.PathToRoot("util"), new ConsumptionResult[0],
                                            new IterationInfo("-h".Split(' '))));
            strat.PotentialConsumerStrategy = mock.Object;
            IParseResult res        = null;
            Action       mightThrow = () => res = strat.Parse("-h".Split(' '));

            // act
            // assert
            mightThrow.Should().NotThrow();
            var isParsed = false;

            res.WhenError(exceptions =>
            {
                exceptions.Single().Should().BeOfType <UnexpectedArgException>();
                isParsed = true;
            });
            isParsed.Should().BeTrue();
        }
    void Parse <T>(ParseStrategy <T> parseStrategy, T data)
    {
        //do some prep

        parseStrategy.Parse(data);
        //do something with the result;
    }
        private void SwagDataSetHeader_Export(object sender, RoutedEventArgs e)
        {
            FrameworkElement fe            = (FrameworkElement)sender;
            SwagDataSet      swagDataSet   = (SwagDataSet)fe.DataContext;
            ParseStrategy    parseStrategy = (ParseStrategy)fe.Tag;

            switch (parseStrategy)
            {
            case ParseStrategy.Sqlite:
                SaveFileDialog sfdSqlite = new SaveFileDialog();
                sfdSqlite.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                sfdSqlite.FileName         = Path.ChangeExtension(swagDataSet.Display, null);
                sfdSqlite.Filter           = "SQLite files (*.db;*.sqlite)|*.db;*.sqlite";
                System.Windows.Application.Current.Dispatcher.Invoke(new Action(() =>
                {
                    if (sfdSqlite.ShowDialog() ?? false)
                    {
                        DataSetSqliteFileConverter dsConverter = new DataSetSqliteFileConverter();
                        dsConverter.FromDataSet(null, swagDataSet.GetDataSet(), sfdSqlite.FileName);
                    }
                }));
                break;

            case ParseStrategy.Csv:
                System.Windows.Forms.FolderBrowserDialog fbdCsv = new System.Windows.Forms.FolderBrowserDialog();
                fbdCsv.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                System.Windows.Application.Current.Dispatcher.Invoke(new Action(() =>
                {
                    if (fbdCsv.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                    {
                        DataSetCsvFileConverter dsConverter = new DataSetCsvFileConverter();

                        SwagItemPreOrderIterator <SwagData> itrSwagData = swagDataSet.CreateIterator();
                        swagDataSet.Display = swagDataSet.Display ?? "DataSet";
                        for (SwagData sd = itrSwagData.First(); !itrSwagData.IsDone; sd = itrSwagData.Next())
                        {
                            if (sd is SwagDataSet sds)
                            {
                                String destFolder = "";

                                //If exporting root and root has blank display, use DataSet
                                if (swagDataSet == SwagDataSet && string.IsNullOrEmpty(swagDataSet.Display))
                                {
                                    destFolder = Path.Combine(fbdCsv.SelectedPath, "DataSet", sds.Path);
                                }
                                else
                                {
                                    destFolder = Path.Combine(fbdCsv.SelectedPath, sds.Path);
                                }

                                //limit to depth of 1 when exporting DataSet
                                dsConverter.FromDataSet(null, sds.GetDataSet(1), destFolder);
                            }
                        }
                    }
                }));
                break;
            }
        }
Esempio n. 4
0
        public void ParseStrategy_ReplaceCapitalLetters()
        {
            IParseStrategy parseStrategy = ParseStrategy.ReplaceCapitalLetters();

            for (int i = 0; i < testStrings.Length; i++)
            {
                Assert.IsTrue(parseStrategy.Parse(testStrings[i]) == lowercaseResultStrings[i]);
            }
        }
Esempio n. 5
0
        public void ParseStrategy_ReplaceNonASCII()
        {
            IParseStrategy parseStrategy = ParseStrategy.ReplaceNonASCII();

            for (int i = 0; i < testStrings.Length; i++)
            {
                Assert.IsTrue(parseStrategy.Parse(testStrings[i]) == asciiResultStrings[i]);
            }
        }
Esempio n. 6
0
        public void ParseStrategy_LeaveUnchanged()
        {
            IParseStrategy parseStrategy = ParseStrategy.LeaveUnchanged();

            for (int i = 0; i < testStrings.Length; i++)
            {
                Assert.IsTrue(parseStrategy.Parse(testStrings[i]) == testStrings[i]);
            }
        }
Esempio n. 7
0
 /// <inheritdoc />
 public ICommandParseResult <object> ParseCommands(string input, Type[] supportedTypes)
 {
     try
     {
         var request = new MultipleCommandParseRequest(input, supportedTypes);
         return(ParseStrategy.ParseCommands(request));
     }
     catch (Exception e)
     {
         throw new CommandParserException($"Ошибка при разборе команды '{input}''", e);
     }
 }
Esempio n. 8
0
 /// <inheritdoc />
 public ICommandParseResult <TModel> ParseCommand <TModel>(string input) where TModel : class, new()
 {
     try
     {
         var request = new SingleCommandParseRequest <TModel>(input);
         return(ParseStrategy.ParseCommand(request));
     }
     catch (Exception e)
     {
         throw new CommandParserException($"Ошибка при разборе команды '{input}' типа '{typeof(TModel)}'", e);
     }
 }
Esempio n. 9
0
        public void Set_Sub_Component_Contexts_When_The_Context_Changes()
        {
            // arrange
            var builder = DefaultBuilder.CreateDefaultBuilder();
            var strat   = new ParseStrategy(builder.Context);
            var newGuy  = new Context();

            // act
            strat.Context = newGuy;

            // assert
            strat.Context.Should().BeSameAs(newGuy);
            strat.ArgsMutator.Context.Should().BeSameAs(newGuy);
            strat.ChainIdentificationStrategy.Context.Should().BeSameAs(newGuy);
            strat.ConsumerSelectionStrategy.Context.Should().BeSameAs(newGuy);
            strat.ConsumptionRequestFactory.Context.Should().BeSameAs(newGuy);
            strat.IterationInfoFactory.Context.Should().BeSameAs(newGuy);
            strat.ParseResultFactory.Context.Should().BeSameAs(newGuy);
            strat.PotentialConsumerStrategy.Context.Should().BeSameAs(newGuy);
        }
Esempio n. 10
0
        public void Not_Throw_If_No_Factory_Function_Set()
        {
            // arrange
            var builder = new ContextBuilder()
                          .AddParser("root")
                          .Finish;
            var          strat      = new ParseStrategy(builder.Context);
            IParseResult res        = null;
            Action       mightThrow = () => res = strat.Parse("-h".Split(' '));

            // act
            // assert
            mightThrow.Should().NotThrow();
            var isParsed = false;

            res.WhenError(exceptions =>
            {
                isParsed = true;
                exceptions.Single().Should().BeOfType <NoFactoryFunctionException>();
            });
            isParsed.Should().BeTrue();
        }
Esempio n. 11
0
 /// <summary>
 ///     Sets the parse strategy.
 /// </summary>
 /// <param name="parseStrategy">The parse strategy.</param>
 public void SetParseStrategy(ParseStrategy parseStrategy)
 {
     this._parseStrategy = parseStrategy;
 }
Esempio n. 12
0
 public DependentSatisfier(ParseStrategy strategy)
 {
     this.strategy = strategy;
 }
Esempio n. 13
0
        public void ParseFile_GivenFilePath_UTF8Encoding_AndReplaceCapitalParseMode()
        {
            string       filePath = "test.txt";
            StreamWriter sw       = new StreamWriter(File.Create(filePath));

            foreach (string s in testStrings)
            {
                sw.WriteLine(s);
            }
            sw.Close();

            FileParserFactory fileParserBuilder = new FileParserFactory(filePath, Encoding.UTF8, ParseStrategy.ReplaceCapitalLetters());
            IFileParser       fileParser        = fileParserBuilder.Create();
            StreamReader      sr = fileParser.ParseFile();

            int i = 0;

            while (!sr.EndOfStream)
            {
                Assert.IsTrue(sr.ReadLine() == lowercaseResultStrings[i]);
                i++;
            }

            sr.Close();
        }
Esempio n. 14
0
 public Parser(ParseStrategy strategy)
 {
     this.ps = strategy;
 }