public void Setup() { var subfinders = new List <IValueFinder>() { new TotalValueFinder() }; _sut = new ValuesExtractor(subfinders, new List <IComplexValueFinder>()); }
public static (Expression A, Expression B) Extract(Expression expression) { var extractor = new ValuesExtractor(); extractor.Visit(expression); if (extractor.A == null || extractor.B == null) { throw new NotSupportedException("Could not extract values from expression."); } return(extractor.A, extractor.B); }
public void ExctractValues_TotalValueSpecified654654_123andMoreFindersWithProperValues() { var finders = new List <IValueFinder>() { new TotalValueFinder(), new VendorValueFinder() }; var extractor = new ValuesExtractor(finders, new List <IComplexValueFinder>()); _sut = new SerkoEngine(extractor, calc); var values = _sut.ParseAndCalculateGst("the total value is <total>110</total> and vendor <vendor>is vendor</vendor>"); Assert.That(values, Is.Not.Null); Assert.That(values.Keys, Is.Not.Empty); Assert.That(values.Values, Is.Not.Empty); Assert.That(values.Keys.Count, Is.EqualTo(4)); Assert.That(values["total"], Is.EqualTo("110")); Assert.That(values["gst"], Is.EqualTo("10,00")); Assert.That(values["totalNoGst"], Is.EqualTo("100,00")); Assert.That(values["vendor"], Is.EqualTo("is vendor")); }
public void ExctractValues_ExpenseSubTags() { var finders = new List <IValueFinder>() { new TotalValueFinder(), new VendorValueFinder(), new ExpenseValueFinder(new List <IValueFinder>() { new VendorValueFinder() }) }; var extractor = new ValuesExtractor(finders, new List <IComplexValueFinder>()); _sut = new SerkoEngine(extractor, calc); var values = _sut.ParseAndCalculateGst("<expense><vendor>asdf</vendor></expense><total>1234</total>"); Assert.That(values, Is.Not.Null); Assert.That(values.Keys, Is.Not.Empty); Assert.That(values.Values, Is.Not.Empty); Assert.That(values.Keys.Count, Is.EqualTo(4)); Assert.That(values["total"], Is.EqualTo("1234")); Assert.That(values["gst"], Is.EqualTo("112,18")); Assert.That(values["totalNoGst"], Is.EqualTo("1121,82")); Assert.That(values["vendor"], Is.EqualTo("asdf")); }
public static Expression <Func <bool> > Equivalent <TValue>(Expression <Func <bool> > values, params string[] excludedProperties) { var extracted = ValuesExtractor.Extract(values); return(Equivalent(typeof(TValue), extracted.A, extracted.B, excludedProperties)); }