Skip to content

Commit 9e7918d

Browse files
authored
Abbasc52/linux behaviour test (#512)
* Added testcase as per bug * fixed test case * Added tests from bugs * fixed version for FastExpressionCompiler * updated changelog and added readme file in nuget
1 parent b9e1ece commit 9e7918d

6 files changed

Lines changed: 405 additions & 5 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [5.0.2]
6+
- Fixed Scoped Params returning incorrect results in some corner case scenarios
7+
58
## [5.0.1]
69
- Added option to disable automatic type registry for input parameters in reSettings
710
- Added option to make expression case sensitive in reSettings

src/RulesEngine/RulesEngine.csproj

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@
22

33
<PropertyGroup>
44
<TargetFrameworks>net6.0;netstandard2.0</TargetFrameworks>
5-
<Version>5.0.1</Version>
5+
<Version>5.0.2</Version>
66
<Copyright>Copyright (c) Microsoft Corporation.</Copyright>
77
<PackageLicenseFile>LICENSE</PackageLicenseFile>
88
<PackageProjectUrl>https://github.com/microsoft/RulesEngine</PackageProjectUrl>
99
<Authors>Abbas Cyclewala</Authors>
1010
<Description>Rules Engine is a package for abstracting business logic/rules/policies out of the system. This works in a very simple way by giving you an ability to put your rules in a store outside the core logic of the system thus ensuring that any change in rules doesn't affect the core system.</Description>
11-
<PackageReleaseNotes>https://github.com/microsoft/RulesEngine/blob/main/CHANGELOG.md</PackageReleaseNotes>
12-
<PackageTags>BRE, Rules Engine, Abstraction</PackageTags>
11+
<PackageReleaseNotes>https://github.com/microsoft/RulesEngine/blob/main/CHANGELOG.md</PackageReleaseNotes>
12+
<PackageTags>BRE, Rules Engine, Abstraction</PackageTags>
13+
<PackageReadmeFile>README.md</PackageReadmeFile>
1314
</PropertyGroup>
1415

1516
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
@@ -27,11 +28,12 @@
2728
</PropertyGroup>
2829

2930
<ItemGroup>
30-
<None Include="..\..\LICENSE" Pack="true" PackagePath="" />
31+
<None Include="..\..\LICENSE" Pack="true" PackagePath="\" />
32+
<None Include="..\..\README.md" Pack="true" PackagePath="\" />
3133
</ItemGroup>
3234

3335
<ItemGroup>
34-
<PackageReference Include="FastExpressionCompiler" Version="3.3.4" />
36+
<PackageReference Include="FastExpressionCompiler" Version="[3.3.3]" />
3537
<PackageReference Include="FluentValidation" Version="11.5.2" />
3638
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
3739
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />

test/RulesEngine.UnitTest/BusinessRuleEngineTest.cs

Lines changed: 278 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -532,6 +532,280 @@ public async Task ExecuteRuleWithJsonElement(string ruleFileName)
532532
Assert.All(result, c => Assert.True(c.IsSuccess));
533533
}
534534

