From 64d41126df4a7148587d440a48d464b88898176c Mon Sep 17 00:00:00 2001 From: JumpingYang001 Date: Tue, 17 May 2016 02:29:20 -0700 Subject: [PATCH 1/3] Add Select-Object Pestert Test --- test/powershell/Select-Object.Tests.ps1 | 146 ++++++++++++++++++++++++ 1 file changed, 146 insertions(+) diff --git a/test/powershell/Select-Object.Tests.ps1 b/test/powershell/Select-Object.Tests.ps1 index ba5e0fd83..df4836653 100644 --- a/test/powershell/Select-Object.Tests.ps1 +++ b/test/powershell/Select-Object.Tests.ps1 @@ -112,3 +112,149 @@ Describe "Select-Object" { $dirObject[$TestLength].Size | Should Be ($orig2 + 1) } } + +Describe "Select-Object DRT basic functionality" -Tags DRT{ + It "Select-Object with empty script block property should throw"{ + try + { + "bar" | select-object -Prop {} -EA Stop + Throw "Execution OK" + } + catch + { + $_.CategoryInfo | Should Match "PSArgumentException" + $_.FullyQualifiedErrorId | Should be "EmptyScriptBlockAndNoName,Microsoft.PowerShell.Commands.SelectObjectCommand" + } + } + + It "Select-Object with string property should work"{ + $result = "bar" | select-object -Prop foo | Measure-Object + $result.Count | Should Be 1 + } + + It "Select-Object with Property First Last Overlap should work"{ + $employee1 = New-Object PSObject -Property @{"FirstName"="joesph"; "LastName"="smith"; "YearsInMS"=15} + $employee2 = New-Object PSObject -Property @{"FirstName"="paul"; "LastName"="smith"; "YearsInMS"=15} + $employee3 = New-Object PSObject -Property @{"FirstName"="mary"; "LastName"="soe"; "YearsInMS"=5} + $employee4 = New-Object PSObject -Property @{"FirstName"="edmund"; "LastName"="bush"; "YearsInMS"=9} + $employees = @($employee1,$employee2,$employee3,$employee4) + $results = $employees | Select-Object -Property "YearsInMS", "L*" -First 2 -Last 3 + + $results.Count | Should Be 4 + + $results[0].LastName | Should Be $employees[0].LastName + $results[1].LastName | Should Be $employees[1].LastName + $results[2].LastName | Should Be $employees[2].LastName + $results[3].LastName | Should Be $employees[3].LastName + + $results[0].YearsInMS | Should Be $employees[0].YearsInMS + $results[1].YearsInMS | Should Be $employees[1].YearsInMS + $results[2].YearsInMS | Should Be $employees[2].YearsInMS + $results[3].YearsInMS | Should Be $employees[3].YearsInMS + } + + It "Select-Object with Property First Last should work"{ + $employee1 = New-Object PSObject -Property @{"FirstName"="joesph"; "LastName"="smith"; "YearsInMS"=15} + $employee2 = New-Object PSObject -Property @{"FirstName"="paul"; "LastName"="smith"; "YearsInMS"=15} + $employee3 = New-Object PSObject -Property @{"FirstName"="mary"; "LastName"="soe"; "YearsInMS"=15} + $employee4 = New-Object PSObject -Property @{"FirstName"="edmund"; "LastName"="bush"; "YearsInMS"=9} + $employees = @($employee1,$employee2,$employee3,$employee4) + $results = $employees | Select-Object -Property "YearsInMS", "L*" -First 2 -Last 1 + + $results.Count | Should Be 3 + + $results[0].LastName | Should Be $employees[0].LastName + $results[1].LastName | Should Be $employees[1].LastName + $results[2].LastName | Should Be $employees[3].LastName + + $results[0].YearsInMS | Should Be $employees[0].YearsInMS + $results[1].YearsInMS | Should Be $employees[1].YearsInMS + $results[2].YearsInMS | Should Be $employees[3].YearsInMS + } + + It "Select-Object with Property First should work"{ + $employee1 = New-Object PSObject -Property @{"FirstName"="joesph"; "LastName"="smith"; "YearsInMS"=15} + $employee2 = New-Object PSObject -Property @{"FirstName"="paul"; "LastName"="smith"; "YearsInMS"=15} + $employee3 = New-Object PSObject -Property @{"FirstName"="mary"; "LastName"="soe"; "YearsInMS"=15} + $employee4 = New-Object PSObject -Property @{"FirstName"="edmund"; "LastName"="bush"; "YearsInMS"=9} + $employees = @($employee1,$employee2,$employee3,$employee4) + $results = $employees | Select-Object -Property "YearsInMS", "L*" -First 2 + + $results.Count | Should Be 2 + + $results[0].LastName | Should Be $employees[0].LastName + $results[1].LastName | Should Be $employees[1].LastName + + $results[0].YearsInMS | Should Be $employees[0].YearsInMS + $results[1].YearsInMS | Should Be $employees[1].YearsInMS + } + + It "Select-Object with Property First Zero should work"{ + $employee1 = New-Object PSObject -Property @{"FirstName"="joesph"; "LastName"="smith"; "YearsInMS"=15} + $employee2 = New-Object PSObject -Property @{"FirstName"="paul"; "LastName"="smith"; "YearsInMS"=15} + $employee3 = New-Object PSObject -Property @{"FirstName"="mary"; "LastName"="soe"; "YearsInMS"=15} + $employee4 = New-Object PSObject -Property @{"FirstName"="edmund"; "LastName"="bush"; "YearsInMS"=9} + $employees = @($employee1,$employee2,$employee3,$employee4) + $results = $employees | Select-Object -Property "YearsInMS", "L*" -First 0 + + $results.Count | Should Be 0 + } + + It "Select-Object with Property Last Zero should work"{ + $employee1 = New-Object PSObject -Property @{"FirstName"="joesph"; "LastName"="smith"; "YearsInMS"=15} + $employee2 = New-Object PSObject -Property @{"FirstName"="paul"; "LastName"="smith"; "YearsInMS"=15} + $employee3 = New-Object PSObject -Property @{"FirstName"="mary"; "LastName"="soe"; "YearsInMS"=15} + $employee4 = New-Object PSObject -Property @{"FirstName"="edmund"; "LastName"="bush"; "YearsInMS"=9} + $employees = @($employee1,$employee2,$employee3,$employee4) + $results = $employees | Select-Object -Property "YearsInMS", "L*" -Last 0 + + $results.Count | Should Be 0 + } + + It "Select-Object with Unique should work"{ + $employee1 = New-Object PSObject -Property @{"FirstName"="joesph"; "LastName"="smith"; "YearsInMS"=15} + $employee2 = New-Object PSObject -Property @{"FirstName"="paul"; "LastName"="smith"; "YearsInMS"=15} + $employee3 = New-Object PSObject -Property @{"FirstName"="mary"; "LastName"="soe"; "YearsInMS"=15} + $employee4 = New-Object PSObject -Property @{"FirstName"="edmund"; "LastName"="bush"; "YearsInMS"=9} + $employees = @($employee1,$employee2,$employee3,$employee4) + $results = $employees | Select-Object -Property "YearsInMS", "L*" -Unique:$true + + $results.Count | Should Be 3 + + $results[0].LastName | Should Be $employees[1].LastName + $results[1].LastName | Should Be $employees[2].LastName + $results[2].LastName | Should Be $employees[3].LastName + + $results[0].YearsInMS | Should Be $employees[1].YearsInMS + $results[1].YearsInMS | Should Be $employees[2].YearsInMS + $results[2].YearsInMS | Should Be $employees[3].YearsInMS + } + + It "Select-Object with Simple should work"{ + $employee1 = New-Object PSObject -Property @{"FirstName"="joesph"; "LastName"="smith"; "YearsInMS"=15} + $employee2 = New-Object PSObject -Property @{"FirstName"="paul"; "LastName"="smith"; "YearsInMS"=15} + $employee3 = New-Object PSObject -Property @{"FirstName"="mary"; "LastName"="soe"; "YearsInMS"=15} + $employees = @($employee1,$employee2,$employee3,$employee4) + $results = $employees | Select-Object -Property "FirstName", "YearsInMS" + + $results.Count | Should Be 3 + + $results[0].FirstName | Should Be $employees[0].FirstName + $results[1].FirstName | Should Be $employees[1].FirstName + $results[2].FirstName | Should Be $employees[2].FirstName + + $results[0].YearsInMS | Should Be $employees[0].YearsInMS + $results[1].YearsInMS | Should Be $employees[1].YearsInMS + $results[2].YearsInMS | Should Be $employees[2].YearsInMS + } + + It "Select-Object with no input should work"{ + $results = $null | Select-Object -Property "FirstName", "YearsInMS", "FirstNa*" + $results.Count | Should Be 0 + } + + It "Select-Object with Start-Time In Idle Process should work"{ + $results = Get-Process i* | Select-Object ProcessName + $results.Count | Should Not Be 0 + } +} \ No newline at end of file From 9b7b14ae2efad03bb6e600c96deb9199fcc56c0e Mon Sep 17 00:00:00 2001 From: JumpingYang001 Date: Wed, 18 May 2016 01:25:22 -0700 Subject: [PATCH 2/3] Add SelectObjectV2DRT Pester Unit Test --- test/powershell/Select-Object.Tests.ps1 | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/test/powershell/Select-Object.Tests.ps1 b/test/powershell/Select-Object.Tests.ps1 index df4836653..ae824f87b 100644 --- a/test/powershell/Select-Object.Tests.ps1 +++ b/test/powershell/Select-Object.Tests.ps1 @@ -257,4 +257,17 @@ Describe "Select-Object DRT basic functionality" -Tags DRT{ $results = Get-Process i* | Select-Object ProcessName $results.Count | Should Not Be 0 } + + It "Select-Object with Skip should work"{ + $results = "1","2","3" | Select-Object -Skip 1 + $results.Count | Should Be 2 + $results[0] | Should Be 2 + $results[1] | Should Be 3 + } + + It "Select-Object with Index should work"{ + $results = "1","2","3" | Select-Object -Index 2 + $results.Count | Should Be 1 + $results[0] | Should Be "3" + } } \ No newline at end of file From 0559fcd6e58a799fde1b9faa322555c0713f6110 Mon Sep 17 00:00:00 2001 From: JumpingYang001 Date: Thu, 19 May 2016 21:47:03 -0700 Subject: [PATCH 3/3] Update fix based on comment for Select-Object Pester Test --- test/powershell/Select-Object.Tests.ps1 | 59 ++++++++----------------- 1 file changed, 18 insertions(+), 41 deletions(-) diff --git a/test/powershell/Select-Object.Tests.ps1 b/test/powershell/Select-Object.Tests.ps1 index ae824f87b..209107060 100644 --- a/test/powershell/Select-Object.Tests.ps1 +++ b/test/powershell/Select-Object.Tests.ps1 @@ -114,6 +114,13 @@ Describe "Select-Object" { } Describe "Select-Object DRT basic functionality" -Tags DRT{ + BeforeAll { + $employees = [pscustomobject]@{"FirstName"="joseph"; "LastName"="smith"; "YearsInMS"=15}, + [pscustomobject]@{"FirstName"="paul"; "LastName"="smith"; "YearsInMS"=15}, + [pscustomobject]@{"FirstName"="mary"; "LastName"="soe"; "YearsInMS"=5}, + [pscustomobject]@{"FirstName"="edmund"; "LastName"="bush"; "YearsInMS"=9} + } + It "Select-Object with empty script block property should throw"{ try { @@ -133,11 +140,6 @@ Describe "Select-Object DRT basic functionality" -Tags DRT{ } It "Select-Object with Property First Last Overlap should work"{ - $employee1 = New-Object PSObject -Property @{"FirstName"="joesph"; "LastName"="smith"; "YearsInMS"=15} - $employee2 = New-Object PSObject -Property @{"FirstName"="paul"; "LastName"="smith"; "YearsInMS"=15} - $employee3 = New-Object PSObject -Property @{"FirstName"="mary"; "LastName"="soe"; "YearsInMS"=5} - $employee4 = New-Object PSObject -Property @{"FirstName"="edmund"; "LastName"="bush"; "YearsInMS"=9} - $employees = @($employee1,$employee2,$employee3,$employee4) $results = $employees | Select-Object -Property "YearsInMS", "L*" -First 2 -Last 3 $results.Count | Should Be 4 @@ -154,11 +156,6 @@ Describe "Select-Object DRT basic functionality" -Tags DRT{ } It "Select-Object with Property First Last should work"{ - $employee1 = New-Object PSObject -Property @{"FirstName"="joesph"; "LastName"="smith"; "YearsInMS"=15} - $employee2 = New-Object PSObject -Property @{"FirstName"="paul"; "LastName"="smith"; "YearsInMS"=15} - $employee3 = New-Object PSObject -Property @{"FirstName"="mary"; "LastName"="soe"; "YearsInMS"=15} - $employee4 = New-Object PSObject -Property @{"FirstName"="edmund"; "LastName"="bush"; "YearsInMS"=9} - $employees = @($employee1,$employee2,$employee3,$employee4) $results = $employees | Select-Object -Property "YearsInMS", "L*" -First 2 -Last 1 $results.Count | Should Be 3 @@ -173,11 +170,6 @@ Describe "Select-Object DRT basic functionality" -Tags DRT{ } It "Select-Object with Property First should work"{ - $employee1 = New-Object PSObject -Property @{"FirstName"="joesph"; "LastName"="smith"; "YearsInMS"=15} - $employee2 = New-Object PSObject -Property @{"FirstName"="paul"; "LastName"="smith"; "YearsInMS"=15} - $employee3 = New-Object PSObject -Property @{"FirstName"="mary"; "LastName"="soe"; "YearsInMS"=15} - $employee4 = New-Object PSObject -Property @{"FirstName"="edmund"; "LastName"="bush"; "YearsInMS"=9} - $employees = @($employee1,$employee2,$employee3,$employee4) $results = $employees | Select-Object -Property "YearsInMS", "L*" -First 2 $results.Count | Should Be 2 @@ -190,33 +182,18 @@ Describe "Select-Object DRT basic functionality" -Tags DRT{ } It "Select-Object with Property First Zero should work"{ - $employee1 = New-Object PSObject -Property @{"FirstName"="joesph"; "LastName"="smith"; "YearsInMS"=15} - $employee2 = New-Object PSObject -Property @{"FirstName"="paul"; "LastName"="smith"; "YearsInMS"=15} - $employee3 = New-Object PSObject -Property @{"FirstName"="mary"; "LastName"="soe"; "YearsInMS"=15} - $employee4 = New-Object PSObject -Property @{"FirstName"="edmund"; "LastName"="bush"; "YearsInMS"=9} - $employees = @($employee1,$employee2,$employee3,$employee4) $results = $employees | Select-Object -Property "YearsInMS", "L*" -First 0 $results.Count | Should Be 0 } It "Select-Object with Property Last Zero should work"{ - $employee1 = New-Object PSObject -Property @{"FirstName"="joesph"; "LastName"="smith"; "YearsInMS"=15} - $employee2 = New-Object PSObject -Property @{"FirstName"="paul"; "LastName"="smith"; "YearsInMS"=15} - $employee3 = New-Object PSObject -Property @{"FirstName"="mary"; "LastName"="soe"; "YearsInMS"=15} - $employee4 = New-Object PSObject -Property @{"FirstName"="edmund"; "LastName"="bush"; "YearsInMS"=9} - $employees = @($employee1,$employee2,$employee3,$employee4) $results = $employees | Select-Object -Property "YearsInMS", "L*" -Last 0 $results.Count | Should Be 0 } It "Select-Object with Unique should work"{ - $employee1 = New-Object PSObject -Property @{"FirstName"="joesph"; "LastName"="smith"; "YearsInMS"=15} - $employee2 = New-Object PSObject -Property @{"FirstName"="paul"; "LastName"="smith"; "YearsInMS"=15} - $employee3 = New-Object PSObject -Property @{"FirstName"="mary"; "LastName"="soe"; "YearsInMS"=15} - $employee4 = New-Object PSObject -Property @{"FirstName"="edmund"; "LastName"="bush"; "YearsInMS"=9} - $employees = @($employee1,$employee2,$employee3,$employee4) $results = $employees | Select-Object -Property "YearsInMS", "L*" -Unique:$true $results.Count | Should Be 3 @@ -231,21 +208,21 @@ Describe "Select-Object DRT basic functionality" -Tags DRT{ } It "Select-Object with Simple should work"{ - $employee1 = New-Object PSObject -Property @{"FirstName"="joesph"; "LastName"="smith"; "YearsInMS"=15} - $employee2 = New-Object PSObject -Property @{"FirstName"="paul"; "LastName"="smith"; "YearsInMS"=15} - $employee3 = New-Object PSObject -Property @{"FirstName"="mary"; "LastName"="soe"; "YearsInMS"=15} - $employees = @($employee1,$employee2,$employee3,$employee4) - $results = $employees | Select-Object -Property "FirstName", "YearsInMS" + $employee1 = [pscustomobject]@{"FirstName"="joesph"; "LastName"="smith"; "YearsInMS"=15} + $employee2 = [pscustomobject]@{"FirstName"="paul"; "LastName"="smith"; "YearsInMS"=15} + $employee3 = [pscustomobject]@{"FirstName"="mary"; "LastName"="soe"; "YearsInMS"=15} + $employees3 = @($employee1,$employee2,$employee3,$employee4) + $results = $employees3 | Select-Object -Property "FirstName", "YearsInMS" $results.Count | Should Be 3 - $results[0].FirstName | Should Be $employees[0].FirstName - $results[1].FirstName | Should Be $employees[1].FirstName - $results[2].FirstName | Should Be $employees[2].FirstName + $results[0].FirstName | Should Be $employees3[0].FirstName + $results[1].FirstName | Should Be $employees3[1].FirstName + $results[2].FirstName | Should Be $employees3[2].FirstName - $results[0].YearsInMS | Should Be $employees[0].YearsInMS - $results[1].YearsInMS | Should Be $employees[1].YearsInMS - $results[2].YearsInMS | Should Be $employees[2].YearsInMS + $results[0].YearsInMS | Should Be $employees3[0].YearsInMS + $results[1].YearsInMS | Should Be $employees3[1].YearsInMS + $results[2].YearsInMS | Should Be $employees3[2].YearsInMS } It "Select-Object with no input should work"{