From d35e8617166804758fd1ae4b9111084cb7ce486c Mon Sep 17 00:00:00 2001 From: TingLiu6 Date: Thu, 26 May 2016 19:58:06 -0700 Subject: [PATCH 1/4] Add Unit Test for Get-Member --- test/powershell/Get-Member.Tests.ps1 | 255 +++++++++++++++++++++++++++ 1 file changed, 255 insertions(+) diff --git a/test/powershell/Get-Member.Tests.ps1 b/test/powershell/Get-Member.Tests.ps1 index 06fb78de2..3939de363 100644 --- a/test/powershell/Get-Member.Tests.ps1 +++ b/test/powershell/Get-Member.Tests.ps1 @@ -39,3 +39,258 @@ Describe "Get-Member" { Get-Member -InputObject $o | Should Not BeNullOrEmpty } } + +Describe "Get-Member DRT Unit Tests" -Tags DRT { + Context "Verify Get-Member with Class" { + Add-Type -TypeDefinition @" + public class Employee + { + private string firstName; + private string lastName; + private int yearsInMS; + + public string FirstName + { + get + { + return firstName; + } + set + { + firstName = value; + } + } + + + public string LastName + { + get + { + return lastName; + } + set + { + lastName = value; + } + } + + + public int YearsInMS + { + get + { + return yearsInMS; + } + set + { + yearsInMS = value; + } + } + + public void GetEmployee() {} + + public void SetEmployee() {} + + public Employee(string firstName, string lastName, int yearsInMS) + { + this.firstName = firstName; + this.lastName = lastName; + this.yearsInMS = yearsInMS; + } + } +"@ + + + $fileToDeleteName = Join-Path $TestDrive -ChildPath "getMemberTest.ps1xml" + $XMLFile= @" + + + Employee + + + PropertySetName + + FirstName + LastName + + + + FullSet + + FirstName + LastName + YearsInMS + + + + + + EmployeePartTime + + + PropertySetName + + FirstName + HoursPerWeek + + + + FullSet + + FirstName + LastName + HoursPerWeek + + + + + +"@ + + $XMLFile > $fileToDeleteName + Update-TypeData -AppendPath $fileToDeleteName + + It "Fail to get member without any input" { + try + { + Get-Member -MemberType All -ErrorAction Stop + Throw "Execution OK" + } + catch + { + $_.FullyQualifiedErrorId | Should Be 'NoObjectInGetMember,Microsoft.PowerShell.Commands.GetMemberCommand' + } + } + + It 'Get the expected Properties of "Employee" object' { + $emps = [Employee]::New("john", "smith", 5), [Employee]::New("joesph", "smith", 15), [Employee]::New("john", "smyth", 2) + $results = $emps | Get-Member -MemberType Property + $results.Length | Should Be 3 + $results[0].Name | Should Be "FirstName" + $results[1].Name | Should Be "LastName" + $results[2].Name | Should Be "YearsInMS" + } + + It 'Get the Public Methods of "Employee" object' { + $emps = [Employee]::New("john", "smith", 5), [Employee]::New("joesph", "smith", 15), [Employee]::New("john", "smyth", 2) + $methodList = "GetHashCode", "Equals", "ToString", "GetEmployee", "SetEmployee", "GetType" + $results = $emps | Get-Member -MemberType Method + $results.Length | Should Be $methodList.Length + $methodFound = @() + + for ($i = 0;$i -lt $methodList.Length;$i++) + { + for ($j = 0;$j -lt $results.Length;$j++) + { + if ($results[$j].Name.Equals($methodList[$i])) + { + $methodFound += $true + } + } + } + + for ($i = 0;$i -lt $methodList.Length;$i++) + { + $methodFound[$i] | Should Be $true + } + } + + It 'Get property sets defined in private members' { + $emps = [Employee]::New("john", "smith", 5), [Employee]::New("joesph", "smith", 15), [Employee]::New("john", "smyth", 2) + $results = $emps | Get-Member -MemberType PropertySet + $results.Length | Should Be 2 + $results[0].Name | Should Be "FullSet" + $results[1].Name | Should Be "PropertySetName" + } + } + + Context "Verify Get-Member with Static Parameter" { + It 'Get the static properties and methods of the object' { + $obj = New-Object -TypeName System.Int32 + $results = $obj | Get-Member -Static + $members = "MaxValue", "MinValue", "Parse", "TryParse" + foreach ($member in $members) + { + foreach ($result in $results) + { + if($result.Name.Equals($member)) + { + return $true + } + } + return $false + } + } + + It "Get the static properties and methods of int instance" { + $results = 1 | Get-Member -Static + $members = "MaxValue", "MinValue", "Parse", "TryParse" + foreach ($member in $members) + { + foreach ($result in $results) + { + if($result.Name.Equals($member)) + { + return $true + } + } + return $false + } + } + + It "Get the static properties and methods of int instance Wrapped" { + $results = [pscustomobject]1 | Get-Member -Static + $members = "MaxValue", "MinValue", "Parse", "TryParse" + foreach ($member in $members) + { + foreach ($result in $results) + { + if($result.Name.Equals($member)) + { + return $true + } + } + return $false + } + } + } + + Context "Verify Get-Member with other parameters" { + It 'works with View Parameter' { + $results = [xml]'some text' | Get-Member -view adapted + $results.Length | Should Be 38 + } + + It 'Get hidden members'{ + $results = 'abc' | Get-Member -force + $hiddenMembers = "psbase", "psextended", "psadapted", "pstypenames", "psobject" + foreach ($member in $hiddenMembers) + { + foreach ($result in $results) + { + if($result.Name.Equals($member)) + { + return $true + } + } + return $false + } + } + + It 'Get Set Property Accessors On PsBase'{ + $results = ('abc').psbase | Get-Member -force get_* + $expectedMembers = "get_Chars", "get_Length" + foreach ($member in $expectedMembers) + { + foreach ($result in $results) + { + if($result.Name.Equals($member)) + { + return $true + } + } + return $false + } + } + } +} \ No newline at end of file From a48fef48e03be71a8c2b64adf7366c498bd9b6fc Mon Sep 17 00:00:00 2001 From: TingLiu6 Date: Fri, 27 May 2016 01:50:48 -0700 Subject: [PATCH 2/4] Update Get-Member Pester Test --- test/powershell/Get-Member.Tests.ps1 | 62 ++++++++++------------------ 1 file changed, 21 insertions(+), 41 deletions(-) diff --git a/test/powershell/Get-Member.Tests.ps1 b/test/powershell/Get-Member.Tests.ps1 index 3939de363..caf86e2b7 100644 --- a/test/powershell/Get-Member.Tests.ps1 +++ b/test/powershell/Get-Member.Tests.ps1 @@ -209,48 +209,36 @@ Describe "Get-Member DRT Unit Tests" -Tags DRT { $obj = New-Object -TypeName System.Int32 $results = $obj | Get-Member -Static $members = "MaxValue", "MinValue", "Parse", "TryParse" - foreach ($member in $members) + foreach($member in $members) { - foreach ($result in $results) - { - if($result.Name.Equals($member)) - { - return $true - } + if(!($results.Name -contains $member)) + { + Throw "Didn't find: $member" } - return $false } } It "Get the static properties and methods of int instance" { $results = 1 | Get-Member -Static $members = "MaxValue", "MinValue", "Parse", "TryParse" - foreach ($member in $members) + foreach($member in $members) { - foreach ($result in $results) - { - if($result.Name.Equals($member)) - { - return $true - } + if(!($results.Name -contains $member)) + { + Throw "Didn't find: $member" } - return $false } } It "Get the static properties and methods of int instance Wrapped" { $results = [pscustomobject]1 | Get-Member -Static $members = "MaxValue", "MinValue", "Parse", "TryParse" - foreach ($member in $members) + foreach($member in $members) { - foreach ($result in $results) - { - if($result.Name.Equals($member)) - { - return $true - } + if(!($results.Name -contains $member)) + { + Throw "Didn't find: $member" } - return $false } } } @@ -264,33 +252,25 @@ Describe "Get-Member DRT Unit Tests" -Tags DRT { It 'Get hidden members'{ $results = 'abc' | Get-Member -force $hiddenMembers = "psbase", "psextended", "psadapted", "pstypenames", "psobject" - foreach ($member in $hiddenMembers) + foreach($member in $hiddenMembers) { - foreach ($result in $results) - { - if($result.Name.Equals($member)) - { - return $true - } + if(!($results.Name -contains $member)) + { + Throw "Didn't find: $member" } - return $false } } It 'Get Set Property Accessors On PsBase'{ $results = ('abc').psbase | Get-Member -force get_* $expectedMembers = "get_Chars", "get_Length" - foreach ($member in $expectedMembers) + foreach($member in $expectedMembers) { - foreach ($result in $results) - { - if($result.Name.Equals($member)) - { - return $true - } + if(!($results.Name -contains $member)) + { + Throw "Didn't find: $member" } - return $false - } + } } } } \ No newline at end of file From 23f843f76a4a6a555f01c5f9364dd7643a4be115 Mon Sep 17 00:00:00 2001 From: TingLiu6 Date: Sun, 29 May 2016 23:48:10 -0700 Subject: [PATCH 3/4] Remove a invalid TC to Fix issue of Update-TypeData --- test/powershell/Update-TypeData.Tests.ps1 | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/test/powershell/Update-TypeData.Tests.ps1 b/test/powershell/Update-TypeData.Tests.ps1 index 4c4f0e047..c57d40ec4 100644 --- a/test/powershell/Update-TypeData.Tests.ps1 +++ b/test/powershell/Update-TypeData.Tests.ps1 @@ -1,13 +1,3 @@ -Describe "Update-TypeData" { - - Context "Validate Update-Type updates correctly" { - - It "Should not throw upon reloading previous formatting file" { - { Update-TypeData } | Should Not throw - } - } -} - Describe "Update-TypeData basic functionality" -Tags DRT{ BeforeAll { $testfilename = "testfile.ps1xml" From e043c40e246c36f390036e1e28ba0a2e1d923fe2 Mon Sep 17 00:00:00 2001 From: TingLiu6 Date: Thu, 2 Jun 2016 02:01:49 -0700 Subject: [PATCH 4/4] Fixed CR Issues --- test/powershell/Get-Member.Tests.ps1 | 92 ++++++++++++++-------------- 1 file changed, 47 insertions(+), 45 deletions(-) diff --git a/test/powershell/Get-Member.Tests.ps1 b/test/powershell/Get-Member.Tests.ps1 index caf86e2b7..cb5321523 100644 --- a/test/powershell/Get-Member.Tests.ps1 +++ b/test/powershell/Get-Member.Tests.ps1 @@ -42,67 +42,68 @@ Describe "Get-Member" { Describe "Get-Member DRT Unit Tests" -Tags DRT { Context "Verify Get-Member with Class" { - Add-Type -TypeDefinition @" - public class Employee - { - private string firstName; - private string lastName; - private int yearsInMS; - - public string FirstName + BeforeAll { + Add-Type -TypeDefinition @" + public class Employee { - get + private string firstName; + private string lastName; + private int yearsInMS; + + public string FirstName { - return firstName; + get + { + return firstName; + } + set + { + firstName = value; + } } - set - { - firstName = value; - } - } - public string LastName - { - get + public string LastName { - return lastName; + get + { + return lastName; + } + set + { + lastName = value; + } } - set - { - lastName = value; - } - } - public int YearsInMS - { - get + public int YearsInMS { - return yearsInMS; + get + { + return yearsInMS; + } + set + { + yearsInMS = value; + } } - set - { - yearsInMS = value; - } - } - public void GetEmployee() {} + public void GetEmployee() {} - public void SetEmployee() {} + public void SetEmployee() {} - public Employee(string firstName, string lastName, int yearsInMS) - { - this.firstName = firstName; - this.lastName = lastName; - this.yearsInMS = yearsInMS; + public Employee(string firstName, string lastName, int yearsInMS) + { + this.firstName = firstName; + this.lastName = lastName; + this.yearsInMS = yearsInMS; + } } - } "@ - $fileToDeleteName = Join-Path $TestDrive -ChildPath "getMemberTest.ps1xml" - $XMLFile= @" + $fileToDeleteName = Join-Path $TestDrive -ChildPath "getMemberTest.ps1xml" + $XMLFile= @" Employee @@ -147,8 +148,9 @@ Describe "Get-Member DRT Unit Tests" -Tags DRT { "@ - $XMLFile > $fileToDeleteName - Update-TypeData -AppendPath $fileToDeleteName + $XMLFile > $fileToDeleteName + Update-TypeData -AppendPath $fileToDeleteName + } It "Fail to get member without any input" { try