tst/Collection/Assert-All.Tests.ps1

Describe "Assert-All" {
    It "Passes when all items in the given collection pass the predicate" -TestCases @(
        @{ Actual = 1,1,1,1 }
        @{ Actual = @(1) }
        @{ Actual = 1 }
    ) {
        param($Actual)
        $Actual | Assert-All -FilterScript { $_ -eq 1 }
    }

    It "Fails when any item in the given collection does not pass the predicate" -TestCases @(
        @{ Actual = 1,1,2,1 }
        @{ Actual = @(2) }
        @{ Actual = 2 }
    ) {
        param($Actual)
        { $Actual | Assert-All -FilterScript { $_ -eq 1 } } | Verify-AssertionFailed
    }

    It "Validate messages" -TestCases @(
        @{ Actual = @(3,4,5); Message = "Expected all items in collection '3, 4, 5' to pass filter '{ `$_ -eq 1 }', but 3 of them '3, 4, 5' did not pass the filter." }
    ) {
        param($Actual, $Message)
        $err = { $Actual | Assert-All -FilterScript { $_ -eq 1 } } | Verify-AssertionFailed
        $err.Exception.Message | Verify-Equal $Message
    }

    It "Returns the value on output" {
        $expected = "a","b"
        $v = $expected | Assert-All { $true } 
        $v[0] | Verify-Equal $expected[0]
        $v[1] | Verify-Equal $expected[1]
    }

    It "Accepts FilterScript and Actual by position" {
        Assert-All { $true } 1,2
    }
}