@@ -112,6 +112,32 @@ resources:
112112 @ { expression = " [equals('a', 'a')]" ; expected = $true }
113113 @ { expression = " [equals('a', 'b')]" ; expected = $false }
114114 @ { expression = " [not(equals('a', 'b'))]" ; expected = $true }
115+ @ { expression = " [greater(5, 3)]" ; expected = $true }
116+ @ { expression = " [greater(3, 5)]" ; expected = $false }
117+ @ { expression = " [greater(5, 5)]" ; expected = $false }
118+ @ { expression = " [greaterOrEquals(5, 3)]" ; expected = $true }
119+ @ { expression = " [greaterOrEquals(3, 5)]" ; expected = $false }
120+ @ { expression = " [greaterOrEquals(5, 5)]" ; expected = $true }
121+ @ { expression = " [less(3, 5)]" ; expected = $true }
122+ @ { expression = " [less(5, 3)]" ; expected = $false }
123+ @ { expression = " [less(5, 5)]" ; expected = $false }
124+ @ { expression = " [lessOrEquals(3, 5)]" ; expected = $true }
125+ @ { expression = " [lessOrEquals(5, 3)]" ; expected = $false }
126+ @ { expression = " [lessOrEquals(5, 5)]" ; expected = $true }
127+ @ { expression = " [greater('b', 'a')]" ; expected = $true }
128+ @ { expression = " [greater('a', 'b')]" ; expected = $false }
129+ @ { expression = " [greater('A', 'a')]" ; expected = $false }
130+ @ { expression = " [greaterOrEquals('b', 'a')]" ; expected = $true }
131+ @ { expression = " [greaterOrEquals('a', 'b')]" ; expected = $false }
132+ @ { expression = " [greaterOrEquals('a', 'a')]" ; expected = $true }
133+ @ { expression = " [greaterOrEquals('Aa', 'aa')]" ; expected = $false }
134+ @ { expression = " [less('a', 'b')]" ; expected = $true }
135+ @ { expression = " [less('b', 'a')]" ; expected = $false }
136+ @ { expression = " [less('A', 'a')]" ; expected = $true }
137+ @ { expression = " [lessOrEquals('a', 'b')]" ; expected = $true }
138+ @ { expression = " [lessOrEquals('b', 'a')]" ; expected = $false }
139+ @ { expression = " [lessOrEquals('a', 'a')]" ; expected = $true }
140+ @ { expression = " [lessOrEquals('aa', 'Aa')]" ; expected = $false }
115141 @ { expression = " [and(true, true)]" ; expected = $true }
116142 @ { expression = " [and(true, false)]" ; expected = $false }
117143 @ { expression = " [or(false, true)]" ; expected = $true }
@@ -138,4 +164,26 @@ resources:
138164 $LASTEXITCODE | Should - Be 0 - Because (Get-Content $TestDrive / error.log - Raw | Out-String )
139165 $out.results [0 ].result.actualState.output | Should - Be $expected - Because ($out | ConvertTo-Json - Depth 10 | Out-String )
140166 }
167+
168+ It ' Comparison functions handle type mismatches: <expression>' - TestCases @ (
169+ @ { expression = " [greater('a', 1)]" }
170+ @ { expression = " [greaterOrEquals('5', 3)]" }
171+ @ { expression = " [less(1, 'b')]" }
172+ @ { expression = " [lessOrEquals(5, 'a')]" }
173+ ) {
174+ param ($expression )
175+ $yaml = @"
176+ `$ schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
177+ resources:
178+ - name: echo
179+ type: Microsoft.DSC.Debug/Echo
180+ properties:
181+ output: "$expression "
182+ "@
183+ $out = dsc config get - i $yaml 2> $TestDrive / error.log
184+ $LASTEXITCODE | Should - Be 2
185+ $log = Get-Content - Path $TestDrive / error.log - Raw
186+ $log | Should - BeLike " *ERROR* Arguments must be of the same type*"
187+
188+ }
141189}
0 commit comments