mirror of https://github.com/sean-m/McRule.git
Merge remote-tracking branch 'origin/dev'
commit
2b2a64c069
|
@ -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()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue