tst/String/Assert-StringNotEqual.Tests.ps1
InModuleScope -ModuleName Assert { Describe "Get-StringNotEqualDefaultFailureMessage" { It "returns correct default message" { $expected = "Expected the strings to be different but they were the same 'abc'." $actual = Get-StringNotEqualDefaultFailureMessage -Expected "abc" -Actual "abc" $actual | Verify-Equal $expected } } Describe "Assert-StringNotEqual" { It "Does nothing when string are different" { Assert-StringNotEqual -Expected "abc" -Actual "bde" } It "Throws when strings are the same" { { Assert-StringNotEqual -Expected "abc" -Actual "abc" } | Verify-AssertionFailed } It "Throws with default message when test fails" { $expected = Get-StringNotEqualDefaultFailureMessage -Expected "abc" -Actual "abc" $exception = { Assert-StringNotEqual -Expected "abc" -Actual "abc" } | Verify-AssertionFailed "$exception" | Verify-Equal $expected } It "Throws with custom message when test fails" { $customMessage = "Test failed becasue it expected '<e>' but got '<a>'. What a shame!" $expected = Get-CustomFailureMessage -Message $customMessage -Expected "abc" -Actual "abc" $exception = { Assert-StringNotEqual -Expected "abc" -Actual "abc" -Message $customMessage } | Verify-AssertionFailed "$exception" | Verify-Equal $expected } It "Allows actual to be passed from pipeline" { "abc" | Assert-StringNotEqual -Expected "bde" } It "Allows expected to be passed by position" { Assert-StringNotEqual "abc" -Actual "bde" } It "Allows actual to be passed by pipeline and expected by position" { "abc" | Assert-StringNotEqual "bde" } Context "String specific features" { It "Can compare strings in CaseSensitive mode" { Assert-StringNotEqual -Expected "ABC" -Actual "abc" -CaseSensitive } It "Can compare strings without whitespace" { { Assert-StringNotEqual -Expected " a b c " -Actual "abc" -IgnoreWhitespace } | Verify-AssertionFailed } } } } |