@@ -16,7 +16,7 @@ const permissiveEngines = [
1616 new AsyncLogicEngine ( undefined , { yieldSupported : true , permissive : true } )
1717]
1818
19- async function testEngineAsync ( engine , rule , data , expected ) {
19+ async function testEngineAsync ( engine , rule , data , expected , matcher = 'deepStrictEqual' ) {
2020 // run
2121 if ( expected === Error ) {
2222 try {
@@ -25,7 +25,7 @@ async function testEngineAsync (engine, rule, data, expected) {
2525 } catch ( e ) { }
2626 } else {
2727 const result = await engine . run ( rule , data )
28- assert . deepStrictEqual ( result , expected )
28+ assert [ matcher ] ( result , expected )
2929 }
3030
3131 // build
@@ -38,13 +38,13 @@ async function testEngineAsync (engine, rule, data, expected) {
3838 } else {
3939 const built = await engine . build ( rule )
4040 const builtResult = await built ( data )
41- assert . deepStrictEqual ( builtResult , expected )
41+ assert [ matcher ] ( builtResult , expected )
4242 }
4343}
4444
45- function testEngine ( engine , rule , data , expected ) {
45+ function testEngine ( engine , rule , data , expected , matcher = 'deepStrictEqual' ) {
4646 if ( engine instanceof AsyncLogicEngine ) {
47- return testEngineAsync ( engine , rule , data , expected )
47+ return testEngineAsync ( engine , rule , data , expected , matcher )
4848 }
4949
5050 // run
@@ -55,7 +55,7 @@ function testEngine (engine, rule, data, expected) {
5555 } catch ( e ) { }
5656 } else {
5757 const result = engine . run ( rule , data )
58- assert . deepStrictEqual ( result , expected )
58+ assert [ matcher ] ( result , expected )
5959 }
6060
6161 // build
@@ -68,7 +68,7 @@ function testEngine (engine, rule, data, expected) {
6868 } else {
6969 const built = engine . build ( rule )
7070 const builtResult = built ( data )
71- assert . deepStrictEqual ( builtResult , expected )
71+ assert [ matcher ] ( builtResult , expected )
7272 }
7373}
7474
@@ -84,6 +84,20 @@ describe('Various Test Cases', () => {
8484 await testEngine ( engine , {
8585 if : [ true , { unknown : true , unknown2 : 2 } , 5 ]
8686 } , { } , { unknown : true , unknown2 : 2 } )
87+
88+ const obj = { unknown : true , unknown2 : 2 }
89+
90+ // test with deterministic function returning a passively preserved element.
91+ await testEngine ( engine , {
92+ if : [ true , obj , 5 ]
93+ } , { } , obj , 'equal' )
94+
95+ // test with a non-deterministic function returning a passively preserved element.
96+ await testEngine ( engine , {
97+ if : [ { var : 'data' } , obj , 5 ]
98+ } , {
99+ data : true
100+ } , obj , 'equal' )
87101 }
88102 } )
89103} )
0 commit comments