Test coverage work.

dev
Sean McArde 2023-09-02 14:39:21 -07:00
parent 4eb2e2e6ab
commit 780bf97abe
2 changed files with 30 additions and 4 deletions

View File

@ -121,6 +121,9 @@ namespace McRule.Tests {
RuleOperator = PredicateExpressionPolicyExtensions.RuleOperator.Or
};
FailedExpressionGeneratorBase failedGenerator = new FailedExpressionGeneratorBase();
[SetUp]
public void Setup() { }
@ -195,12 +198,24 @@ namespace McRule.Tests {
}
[Test]
public void FilterListOfObjectsByMemberCollectionContents() {
public void FilterListOfObjectsByMemberCollectionContents()
{
var generator = new PolicyToExpressionGenerator();
var generatedFilter = muggles.GetPredicateExpression<People>(generator);
var filteredFolks = things.Where(generatedFilter.Compile());
var efGenerator = new PolicyToEFExpressionGenerator();
var efGeneratedFilter = muggles.GetPredicateExpression<People>(efGenerator);
var efFilteredFolks = things.Where(efGeneratedFilter.Compile());
var filter = muggles.GetPredicateExpression<People>()?.Compile();
var folks = things.Where(filter);
Assert.NotNull(folks);
Assert.IsTrue(folks.All(x => x.tags.Contains("muggle")));
Assert.IsTrue(folks.All(x => filteredFolks.Contains(x)));
Assert.IsTrue(folks.All(x => efFilteredFolks.Contains(x)));
}
[Test]
@ -245,5 +260,18 @@ namespace McRule.Tests {
Assert.IsTrue(filter.ToString().Contains("CurrentCulture"));
Assert.IsFalse(efFilter.ToString().Contains("CurrentCulture"), "EF safe string comparision contains a CurrentCulture directive, wrong generator used for AddStringPropertyExpression.");
}
[Test]
public void BaseThrowsOnPoorlyImplementedGenerator()
{
Assert.Throws<NotImplementedException>(() => { _ = eans.GetPredicateExpression<People>(failedGenerator); });
}
}
internal class FailedExpressionGeneratorBase : ExpressionGeneratorBase
{
public FailedExpressionGeneratorBase()
{
}
}
}

View File

@ -35,8 +35,6 @@ namespace McRule {
Expression? cachedExpression = null;
internal (string, string, string) Rule => (TargetType, Property, Value);
public ExpressionRule() { }
public ExpressionRule(string TargetType, string Property, string Value) {
@ -78,7 +76,7 @@ namespace McRule {
}
public string GetFilterString<T>() {
return this.GetPredicateExpression<T>()?.ToString() ?? String.Empty;
return GetPredicateExpression<T>()?.ToString() ?? String.Empty;
}
}
}