131 lines
3.7 KiB
Text
131 lines
3.7 KiB
Text
|
Describe "Measure-Object" {
|
||
|
$testObject = 1,3,4
|
||
|
|
||
|
It "Should be able to be called without error" {
|
||
|
{ Measure-Object | Out-Null } | Should Not Throw
|
||
|
}
|
||
|
|
||
|
It "Should be able to call on piped input" {
|
||
|
{ $testObject | Measure-Object } | Should Not Throw
|
||
|
}
|
||
|
|
||
|
It "Should be able to count the number of objects input to it" {
|
||
|
$($testObject | Measure-Object).Count | Should Be $testObject.Length
|
||
|
}
|
||
|
|
||
|
It "Should be able to count using the Property switch" {
|
||
|
$expected = $(Get-ChildItem).Length
|
||
|
$actual = $(Get-ChildItem | Measure-Object -Property Length).Count
|
||
|
|
||
|
$actual | Should Be $expected
|
||
|
}
|
||
|
|
||
|
It "Should be able to get additional stats" {
|
||
|
$actual = Get-Process | Measure-Object -Property workingset64 -Minimum -Maximum -Average
|
||
|
|
||
|
$actual.Average | Should BeGreaterThan 0
|
||
|
$actual.Characters | Should BeNullOrEmpty
|
||
|
$actual.Lines | Should BeNullOrEmpty
|
||
|
$actual.Maximum | Should Not BeNullOrEmpty
|
||
|
$actual.Minimum | Should Not BeNullOrEmpty
|
||
|
$actual.Sum | Should BeNullOrEmpty
|
||
|
}
|
||
|
|
||
|
Context "Numeric tests" {
|
||
|
It "Should be able to sum" {
|
||
|
$actual = $testObject | Measure-Object -Sum
|
||
|
$expected = 0
|
||
|
|
||
|
foreach ( $obj in $testObject )
|
||
|
{
|
||
|
$expected += $obj
|
||
|
}
|
||
|
|
||
|
$actual.Sum | Should Be $expected
|
||
|
}
|
||
|
|
||
|
It "Should be able to average" {
|
||
|
$actual = $testObject | Measure-Object -Average
|
||
|
$expected = 0
|
||
|
|
||
|
foreach ( $obj in $testObject )
|
||
|
{
|
||
|
$expected += $obj
|
||
|
}
|
||
|
|
||
|
$expected /= $testObject.length
|
||
|
|
||
|
$actual.Average | Should Be $expected
|
||
|
}
|
||
|
|
||
|
It "Should be able to return a minimum" {
|
||
|
$actual = $testObject | Measure-Object -Minimum
|
||
|
$expected = $testObject[0]
|
||
|
|
||
|
for ($i=0; $i -lt $testObject.length; $i++)
|
||
|
{
|
||
|
if ( $testObject[$i] -lt $expected )
|
||
|
{
|
||
|
|
||
|
$expected = $testObject[$i]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$actual.Minimum | Should Be $expected
|
||
|
}
|
||
|
|
||
|
It "Should be able to return a minimum when multiple objects are the minimum" {
|
||
|
$testMinimum = 1,1,2,4
|
||
|
$actual = $testMinimum | Measure-Object -Minimum
|
||
|
$expected = $testMinimum[0]
|
||
|
|
||
|
for ($i=1; $i -lt $testMinimum.length; $i++)
|
||
|
{
|
||
|
if ( $testMinimum[$i] -lt $expected )
|
||
|
{
|
||
|
|
||
|
$expected = $testMinimum[$i]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$actual.Minimum | Should Be $expected
|
||
|
}
|
||
|
|
||
|
It "Should be able to return a maximum" {
|
||
|
$actual = $testObject | Measure-Object -Maximum
|
||
|
$expected = $testObject[0]
|
||
|
|
||
|
for ($i=1; $i -lt $testObject.length; $i++)
|
||
|
{
|
||
|
if ( $testObject[$i] -gt $expected )
|
||
|
{
|
||
|
|
||
|
$expected = $testObject[$i]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$actual.Maximum | Should Be $expected
|
||
|
}
|
||
|
|
||
|
It "Should be able to return a maximum when multiple objects are the maximum" {
|
||
|
$testMaximum = 1,3,5,5
|
||
|
$actual = $testMaximum | Measure-Object -Maximum
|
||
|
$expected = $testMaximum[0]
|
||
|
|
||
|
for ($i=1; $i -lt $testMaximum.length; $i++)
|
||
|
{
|
||
|
if ( $testMaximum[$i] -gt $expected )
|
||
|
{
|
||
|
|
||
|
$expected = $testMaximum[$i]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$actual.Maximum | Should Be $expected
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Context "String tests" {
|
||
|
$nl = [Environment]::NewLine
|
||
|
|
||
|
$testString = "HAD I the heavens
|