Module/ArxmlAutomation-Basic-Validation.psm1
function Confirm-SameArObjContainer{ param( [AR430._AR430BaseType[]] $Items, [int] $Depth=-1 ) process{ $pass=$True $sortedItems=$Items|Sort-Object {$_.GetAutosarPath().Length}|Foreach-Object {,@($_.GetAutosarPath() -split "/")} $objectMeasures=($sortedItems|ForEach-Object {$_.Count}|Measure-Object -Maximum -Minimum) if($Depth -gt 0 -and $objectMeasures.Maximum-$objectMeasures.Minimum -gt $Depth){ $pass=$False } if($pass){ $DepthMeasured=0 for($i=0;$i-lt $objectMeasures.Minimum;$i++){ # loop if(($sortedItems|ForEach-Object{ $_[$i] }|Select-Object -Unique).Count -ne 1){ if($DepthMeasured -eq $Depth){ $pass=$False break; } else{ $DepthMeasured++ } } } } if(-not $pass){ Write-Warning "$($items|Foreach-Object{$_.GetAutosarPath()}) container different" Write-Error "Same arobj container validation failed for $items." } } } function Assert-ArObjType{ param( [Parameter(ValueFromPipeline)] $InputObject, [Parameter(ParameterSetName="MatchString" , Position=0)] [string[]] $AssertTypeMatch, [Parameter(ParameterSetName="MatchType", Position=0)] [type[]] $AssertType, [switch] $AllowIgnore, [switch] $ReturnBool ) process{ if($PSCmdlet.ParameterSetName -eq ("MatchString")){ if($InputObject.GetType().Name|Select-String -CaseSensitive -Pattern ($AssertTypeMatch|ForEach-Object{ "(?m)^$_$" })){ if($ReturnBool){ return $true } else{ return $InputObject } } elseif(-not $AllowIgnore){ throw "$InputObject is not part of AssertType $AssertType" } elseif($ReturnBool){ return $false } } else{ if($AssertType|Where-Object{$InputObject -is $_}){ if($ReturnBool){ return $true } else{ return $InputObject } } elseif($ReturnBool){ return $false } } } } |