tst/General/Assert-Equal.Tests.ps1
InModuleScope -ModuleName Assert { Describe "Assert-Equal" { Context "Comparing strings" { It "Passes when two strings are equal" { "abc" | Assert-Equal "abc" } It "Fails when two strings are different" { { "abc" | Assert-Equal "bde" } | Verify-AssertionFailed } } Context "Comparing integers" { It "Passes when two numbers are equal" { 1 | Assert-Equal 1 } It "Fails when two numbers are different" { { 1 | Assert-Equal 9 } | Verify-AssertionFailed } } Context "Comparing doubles" { It "Passes when two numbers are equal" { .1 | Assert-Equal .1 } It "Fails when two numbers are different" { { .1 | Assert-Equal .9 } | Verify-AssertionFailed } } Context "Comparing decimals" { It "Passes when two numbers are equal" { .1D | Assert-Equal .1D } It "Fails when two numbers are different" { { .1D | Assert-Equal .9D } | Verify-AssertionFailed } } Context "Comparing objects" { It "Passes when two objects are the same" { $object = New-Object -TypeName PsObject -Property @{ Name = "Jakub" } $object | Assert-Equal $object } It "Fails when two objects are different" { $object = New-Object -TypeName PsObject -Property @{ Name = "Jakub" } $object1 = New-Object -TypeName PsObject -Property @{ Name = "Jakub" } { $object | Assert-Equal $object1 } | Verify-AssertionFailed } } It "Fails for array input even if the last item is the same as expected" { { 1,2,3 | Assert-Equal 3 } | Verify-AssertionFailed } It "Fails with custom message" { $error = { 9 | Assert-Equal 3 -Message "<expected> is not <actual>" } | Verify-AssertionFailed $error.Exception.Message | Verify-Equal "3 is not 9" } Context "Validate messages" { It "Given two values that are not the same '<expected>' and '<actual>' it returns expected message '<message>'" -TestCases @( @{ Expected = "a" ; Actual = 10 ; Message = "Expected string 'a', but got int '10'."}, @{ Expected = "a" ; Actual = 10.1 ; Message = "Expected string 'a', but got double '10.1'."}, @{ Expected = "a" ; Actual = 10.1D ; Message = "Expected string 'a', but got decimal '10.1'."} ) { param($Expected, $Actual, $Message) $error = { Assert-Equal -Actual $Actual -Expected $Expected } | Verify-AssertionFailed $error.Exception.Message | Verify-Equal $Message } } It "Returns the value on output" { $expected = 1 $expected | Assert-Equal 1 | Verify-Equal $expected } } } |