tests/extensions/BeTrueForAny.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
function BeTrueForAny { [CmdletBinding()] param ( $ActualValue, [scriptblock] $TestScript, [switch] $Negate ) end { $succeeded = $false foreach ($value in $ActualValue) { $variables = [System.Collections.Generic.List[psvariable]]( [psvariable]::new('_', $value)) $succeeded = $TestScript.InvokeWithContext( <# functionsToDefine: #> @{ }, <# variablesToDefine: #> $variables, <# args: #> $value) if ($Negate.IsPresent) { $succeeded = -not $succeeded } if ($succeeded) { break } } if (-not $succeeded) { if ($Negate.IsPresent) { $failureMessage = 'Expected: Any value to fail the evaluation script, ' + 'but no value returned false. (ActualValue: {0})' -f ($ActualValue -join ', ') } else { $failureMessage = 'Expected: Any value to pass the evaluation script, ' + 'but no value returned true. (ActualValue: {0})' -f ($ActualValue -join ', ') } } [PSCustomObject]@{ Succeeded = $succeeded FailureMessage = $failureMessage } } } Add-ShouldOperator -Name BeTrueForAny -Test $function:BeTrueForAny -Alias Any -SupportsArrayInput |