﻿# はじめに

このディレクトリには MakeInitialProgram をテストするためのデータが入っています。
このファイルでは、MakeInitialProgram でこのディレクトリにあるファイルをどのように活用するのかについて説明します。


# CI によるチェック

MakeInitialProgram の単体テストによって、このディレクトリにある *.yml ファイルが使われます。


# 目視によるチェック

MakeInitialProgram や単体テストにバグが入っていないかを確認するために、目視によるチェックを行います。
目視によるチェックを支援するために、MakeTestBinary.bat と ErrorCheck.bat というスクリプトを用意しました。


- MakeTestBinary.bat
outputKip ディレクトリを作り、その中に MakeInitialProgram を用いて kip ファイルを作成します。
これらのファイルはMakeInitialProgramテスト仕様書の9-1 から 9-8 をチェックするために使います。
各バイナリの0x80 番地以降のデータと期待値を比較してください。
出来るだけ本番の kip で検証するために、実際のターゲットで使用する axf ファイルを使用することが望ましいです。
使用する axf ファイルは MakeTestBinary.bat の中の AxfFile 変数を書き換えることで設定できます。
MakeInitialProgramテスト仕様書の期待値は、*_Result.txt にどのように算出されたのかが書かれています。

- ErrorCheck.bat
MakeInitialProgram の異常系のテストを行います。
MakeInitialProgramテスト仕様書のTEST 10 を支援します。
各テストごとに、エラーメッセージを表示させますので、エラーメッセージをテスト仕様書と比較してください。
出来るだけ本番に近い環境で検証するために、実際のターゲットで使用する axf ファイルを使用することが望ましいです。
使用する axf ファイルは ErrorCheck.bat の中の AxfFile 変数を書き換えることで設定できます。

TEST 10-1, 10-2 については、MakeSvcVeneer の結果を自分でファイルを連結させ、MakeInitialProgram の引数に渡す必要があります。
MakeSvcVeneer の実行結果は svcHeader ディレクトリ以下に生成します。

TEST 10-1
svc_BaseId.autogen.h と svcHeader/Include/nn/svc/svc_ServerId.h を自分で連結させて、MakeInitialProgram に渡します。

TEST 10-2
svc_BaseId.autogen.h と svcHeader/Include/nn/svc/svc_DdId.h を自分で連結させて、MakeInitialProgram に渡します。


# メンテナンスについて

システムコールの番号や名前は変更される可能性があります。
テストで見るシステムコールは、以下の基準で決めています。

* ID を24 で割った時の商の変わり目 (余りが0 と 23 のもの)
* カテゴリの最初のシステムコール

システムコールの番号や名前が変更されたら、上記の基準に則って、テストを修正してください。
対象となるテストと対応するファイルは、以下の通りです。

* TEST 9-2: EnableSystemCall.yml
* TEST 9-6: NormalYml1.yml
* TEST 9-7: NormlaYml2.yml

また、SetHeapSize (id = 1) は他のテストでもよく用いられていますので、もし、ID や名前が変更されたら、修正してください。
