TypeClass/tst/TypeClass.Tests.ps1
Import-Module $PSScriptRoot\..\src\TypeClass.psm1 Describe "Test-Value" { It "Given '<value>', which is a value, string, enum, scriptblock or array with a single item of those types it returns `$true" -TestCases @( @{ Value = 1 }, @{ Value = 2 }, @{ Value = 1.2 }, @{ Value = 1.3 }, @{ Value = "abc"}, @{ Value = [System.DayOfWeek]::Monday}, @{ Value = @("abc")}, @{ Value = @(1)}, @{ Value = {abc}} ) { param($Value) Test-Value -Value $Value | Verify-True } It "Given `$null it returns `$false" { Test-Value -Value $null | Verify-False } It "Given reference type (not string) '<value>' it returns `$false" -TestCases @( @{ Value = @() }, @{ Value = @(1,2) }, @{ Value = @{} }, @{ Value = [type] }, @{ Value = (New-Object -TypeName Diagnostics.Process) } ) { param($Value) Test-Value -Value $Value | Verify-False } } #number Describe "Test-DecimalNumber" { It "Given a number it returns `$true" -TestCases @( @{ Value = 1.1; }, @{ Value = [double] 1.1; }, @{ Value = [float] 1.1; }, @{ Value = [single] 1.1; }, @{ Value = [decimal] 1.1; } ) { param ($Value) Test-DecimalNumber -Value $Value | Verify-True } It "Given a string it returns `$false" { Test-DecimalNumber -Value "abc" | Verify-False } } Describe "Test-ScriptBlock" { It "Given a scriptblock '{<value>}' it returns `$true" -TestCases @( @{ Value = {} }, @{ Value = {abc} }, @{ Value = { Get-Process -Name Idle } } ) { param ($Value) Test-ScriptBlock -Value $Value | Verify-True } It "Given a value '<value>' that is not a scriptblock it returns `$false" -TestCases @( @{ Value = $null }, @{ Value = 1 }, @{ Value = 'abc' }, @{ Value = [Type] } ) { param ($Value) Test-ScriptBlock -Value $Value | Verify-False } } # -- KeyValue collections Describe "Test-Hashtable" { It "Given hashtable '<value>' it returns `$true" -TestCases @( @{Value = @{} } @{Value = @{Name="Jakub"} } ) { param($Value) Test-Hashtable -Value $Value | Verify-True } It "Given a value '<value>' which is not a hashtable it returns `$false" -TestCases @( @{ Value = "Jakub" } @{ Value = 1..4 } ) { param ($Value) Test-Hashtable -Value $Value | Verify-False } } Describe "Test-Dictionary" { It "Given dictionary '<value>' it returns `$true" -TestCases @( @{ Value = New-Object "Collections.Generic.Dictionary[string,object]" } @{ Value= New-Dictionary @{Name="Jakub"} } ) { param($Value) Test-Dictionary -Value $Value | Verify-True } It "Given a value '<value>' which is not a dictionary it returns `$false" -TestCases @( @{ Value = "Jakub" } @{ Value = 1..4 } ) { param ($Value) Test-Dictionary -Value $Value | Verify-False } } # -- collection Describe "Test-Collection" { It "Given a collection '<value>' of type '<type>' implementing IEnumerable it returns `$true" -TestCases @( @{ Value = "abc" } @{ Value = 1,2,3 } @{ Value = [Collections.Generic.List[Int]](1,2,3) } ) { param($Value) Test-Collection -Value $Value | Verify-True } It "Given an object '<value>' of type '<type>' that is not a collection it returns `$false" -TestCases @( @{ Value = 1 } @{ Value = New-Object -TypeName Diagnostics.Process } ) { param($Value) Test-Collection -Value $Value | Verify-False } } |