Guard native world taps and zoom larger counting boards through real touch
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
param([Parameter(Mandatory)][string]$EvidenceDir,[string]$Source=(Join-Path $PSScriptRoot 'final-common.ps1'))
|
||||
$ErrorActionPreference='Stop'
|
||||
New-Item -ItemType Directory -Path $EvidenceDir -Force|Out-Null
|
||||
$ast=[Management.Automation.Language.Parser]::ParseFile($Source,[ref]$null,[ref]$null)
|
||||
foreach($name in @('WorldSafe','TapBall')){
|
||||
$function=$ast.Find({param($n)$n-is[Management.Automation.Language.FunctionDefinitionAst]-and$n.Name-eq$name},$true)
|
||||
if($function){. ([scriptblock]::Create($function.Extent.Text))}
|
||||
}
|
||||
$script:taps=0
|
||||
function BallPoint($Board,[string]$Id){return $script:point}
|
||||
function Step { $script:taps++ }
|
||||
$checks=@(foreach($case in @(@{point=@(1200,500);safe=$true},@{point=@(312,108);safe=$false},@{point=@(-30,500);safe=$false},@{point=@(2500,500);safe=$false},@{point=@(1200,900);safe=$false})){
|
||||
$script:point=$case.point;$script:taps=0;$rejected=$false
|
||||
try{TapBall 'probe' $null 'known-id'}catch{$rejected=$true}
|
||||
@{point=$case.point;expectedSafe=$case.safe;rejected=$rejected;taps=$script:taps;passed=if($case.safe){!$rejected-and$script:taps-eq1}else{$rejected-and$script:taps-eq0}}
|
||||
})
|
||||
$passed=@($checks|Where-Object passed -ne $true).Count-eq0
|
||||
@{source=$Source;passed=$passed;checks=$checks}|ConvertTo-Json -Depth 6|Set-Content (Join-Path $EvidenceDir 'safe-tap-result.json')
|
||||
if(!$passed){exit 1};exit 0
|
||||
Reference in New Issue
Block a user