public FilterParserTests()
 {
     filterParser.AddFilterFactory("Trim", s => new TrimFilter());
     filterParser.AddFilterFactory("TrimStart", s => new TrimStartFilter());
     filterParser.AddFilterFactory("TrimEnd", s => new TrimEndFilter());
     filterParser.AddFilterFactory("Substring", s => new SubstringFilter(int.Parse(s[0]), int.Parse(s[1])));
     filterParser.AddFilterFactory("Append", s => new MockStringFilter(s[0]));
     filterParser.AddInitialValueFactory("Column", s => new ColumnInitialValue(s[0]));
     filterParser.AddInitialValueFactory("Sheet", s => new SheetInitialValue());
 }
        public void YamlSpecsReadFieldExtractionsWithFilters()
        {
            var reader = new YamlSpecReader();
            var parser = new FilterParser();

            parser.AddFilterFactory("Trim", (s) => new TrimFilter());
            parser.AddInitialValueFactory("Column", s => new ColumnInitialValue(s[0]));
            reader.Visitors = new List <IYamlNodeVisitor>
            {
                new ImportSpecVisitor(),
                new LineClassVisitor(),
                new IndividualLineClassVisitor(),
                new ExtractVisitor(),
                new ExtractableValuesVisitor(parser)
            };
            using (var sr = new StringReader("Import: \n  Line Classes:\n    - Foo:\n        Extract: { Fred: Column B | Trim }"))
            {
                var result = reader.Parse(sr);
                var values = result.Import.LineClasses[0].ValuesToExtract;
                Assert.Collection(values, x => Assert.Equal("Fred", x.Name));
                Assert.Equal(1, ((ColumnInitialValue)values[0].InitialValue).Column);
                Assert.Collection(values[0].Filters, x => Assert.IsType <TrimFilter>(x));
            }
        }