example.ps1
$ErrorActionPreference = "Stop" Import-Module "$PSScriptRoot\Requirements.psd1" -Force $requirements = @( @{ Name = "Resource 1" Describe = "Resource 1 is present in the system" Test = { $mySystem -contains 1 } Set = { $mySystem.Add(1) | Out-Null; Start-Sleep 1 } }, @{ Name = "Resource 2" Describe = "Resource 2 is present in the system" Test = { $mySystem -contains 2 } Set = { $mySystem.Add(2) | Out-Null; Start-Sleep 1 } }, @{ Name = "Resource 3" Describe = "Resource 3 is present in the system" Test = { $mySystem -contains 3 } Set = { throw "This should not have been reached!"; Start-Sleep 1 } }, @{ Name = "Resource 4" Describe = "Resource 4 is present in the system" Test = { $mySystem -contains 4 } Set = { throw "This should not have been reached!"; Start-Sleep 1 } }, @{ Name = "Resource 5" Describe = "Resource 5 is present in the system" Test = { $mySystem -contains 5 } Set = { $mySystem.Add(5) | Out-Null; Start-Sleep 1 } } ) # demo using Format-Table $mySystem = [System.Collections.ArrayList]::new() $mySystem.Add(3) | Out-Null $mySystem.Add(4) | Out-Null $requirements | Invoke-Requirement | Format-Table # demo using Format-Checklist $mySystem = [System.Collections.ArrayList]::new() $mySystem.Add(3) | Out-Null $mySystem.Add(4) | Out-Null $requirements | Invoke-Requirement | Format-Checklist # demo using Format-CallStack $mySystem = [System.Collections.ArrayList]::new() $mySystem.Add(3) | Out-Null $mySystem.Add(4) | Out-Null $requirements | Invoke-Requirement | Format-CallStack # demo using Format-Callstack with nested requirements $mySystem = [System.Collections.ArrayList]::new() $complexRequirements = @( @{ Name = "Resource 1" Describe = "Resource 1 is present in the system" Test = { $mySystem -contains 1 } Set = { $mySystem.Add(1) | Out-Null; Start-Sleep 1 } }, @{ Name = "Resource 2" Describe = "Resource 2 is present in the system" Test = { $mySystem -contains 3 -and $mySystem -contains 4 } Set = { @( @{ Name = "Resource 3" Describe = "Resource 3 is present in the system" Test = { $mySystem -contains 3 } Set = { $mySystem.Add(3) | Out-Null; Start-Sleep 1 } }, @{ Name = "Resource 4" Describe = "Resource 4 is present in the system" Test = { $mySystem -contains 4 } Set = { $mySystem.Add(4) | Out-Null; Start-Sleep 1 } } ) | Invoke-Requirement } }, @{ Name = "Resource 5" Describe = "Resource 5 is present in the system" Test = { $mySystem -contains 5 } Set = { $mySystem.Add(5) | Out-Null; Start-Sleep 1 } } ) $complexRequirements | Invoke-Requirement | Format-CallStack |