tst/Boolean/Assert-True.Tests.ps1

Describe "Assert-True" {
        It "Passes when given `$true" {
            $true | Assert-True
        }

        It "Passes when given truthy" -TestCases @(
            @{ Actual = 1 }
            @{ Actual = "text" }
            @{ Actual = New-Object -TypeName PSObject }
            @{ Actual = 1,2 }
        ) {
            param($Actual)
            Assert-True -Actual $Actual
        }

    It "Fails with custom message" {
            $error = { $null | Assert-True -Message "<actual> is not true" } | Verify-AssertionFailed
            $error.Exception.Message | Verify-Equal "`$null is not true"
    }

    Context "Validate messages" {
        It "Given value '<expected>' that is not `$true it returns expected message '<message>'" -TestCases @(
            @{ Actual = $false ; Message = "Expected bool '`$false' to be bool '`$true' or truthy value."},
            @{ Actual = 0 ; Message = "Expected int '0' to be bool '`$true' or truthy value."}
        ) { 
            param($Actual, $Message)
            $error = { Assert-True -Actual $Actual } | Verify-AssertionFailed
            $error.Exception.Message | Verify-Equal $Message
        }
    }

    It "Returns the value on output" {
        $expected = $true
        $expected | Assert-True | Verify-Equal $expected
    }

    It "Can be called with positional parameters" {
        { Assert-True $false } | Verify-AssertionFailed
    }
}