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 YamlSpecsReadOutputFieldFormulaeWithFieldsExtractedFromLineClassesCaseInsensitively() { var reader = new YamlSpecReader(); var parser = new FilterParser(); parser.AddInitialValueFactory("Column", s => new ColumnInitialValue(s[0])); reader.Visitors = new List <IYamlNodeVisitor> { new ImportSpecVisitor(), new LineClassVisitor(), new IndividualLineClassVisitor(), new ExtractVisitor(), new ExtractableValuesVisitor(parser), new OutputSpecVisitor(null, null), }; using (var sr = new StringReader("Import: \n Line Classes:\n - Foo:\n Extract: { Fred: Column A, Bob: Column B }\nOutput: \n - A: FreD + bob")) { var result = reader.Parse(sr); var parameters = new Dictionary <string, string>(StringComparer.InvariantCultureIgnoreCase) { ["Fred"] = "Foo", ["Bob"] = "Bar" }; Assert.Collection(result.Output.Fields, x => Assert.Equal("FooBar", (string)x.OutputFormula(parameters))); } }
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)); } }