From 919e7728890b032f8f6f82d2cd84bd2e16d1c1cb Mon Sep 17 00:00:00 2001 From: GitHub Copilot Date: Sat, 14 Mar 2026 13:34:43 +0000 Subject: [PATCH] =?UTF-8?q?test:=20IntermissionCommandCmd=20=E3=81=AE?= =?UTF-8?q?=E3=83=A6=E3=83=8B=E3=83=83=E3=83=88=E3=83=86=E3=82=B9=E3=83=88?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ヘルプドキュメントの記載に基づき、IntermissionCommandCmd の ユニットテスト 6 件を OptionAndEventCmdTests.cs に追加。 テスト内容: - コマンド登録: IntermissionCommand(name) = file のグローバル変数が設定される - コマンド削除: 「削除」指定で変数が削除される - コマンド上書き: 同名コマンドに対して再実行するとファイル名が更新される - 引数不足エラー: ArgNum != 3 の場合に -1 が返る - 引数なしエラー - 未定義コマンドの削除: エラーなく正常終了する Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../CmdDatas/OptionAndEventCmdTests.cs | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/SRC.Sharp/SRCCoreTests/CmdDatas/OptionAndEventCmdTests.cs b/SRC.Sharp/SRCCoreTests/CmdDatas/OptionAndEventCmdTests.cs index 077ef7a6a..f718f04a5 100644 --- a/SRC.Sharp/SRCCoreTests/CmdDatas/OptionAndEventCmdTests.cs +++ b/SRC.Sharp/SRCCoreTests/CmdDatas/OptionAndEventCmdTests.cs @@ -211,5 +211,84 @@ public void SetRelationCmd_WrongArgCount_ReturnsError() var result = cmd.Exec(); Assert.AreEqual(-1, result); } + + // ────────────────────────────────────────────── + // IntermissionCommandCmd + // ヘルプ: インターミッションのメニューに新規コマンドを追加する + // 書式: IntermissionCommand command file + // IntermissionCommand command 削除 + // ────────────────────────────────────────────── + + [TestMethod] + public void IntermissionCommandCmd_RegistersCommand_SetsGlobalVariable() + { + // ヘルプ: プレイヤーがコマンドcommandを選択するとイベントファイルfileが実行される + var src = CreateSrc(); + var cmd = CreateCmd(src, "IntermissionCommand あらすじ あらすじ.eve"); + var result = cmd.Exec(); + + Assert.AreEqual(1, result); + Assert.IsTrue(src.Expression.IsGlobalVariableDefined("IntermissionCommand(あらすじ)")); + Assert.AreEqual("あらすじ.eve", src.Expression.GetValueAsString("IntermissionCommand(あらすじ)")); + } + + [TestMethod] + public void IntermissionCommandCmd_DeleteCommand_UndefinresVariable() + { + // ヘルプ: 「削除」と指定することで追加したインターミッションコマンドを削除できる + var src = CreateSrc(); + src.Expression.DefineGlobalVariable("IntermissionCommand(あらすじ)"); + src.Expression.SetVariableAsString("IntermissionCommand(あらすじ)", "あらすじ.eve"); + + var cmd = CreateCmd(src, "IntermissionCommand あらすじ 削除"); + var result = cmd.Exec(); + + Assert.AreEqual(1, result); + Assert.IsFalse(src.Expression.IsGlobalVariableDefined("IntermissionCommand(あらすじ)")); + } + + [TestMethod] + public void IntermissionCommandCmd_OverwriteExistingCommand_UpdatesFile() + { + // ヘルプ: 同じcommandに対してIntermissionCommandコマンドを再度実行すればファイル名を変更できる + var src = CreateSrc(); + src.Expression.DefineGlobalVariable("IntermissionCommand(あらすじ)"); + src.Expression.SetVariableAsString("IntermissionCommand(あらすじ)", "旧ファイル.eve"); + + var cmd = CreateCmd(src, "IntermissionCommand あらすじ 新ファイル.eve"); + cmd.Exec(); + + Assert.AreEqual("新ファイル.eve", src.Expression.GetValueAsString("IntermissionCommand(あらすじ)")); + } + + [TestMethod] + public void IntermissionCommandCmd_WrongArgCount_ReturnsError() + { + // ArgNum != 3 の場合はエラー (引数が2つ以下 or 4つ以上) + var src = CreateSrc(); + var cmd = CreateCmd(src, "IntermissionCommand あらすじ"); + var result = cmd.Exec(); + Assert.AreEqual(-1, result); + } + + [TestMethod] + public void IntermissionCommandCmd_NoArgs_ReturnsError() + { + var src = CreateSrc(); + var cmd = CreateCmd(src, "IntermissionCommand"); + var result = cmd.Exec(); + Assert.AreEqual(-1, result); + } + + [TestMethod] + public void IntermissionCommandCmd_DeleteNonExistent_NoError() + { + // 未定義のコマンドを削除しようとしても例外が出ない + var src = CreateSrc(); + var cmd = CreateCmd(src, "IntermissionCommand 存在しない 削除"); + var result = cmd.Exec(); + Assert.AreEqual(1, result); + Assert.IsFalse(src.Expression.IsGlobalVariableDefined("IntermissionCommand(存在しない)")); + } } }