Added Compare-Object tests
This commit is contained in:
parent
1318aba2d4
commit
d71a366259
1 changed files with 171 additions and 0 deletions
171
src/pester-tests/Test-Compare-Object.Tests.ps1
Normal file
171
src/pester-tests/Test-Compare-Object.Tests.ps1
Normal file
|
@ -0,0 +1,171 @@
|
||||||
|
Describe "Test-Compare-Object" {
|
||||||
|
# First ensure the environment is set up
|
||||||
|
if (Test-Path "/tmp")
|
||||||
|
{
|
||||||
|
$testDirectory = "/tmp/testDirectory"
|
||||||
|
$nl = "`n"
|
||||||
|
$slash = "/"
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$testDirectory = "C:\Users\v-zafolw\testdirectory"
|
||||||
|
$nl = "`r`n"
|
||||||
|
$slash = "\\"
|
||||||
|
}
|
||||||
|
|
||||||
|
$dir = $testDirectory
|
||||||
|
New-Item $testDirectory -ItemType directory -Force
|
||||||
|
|
||||||
|
$content1 = "line 1" + $nl + "line 2"
|
||||||
|
$content2 = "line 1" + $nl + "line 2.1"
|
||||||
|
$content3 = "line 1" + $nl + "line 2" + $nl + "line 3"
|
||||||
|
$content4 = "line 1" + $nl + "line 2.1" + $nl + "Line 3"
|
||||||
|
|
||||||
|
$file1 = $testDirectory + $slash + "test1.txt"
|
||||||
|
$file2 = $testDirectory + $slash + "test2.txt"
|
||||||
|
$file3 = $testDirectory + $slash + "test3.txt"
|
||||||
|
$file4 = $testDirectory + $slash + "test4.txt"
|
||||||
|
|
||||||
|
New-Item $file1 -ItemType file -Value $content1 -Force
|
||||||
|
New-Item $file2 -ItemType file -Value $content2 -Force
|
||||||
|
New-Item $file3 -ItemType file -Value $content3 -Force
|
||||||
|
New-Item $file4 -ItemType file -Value $content4 -Force
|
||||||
|
|
||||||
|
Test-Path $testDirectory | Should Be $true
|
||||||
|
|
||||||
|
It "Should be able to compare the same object using the referenceObject and differenceObject switches" {
|
||||||
|
{ Compare-Object -ReferenceObject $(Get-Content $file1) -DifferenceObject $(Get-Content $file2) } | Should Not Throw
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should not throw when referenceobject switch is not used" {
|
||||||
|
{ Compare-Object $(Get-Content $file1) -DifferenceObject $(Get-Content $file2) } | Should Not Throw
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should not throw when differenceobject switch is not used" {
|
||||||
|
{ Compare-Object -ReferenceObject $(Get-Content $file1) $(Get-Content $file2) } | Should Not Throw
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should be able to execute compare object using the compare alias" {
|
||||||
|
{ compare -ReferenceObject $(Get-Content $file1) -DifferenceObject $(Get-Content $file2) } | Should Not Throw
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should produce the same output when the compare alias is used" {
|
||||||
|
$alias = compare -ReferenceObject $(Get-Content $file1) -DifferenceObject $(Get-Content $file2)
|
||||||
|
$fullname = Compare-Object -ReferenceObject $(Get-Content $file1) -DifferenceObject $(Get-Content $file2)
|
||||||
|
|
||||||
|
$alias[0].InputObject | Should Be $fullname[0].InputObject
|
||||||
|
$alias[0].SideIndicator | Should Be $fullname[0].SideIndicator
|
||||||
|
$alias[1].InputObject | Should Be $fullname[1].InputObject
|
||||||
|
$alias[1].SideIndicator | Should Be $fullname[1].SideIndicator
|
||||||
|
|
||||||
|
$alias.Length | Should Be 2 # There should be no other elements to test
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should be able to execute compare object using the diff alias" {
|
||||||
|
$alias = diff -ReferenceObject $(Get-Content $file1) -DifferenceObject $(Get-Content $file2)
|
||||||
|
$fullname = Compare-Object -ReferenceObject $(Get-Content $file1) -DifferenceObject $(Get-Content $file2)
|
||||||
|
|
||||||
|
$alias[0].InputObject | Should Be $fullname[0].InputObject
|
||||||
|
$alias[0].SideIndicator | Should Be $fullname[0].SideIndicator
|
||||||
|
$alias[1].InputObject | Should Be $fullname[1].InputObject
|
||||||
|
$alias[1].SideIndicator | Should Be $fullname[1].SideIndicator
|
||||||
|
|
||||||
|
$alias.Length | Should Be 2 # There should be no other elements to test
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should indicate data that exists only in the reference dataset" {
|
||||||
|
$actualOutput = Compare-Object -ReferenceObject $(Get-Content $file3) -DifferenceObject $(Get-Content $file4)
|
||||||
|
|
||||||
|
$actualOutput[1].SideIndicator | Should Be "<="
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should indicate data that exists only in the difference dataset" {
|
||||||
|
$actualOutput = Compare-Object -ReferenceObject $(Get-Content $file3) -DifferenceObject $(Get-Content $file4)
|
||||||
|
|
||||||
|
$actualOutput[1].SideIndicator | Should Be "<="
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should indicate data that exists in both datasets when the includeEqual switch is used" {
|
||||||
|
$actualOutput = Compare-Object -ReferenceObject $(Get-Content $file3) -DifferenceObject $(Get-Content $file4) -IncludeEqual
|
||||||
|
|
||||||
|
$actualOutput.Length | Should Be 4
|
||||||
|
$actualOutput[0].SideIndicator | Should Be "=="
|
||||||
|
$actualOutput[1].SideIndicator | Should Be "=="
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should be able to use the casesensitive switch" {
|
||||||
|
{ Compare-Object -ReferenceObject $(Get-Content $file3) -DifferenceObject $(Get-Content $file4) -CaseSensitive } | Should Not Throw
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should correctly indicate that different cases are different when the casesensitive switch is used" {
|
||||||
|
$caOutput = Compare-Object -ReferenceObject $(Get-Content $file3) -DifferenceObject $(Get-Content $file4) -CaseSensitive
|
||||||
|
$ncaOutput = Compare-Object -ReferenceObject $(Get-Content $file3) -DifferenceObject $(Get-Content $file4)
|
||||||
|
|
||||||
|
$caOutput.Length | Should Be 4
|
||||||
|
|
||||||
|
$ncaOutput[1].SideIndicator | Should Not Be $caOutput[1].SideIndicator
|
||||||
|
$ncaOutput[2].SideIndicator | Should Not Be $caOutput[2].SideIndicator
|
||||||
|
$ncaOutput[3].SideIndicator | Should Not Be $caOutput[3].SideIndicator
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should throw when reference set is null" {
|
||||||
|
{ Compare-Object -ReferenceObject $anonexistentvariable -DifferenceObject $(Get-Content $file4) } | Should Throw
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should throw when difference set is null" {
|
||||||
|
{ Compare-Object -ReferenceObject $(Get-Content $file3) -DifferenceObject $anonexistentvariable } | Should Throw
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should give a 0 array when using excludedifferent switch without also using the includeequal switch" {
|
||||||
|
$actualOutput = Compare-Object -ReferenceObject $(Get-Content $file3) -DifferenceObject $(Get-Content $file4) -ExcludeDifferent
|
||||||
|
|
||||||
|
$actualOutput.Length | Should Be 0
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should only display equal lines when excludeDifferent switch is used alongside the includeequal switch" {
|
||||||
|
$actualOutput = Compare-Object -ReferenceObject $(Get-Content $file3) -DifferenceObject $(Get-Content $file4) -IncludeEqual -ExcludeDifferent
|
||||||
|
|
||||||
|
$actualOutput.Length | Should Be 2
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should be able to pass objects to pipeline using the passthru switch" {
|
||||||
|
{ Compare-Object -ReferenceObject $(Get-Content $file3) -DifferenceObject $(Get-Content $file4) -Passthru | Format-Wide } | Should Not Throw
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should be able to specify the property of two objects to compare" {
|
||||||
|
$actualOutput = Compare-Object -ReferenceObject $file3 -DifferenceObject $testDirectory -Property Length
|
||||||
|
|
||||||
|
$actualOutput[0].Length | Should BeGreaterThan 0
|
||||||
|
$actualOutput[1].Length | Should BeGreaterThan 0
|
||||||
|
$actualOutput[0].Length | Should Not Be $actualOutput[1].Length
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should be able to specify the syncwindow without error" {
|
||||||
|
{ Compare-Object -ReferenceObject $(Get-Content $file3) -DifferenceObject $(Get-Content $file4) -syncWindow 5 } | Should Not Throw
|
||||||
|
{ Compare-Object -ReferenceObject $(Get-Content $file3) -DifferenceObject $(Get-Content $file4) -syncWindow 8 } | Should Not Throw
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should have the expected output when changing the syncwindow" {
|
||||||
|
$var1 = 1..15
|
||||||
|
$var2 = 15..1
|
||||||
|
|
||||||
|
$actualOutput = Compare-Object -ReferenceObject $var1 -DifferenceObject $var2 -syncWindow 6
|
||||||
|
|
||||||
|
$actualOutput[0].InputObject | Should Be 15
|
||||||
|
$actualOutput[1].InputObject | Should Be 1
|
||||||
|
$actualOutput[2].InputObject | Should Be 1
|
||||||
|
$actualOutput[3].InputObject | Should Be 15
|
||||||
|
|
||||||
|
$actualOutput[0].SideIndicator | Should be "=>"
|
||||||
|
$actualOutput[1].SideIndicator | Should be "<="
|
||||||
|
$actualOutput[2].SideIndicator | Should be "=>"
|
||||||
|
$actualOutput[3].SideIndicator | Should be "<="
|
||||||
|
}
|
||||||
|
|
||||||
|
# Clean up after yourself
|
||||||
|
Remove-Item $testDirectory -Recurse -Force
|
||||||
|
Test-Path $testDirectory | Should Be $false
|
||||||
|
}
|
Loading…
Reference in a new issue