ビルド、シミュレーター起動を行うコンビニエンスクラスCheckerの紹介。
こちらはプロジェクトに登録されている全デバイスに対して処理をする関数。
using namespace AutomationConnectIQ.Lib;
$check = New-Object Checker -Property @{
Key = "developer_key"
Project = "monkey.jungle"
}
$outputDir = "output"
function Capture {
$time.Action([TimeSimulator+ExecuteType]::Start)
Start-sleep -Milliseconds 500
$time.Action([TimeSimulator+ExecuteType]::Pause)
$bitmap = $sim.Capture()
$bitmap.Save($(Join-Path $outputDir $device".png"))
$time.Action([TimeSimulator+ExecuteType]::Stop)
}
# 全デバイスでビルドチェック処理を実行
$check.Check($true,
{
#デバイス名とシミュレーターオブジェクトをパラメータで受け取る
Param($device, $sim)
$sim.SetGPSPosition(35.685233, 139.752485)
$sim.SetLanguage([Simulator+Language]::English)
$time = $sim.CreateTime()
$time.Open()
$time.Time = Get-Date "2019-12-31 13:59:59"
Capture
$time.Close()
return $true
},
{
# 前処理
Param($sim)
$sim.SetBatteryStatus(50, $false)
},
{
# 後処理
Param($sim)
}
)
前半部分17行目までは、AutomationConnectIQ-サンプル8と同じ。
- 20行目:
プロジェクトに登録されている全デバイスに対してチェックを実施する関数は、引数を4つ使う。
第1引数は、第2引数で指定されたシミュレーションの動作関数の返り値がfalseの場合に、チェック処理を中止するかどうかの指定。ただPowerShellのスクリプトブロックからの返り値がうまくC#側に伝わらないのか、$falseでリターンしても処理が続行してしまう問題がある。
なので、この第1引数は$trueでも$falseでもどちらでも特に問題ないようだ。
第2引数は前回と同じ内容なのでここでは割愛。
第3引数、第4引数は、前処理、後処理用のスクリプトブロックを記述する部分で、C#ではdelegate void PrePostAction(Simulator sim)
で宣言されているdelegateをスクリプトブロックで記述してもらうことになる。また$nullを指定し処理しないことも可能。
なお、上記スクリプトを動かすと、outputフォルダにこんな感じにウォッチフェイスのキャプチャー画面が取得できるようになる。
こんな感じでそろえておけば、画面構成に問題ないかなども、一目で確認できる。
Ver0.2ベースのサンプルはこれでおしまい。
コメント