mirror of
https://github.com/PowerShell/PowerShell
synced 2026-06-08 12:12:50 +00:00
* Fix GetType() bad pattern and related issues in tests $var.GetType() can raise an exception in tests so we should check $var before make the call. A large part of the tests does not make this check. I start with searching ".GetType()" but discovered many related issues in tests (reduntant and unneeded tests, "throw" bad pattens, bugs, formattings (sorry!) and so on) - I had to fix them too. * Fix after code review * Second wave of migration GetType() -> BeOfType Removed 'GetType().Name' patterns.
108 lines
3.5 KiB
PowerShell
108 lines
3.5 KiB
PowerShell
Describe "Group-Object DRT Unit Tests" -Tags "CI" {
|
|
It "Test for CaseSensitive switch" {
|
|
$testObject = 'aA', 'aA', 'AA', 'AA'
|
|
$results = $testObject | Group-Object -CaseSensitive
|
|
$results.Count | Should Be 2
|
|
$results.Name.Count | Should Be 2
|
|
$results.Group.Count | Should Be 4
|
|
$results.Name | Should Be aA,AA
|
|
$results.Group | Should Be aA,aA,AA,AA
|
|
,$results | Should BeOfType "System.Array"
|
|
}
|
|
}
|
|
|
|
Describe "Group-Object" -Tags "CI" {
|
|
|
|
BeforeAll {
|
|
$testObject = Get-ChildItem
|
|
}
|
|
|
|
It "Should be called using an object as piped without error with no switches" {
|
|
{$testObject | Group-Object } | Should Not Throw
|
|
}
|
|
|
|
It "Should be called using the InputObject without error with no other switches" {
|
|
{ Group-Object -InputObject $testObject } | Should Not Throw
|
|
}
|
|
|
|
It "Should return three columns- count, name, and group" {
|
|
$actual = Group-Object -InputObject $testObject
|
|
|
|
$actual.Count | Should BeGreaterThan 0
|
|
$actual.Name.Count | Should BeGreaterThan 0
|
|
$actual.Group.Count | Should BeGreaterThan 0
|
|
|
|
}
|
|
|
|
It "Should use the group alias" {
|
|
{ Group-Object -InputObject $testObject } | Should Not Throw
|
|
}
|
|
|
|
It "Should create a collection when the inputObject parameter is used" {
|
|
$actualParam = Group-Object -InputObject $testObject
|
|
$actualParam.Group.Gettype().Name | Should Be 'Collection`1'
|
|
}
|
|
|
|
It "Should return object of 'GroupInfo' type" {
|
|
$actualParam = Group-Object -InputObject $testObject
|
|
$actualParam | Should BeOfType "Microsoft.PowerShell.Commands.GroupInfo"
|
|
}
|
|
|
|
It "Should output an array when piped input is used" {
|
|
$actual = $testObject | Group-Object
|
|
|
|
,$actual | Should BeOfType "System.Array"
|
|
}
|
|
|
|
It "Should have the same output between the group alias and the group-object cmdlet" {
|
|
$actualAlias = Group-Object -InputObject $testObject
|
|
$actualCmdlet = Group-Object -InputObject $testObject
|
|
|
|
$actualAlias.Name[0] | Should Be $actualCmdlet.Name[0]
|
|
$actualAlias.Group[0] | Should Be $actualCmdlet.Group[0]
|
|
}
|
|
|
|
It "Should be able to use the property switch without error" {
|
|
{ $testObject | Group-Object -Property Attributes } | Should Not Throw
|
|
|
|
$actual = $testObject | Group-Object -Property Attributes
|
|
|
|
$actual.Group.Count | Should BeGreaterThan 0
|
|
}
|
|
|
|
It "Should be able to use the property switch on multiple properties without error" {
|
|
{ $testObject | Group-Object -Property Attributes, Length }
|
|
|
|
$actual = $testObject | Group-Object -Property Attributes, Length
|
|
|
|
$actual.Group.Count | Should BeGreaterThan 0
|
|
}
|
|
|
|
It "Should be able to omit members of a group using the NoElement switch without error" {
|
|
{ $testObject | Group-Object -NoElement } | Should Not Throw
|
|
|
|
($testObject | Group-Object -NoElement).Group | Should BeNullOrEmpty
|
|
}
|
|
|
|
It "Should be able to output a hashtable datatype" {
|
|
$actual = $testObject | Group-Object -AsHashTable
|
|
|
|
$actual | Should Not BeNullOrEmpty
|
|
$actual | Should BeOfType "System.Collections.Hashtable"
|
|
}
|
|
|
|
It "Should be able to access when output as hash table" {
|
|
$actual = $testObject | Group-Object -AsHashTable
|
|
|
|
$actual.Keys | Should Not BeNullOrEmpty
|
|
}
|
|
|
|
It "Should throw when attempting to use AsString without AsHashTable" {
|
|
{ $testObject | Group-Object -AsString } | Should Throw
|
|
}
|
|
|
|
It "Should not throw error when using AsString when the AsHashTable was added" {
|
|
{ $testObject | Group-Object -AsHashTable -AsString } | Should Not Throw
|
|
}
|
|
}
|