Merge remote-tracking branch 'origin/dev'

sean-m-patch-1
Sean McArde 2023-09-05 15:01:04 -07:00
commit 2b2a64c069
3 changed files with 30 additions and 6 deletions

View File

@ -251,12 +251,24 @@ namespace McRule.Tests {
}
[Test]
public void FilterListOfObjectsByMemberCollectionContents() {
public void FilterListOfObjectsByMemberCollectionContents()
{
var generator = new PolicyToExpressionGenerator();
var generatedFilter = muggles.GetPredicateExpression<People>(generator);
var filteredFolks = peoples.Where(generatedFilter.Compile());
var efGenerator = new PolicyToEFExpressionGenerator();
var efGeneratedFilter = muggles.GetPredicateExpression<People>(efGenerator);
var efFilteredFolks = peoples.Where(efGeneratedFilter.Compile());
var filter = muggles.GetPredicateExpression<People>()?.Compile();
var folks = peoples.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]
@ -309,5 +321,19 @@ 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()
{
var failedGenerator = new FailedExpressionGeneratorBase();
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;
}
}
}

View File

@ -8,7 +8,7 @@
<UserSecretsId>63a98c68-03bd-4069-b6b9-e0978081c430</UserSecretsId>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<Title>McRule - Rule based expression generator</Title>
<Version>0.2.0</Version>
<Version>0.2.1</Version>
<Company>Sean McArdle</Company>
<Description>Library for generating expression trees from simple policy rules.</Description>
<Copyright>2023 Sean McArdle</Copyright>