#if SELFTEST
using System;
using System.IO;
using NUnit.Framework;
namespace TIASshot.Tests {
/// <summary>
/// 一時設定ファイルの準備(SelfTestConfig.Prepare)の書き出し先のファイル名のテスト.
///
/// 仕様: .claude/verify-profile.md「実機テスト」の後始末(実機テストの一時設定ファイルは config.hwtest.xml)・PLAN_06「守ること」
/// - fileName を省略したときは従来どおり config.selftest.xml に書き出す
/// - fileName に config.hwtest.xml を渡すとそのファイルに書き出し,config.selftest.xml は作らない
/// - 同梱の config.xml は読むだけ.作業は一時フォルダで行い,テストの終わりに削除する
/// 本クラスは SELFTEST 構成(Debug|x64)でのみコンパイルされる.
/// </summary>
[TestFixture]
public class SelfTestConfigTests {
private string _sourceDir;
private string _workDir;
[SetUp]
public void SetUp() {
_sourceDir = Path.GetFullPath(Path.Combine(TestContext.CurrentContext.TestDirectory, "..", "..", "..", "..", "TIASshot"));
Assert.That(File.Exists(Path.Combine(_sourceDir, "config.xml")), Is.True, $"前提: 同梱 config.xml があること: {_sourceDir}");
_workDir = Path.Combine(Path.GetTempPath(), "TIASshot-it", "selftestconfig-" + Guid.NewGuid().ToString("N"));
}
[TearDown]
public void TearDown() {
if (Directory.Exists(_workDir)) Directory.Delete(_workDir, true);
}
private SelfTestConfig.Prepared Prepare(string fileName) {
var source = Path.Combine(_sourceDir, "config.xml");
return fileName == null
? SelfTestConfig.Prepare(source, _sourceDir, _workDir)
: SelfTestConfig.Prepare(source, _sourceDir, _workDir, null, fileName);
}
[Test]
public void Prepare_ファイル名の省略_configSelftestXmlのパスを返す() {
var prepared = Prepare(null);
Assert.That(prepared.ConfigPath, Is.EqualTo(Path.Combine(_workDir, "config.selftest.xml")));
}
[Test]
public void Prepare_ファイル名の省略_configSelftestXmlが作られる() {
Prepare(null);
Assert.That(File.Exists(Path.Combine(_workDir, "config.selftest.xml")), Is.True);
}
[Test]
public void Prepare_configHwtestXmlを指定_そのパスを返す() {
var prepared = Prepare("config.hwtest.xml");
Assert.That(prepared.ConfigPath, Is.EqualTo(Path.Combine(_workDir, "config.hwtest.xml")));
}
[Test]
public void Prepare_configHwtestXmlを指定_そのファイルが作られる() {
Prepare("config.hwtest.xml");
Assert.That(File.Exists(Path.Combine(_workDir, "config.hwtest.xml")), Is.True);
}
[Test]
public void Prepare_configHwtestXmlを指定_configSelftestXmlは作られない() {
Prepare("config.hwtest.xml");
Assert.That(File.Exists(Path.Combine(_workDir, "config.selftest.xml")), Is.False);
}
[Test]
public void Prepare_configHwtestXmlを指定_保存先は作業フォルダ配下() {
var prepared = Prepare("config.hwtest.xml");
Assert.That(Path.GetFullPath(prepared.SaveRoot), Does.StartWith(Path.GetFullPath(_workDir)));
}
}
}
#endif