__tests__/PSKit.GetPropertyStats.tests.ps1
Import-Module $PSScriptRoot/../PSKit.psd1 -Force Describe "PSKit tests - Get-PropertyStat -InputObject" { BeforeAll { $script:data = ConvertFrom-Csv @" Name,Age Jane,10 John,5 ,15 "@ <# ColumnName DataType HasNulls Min Max Avg Sum ---------- -------- -------- --- --- --- --- Name string False Age int False 5 15 10 30 #> } It "Should calculate property stats when piped" { $actual = $data | Get-PropertyStats $actual.Count | Should Be 2 $actual[0].ColumnName | Should BeExactly 'Name' $actual[0].DataType | Should BeExactly 'string' $actual[0].HasNulls | Should Be $true $actual[0].Min | Should Be $null $actual[0].Max | Should Be $null $actual[0].Median | Should Be $null $actual[0].Sum | Should Be $null $actual[0].StandardDeviation | Should Be $null $actual[0].Variance | Should Be $null $actual[1].ColumnName | Should BeExactly 'Age' $actual[1].DataType | Should BeExactly 'int' $actual[1].HasNulls | Should Be $false $actual[1].Min | Should Be 5 $actual[1].Max | Should Be 15 $actual[1].Median | Should Be 10 $actual[1].Sum | Should Be 30 $actual[1].StandardDeviation | Should Be 5 $actual[1].Variance | Should Be 25 } It "Should calculate property stats" { $actual = Get-PropertyStats -InputObject $data $actual.Count | Should Be 2 $actual[0].ColumnName | Should BeExactly 'Name' $actual[0].DataType | Should BeExactly 'string' $actual[0].HasNulls | Should Be $true $actual[0].Min | Should Be $null $actual[0].Max | Should Be $null $actual[0].Median | Should Be $null $actual[0].StandardDeviation | Should Be $null $actual[0].Variance | Should Be $null $actual[0].Sum | Should Be $null $actual[1].ColumnName | Should BeExactly 'Age' $actual[1].DataType | Should BeExactly 'int' $actual[1].HasNulls | Should Be $false $actual[1].Min | Should Be 5 $actual[1].Max | Should Be 15 $actual[1].Median | Should Be 10 $actual[1].StandardDeviation | Should Be 5 $actual[1].Variance | Should Be 25 $actual[1].Sum | Should Be 30 } It "Should calculate Range" { # $actual = (30..50) | ForEach-Object { $i = $_; "" | Select-Object @{name = "P1"; e = { $i } } } | Get-PropertyStats $actual = (30..50) | ConvertTo-Property | Get-PropertyStats $actual.Min | Should Be 30 $actual.Range | Should Be 20 } } |