535+
[Theory]
536+
[InlineData("rules11.json")]
537+
public async Task RulesEngineWithGlobalParam_RunsSuccessfully(string ruleFileName)
538+
{
539+
540+
var re = GetRulesEngine(ruleFileName, new ReSettings() { });
541+
542+
var input1 = new[] {
543+
new {
544+
Value= 0.13259286,
545+
ChangeDateTime= "2023-07-28T19:57:07.432339Z"
546+
},
547+
new {
548+
Value= 0.09435427,
549+
ChangeDateTime= "2023-07-28T19:58:04.536459Z"
550+
},
551+
new {
552+
Value= 0.14896593,
553+
ChangeDateTime= "2023-07-28T19:59:08.682072Z"
554+
},
555+
new {
556+
Value= 0.12852388,
557+
ChangeDateTime= "2023-07-28T20:00:06.78036Z"
558+
},
559+
new {
560+
Value= 0.17011189,
561+
ChangeDateTime= "2023-07-28T20:00:54.873615Z"
562+
},
563+
new {
564+
Value= 0.0532116,
565+
ChangeDateTime= "2023-07-28T20:02:52.04049Z"
566+
},
567+
new {
568+
Value= 0.04064374,
569+
ChangeDateTime= "2023-07-28T20:03:54.168499Z"
570+
},
571+
new {
572+
Value= 0.03748944,
573+
ChangeDateTime= "2023-07-28T20:03:54.194786Z"
574+
},
575+
new {
576+
Value= 0.07752395,
577+
ChangeDateTime= "2023-07-28T20:06:32.451464Z"
578+
},
579+
new {
580+
Value= 0.07294922,
581+
ChangeDateTime= "2023-07-28T20:07:38.691755Z"
582+
},
583+
new {
584+
Value= 0.09892442,
585+
ChangeDateTime= "2023-07-28T20:08:37.98802Z"
586+
},
587+
new {
588+
Value= 0.06370641,
589+
ChangeDateTime= "2023-07-28T20:05:41.358461Z"
590+
},
591+
new {
592+
Value= 0.07550429,
593+
ChangeDateTime= "2023-07-28T20:09:48.129748Z"
594+
},
595+
new {
596+
Value= 0.0653021,
597+
ChangeDateTime= "2023-07-28T20:10:48.274482Z"
598+
},
599+
new {
600+
Value= 0.09304246,
601+
ChangeDateTime= "2023-07-28T20:11:49.436983Z"
602+
},
603+
new {
604+
Value= 0.0797422,
605+
ChangeDateTime= "2023-07-28T20:12:53.609118Z"
606+
},
607+
new {
608+
Value= 0.08211832,
609+
ChangeDateTime= "2023-07-28T20:13:52.699728Z"
610+
},
611+
new {
612+
Value= 0.06955433,
613+
ChangeDateTime= "2023-07-28T20:15:03.843289Z"
614+
},
615+
new {
616+
Value= 0.07626661,
617+
ChangeDateTime= "2023-07-28T20:15:03.870057Z"
618+
},
619+
new {
620+
Value= 0.05033984,
621+
ChangeDateTime= "2023-07-28T20:16:17.032262Z"
622+
},
623+
new {
624+
Value= 0.05202596,
625+
ChangeDateTime= "2023-07-28T20:17:20.172669Z"
626+
},
627+
new {
628+
Value= 0.06861198,
629+
ChangeDateTime= "2023-07-28T20:18:32.303309Z"
630+
},
631+
new {
632+
Value= 0.04935532,
633+
ChangeDateTime= "2023-07-28T20:19:33.451426Z"
634+
},
635+
new {
636+
Value= 0.04073699,
637+
ChangeDateTime= "2023-07-28T20:20:37.737395Z"
638+
},
639+
new {
640+
Value= 0.02164916,
641+
ChangeDateTime= "2023-07-28T20:21:38.883635Z"
642+
},
643+
new {
644+
Value= 0.01334031,
645+
ChangeDateTime= "2023-07-28T20:22:40.053193Z"
646+
},
647+
new {
648+
Value= 0.0336915,
649+
ChangeDateTime= "2023-07-28T20:23:44.240297Z"
650+
},
651+
new {
652+
Value= 0.04870055,
653+
ChangeDateTime= "2023-07-28T20:26:33.584756Z"
654+
},
655+
new {
656+
Value= 0.07125243,
657+
ChangeDateTime= "2023-07-28T20:28:11.7889Z"
658+
},
659+
new {
660+
Value= 0.04904275,
661+
ChangeDateTime= "2023-07-28T20:24:40.346216Z"
662+
},
663+
new {
664+
Value= 0.03625701,
665+
ChangeDateTime= "2023-07-28T20:27:20.707478Z"
666+
},
667+
new {
668+
Value= 0.05703328,
669+
ChangeDateTime= "2023-07-28T20:28:57.876436Z"
670+
},
671+
new {
672+
Value= 0.04364996,
673+
ChangeDateTime= "2023-07-28T20:25:43.496357Z"
674+
},
675+
new {
676+
Value= 0.07558272,
677+
ChangeDateTime= "2023-07-28T20:30:11.023295Z"
678+
},
679+
new {
680+
Value= 0.03073958,
681+
ChangeDateTime= "2023-07-28T20:33:00.347672Z"
682+
},
683+
new {
684+
Value= 0.0341309,
685+
ChangeDateTime= "2023-07-28T20:33:59.790621Z"
686+
},
687+
new {
688+
Value= 0.05270871,
689+
ChangeDateTime= "2023-07-28T20:31:15.166193Z"
690+
},
691+
new {
692+
Value= 0.09138862,
693+
ChangeDateTime= "2023-07-28T20:32:08.259273Z"
694+
},
695+
new {
696+
Value= 0.15922104,
697+
ChangeDateTime= "2023-07-28T20:35:12.963809Z"
698+
},
699+
new {
700+
Value= 0.11383641,
701+
ChangeDateTime= "2023-07-28T20:36:26.120815Z"
702+
},
703+
new {
704+
Value= 0.12404025,
705+
ChangeDateTime= "2023-07-28T20:37:37.27212Z"
706+
},
707+
new {
708+
Value= 0.06010197,
709+
ChangeDateTime= "2023-07-28T20:38:47.409412Z"
710+
},
711+
new {
712+
Value= 0.08396237,
713+
ChangeDateTime= "2023-07-28T20:39:37.504217Z"
714+
},
715+
new {
716+
Value= 0.06731881,
717+
ChangeDateTime= "2023-07-28T20:40:27.588895Z"
718+
},
719+
new {
720+
Value= 0.05617253,
721+
ChangeDateTime= "2023-07-28T20:41:33.760373Z"
722+
},
723+
new {
724+
Value= 0.0585155,
725+
ChangeDateTime= "2023-07-28T20:42:26.847144Z"
726+
},
727+
new {
728+
Value= 0.06793098,
729+
ChangeDateTime= "2023-07-28T20:43:36.988904Z"
730+
},
731+
new {
732+
Value= 0.06879344,
733+
ChangeDateTime= "2023-07-28T20:44:46.133926Z"
734+
},
735+
new {
736+
Value= 0.06931814,
737+
ChangeDateTime= "2023-07-28T20:45:50.275932Z"
738+
},
739+
new {
740+
Value= 0.04802603,
741+
ChangeDateTime= "2023-07-28T20:46:36.367289Z"
742+
},
743+
new {
744+
Value= 0.04036225,
745+
ChangeDateTime= "2023-07-28T20:47:27.484188Z"
746+
},
747+
new {
748+
Value= 0.04968483,
749+
ChangeDateTime= "2023-07-28T20:48:13.582228Z"
750+
},
751+
new {
752+
Value= 0.0773483,
753+
ChangeDateTime= "2023-07-28T19:49:16.354277Z"
754+
},
755+
new {
756+
Value= 0.08710921,
757+
ChangeDateTime= "2023-07-28T19:48:25.253743Z"
758+
},
759+
new {
760+
Value= 0.07665287,
761+
ChangeDateTime= "2023-07-28T19:50:25.496642Z"
762+
},
763+
new {
764+
Value= 0.06121748,
765+
ChangeDateTime= "2023-07-28T19:51:20.644955Z"
766+
},
767+
new {
768+
Value= 0.04179136,
769+
ChangeDateTime= "2023-07-28T19:52:26.793369Z"
770+
},
771+
new {
772+
Value= 0.13522345,
773+
ChangeDateTime= "2023-07-28T19:54:19.051669Z"
774+
},
775+
new {
776+
Value= 0.08536856,
777+
ChangeDateTime= "2023-07-28T19:56:04.287806Z"
778+
},
779+
new {
780+
Value= 0.05041369,
781+
ChangeDateTime= "2023-07-28T19:53:18.901696Z"
782+
},
783+
new {
784+
Value= 0.1627249,
785+
ChangeDateTime= "2023-07-28T19:55:13.160235Z"
786+
},
787+
new {
788+
Value= 0.05,
789+
ChangeDateTime= "2023-07-28T19:54:03.2197Z"
790+
},
791+
new {
792+
Value= 0.05,
793+
ChangeDateTime= "2023-07-28T19:56:00.802023Z"
794+
},
795+
new {
796+
Value= 0.02792705297470093,
797+
ChangeDateTime= "2023-07-28T20:49:03.6825337Z"
798+
}
799+
}.ToList();
800+
801+
var result = await re.ExecuteAllRulesAsync("MyWorkflow", new RuleParameter("input1", input1));
802+
803+
Assert.NotNull(result);
804+
Assert.False(result[0].IsSuccess);
805+
Assert.True(result[1].IsSuccess);
806+
}
807+
808+
535809

536810
[Fact]
537811
public async Task ExecuteRule_RuntimeError_ShouldReturnAsErrorMessage()
@@ -768,6 +1042,10 @@ public void ContainsWorkFlowName_ShouldReturn()
7681042
Assert.False(re.ContainsWorkflow(NotExistedWorkflowName));
7691043
}
7701044

1045+
1046+
1047+
1048+
7711049
[Theory]
7721050
[InlineData(typeof(RulesEngine), typeof(IRulesEngine))]
7731051
public void Class_PublicMethods_ArePartOfInterface(Type classType, Type interfaceType)

test/RulesEngine.UnitTest/RulesEngine.UnitTest.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@
2727
<None Update="TestData\rules1.json">
2828
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
2929
</None>
30+
<None Update="TestData\rules11.json">
31+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
32+
</None>
3033
<None Update="TestData\rules4.json">
3134
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
3235
</None>

0 commit comments

Comments
 (0)