using System.Collections.Generic;
using NUnit.Framework;
namespace TIASshot.Tests {
/// <summary>
/// ImagingSource の接続先デバイスの選択(IScamDeviceSelector)のテスト(層①.IScam から切り出した判断ロジック).
///
/// 仕様: PLAN_06「カメラの選択」(両機種を同時につないでも指定した機種だけを使う)・IScamDeviceSelector の契約
/// - DeviceName(デバイス状態ファイル名・設定キー)は列挙名から空白を除いたもの
/// - キーが(大文字小文字を区別して)一致する最初の列挙名(空白入りの元の名前)を返す.見つからなければ null
/// </summary>
[TestFixture]
public class IScamDeviceSelectorTests {
[Test]
public void ToDeviceKey_空白を除く() {
Assert.That(IScamDeviceSelector.ToDeviceKey("DFK 33UX178"), Is.EqualTo("DFK33UX178"));
}
[Test]
public void ToDeviceKey_複数の空白_すべて除く() {
Assert.That(IScamDeviceSelector.ToDeviceKey(" DFK 33 UX178 "), Is.EqualTo("DFK33UX178"));
}
[Test]
public void ToDeviceKey_null_null() {
Assert.That(IScamDeviceSelector.ToDeviceKey(null), Is.Null);
}
[Test]
public void FindDeviceName_キーが一致する元の名前を返す() {
var names = new[] { "DFK 23UX249", "DFK 33UX178" };
Assert.That(IScamDeviceSelector.FindDeviceName(names, "DFK33UX178"), Is.EqualTo("DFK 33UX178"));
}
[Test]
public void FindDeviceName_同じキーが複数_最初の名前() {
var names = new[] { "DFK 33UX178", "DFK33UX178" };
Assert.That(IScamDeviceSelector.FindDeviceName(names, "DFK33UX178"), Is.EqualTo("DFK 33UX178"));
}
[Test]
public void FindDeviceName_大文字小文字が違う_一致しない() {
var names = new[] { "DFK 33UX178" };
Assert.That(IScamDeviceSelector.FindDeviceName(names, "dfk33ux178"), Is.Null);
}
[Test]
public void FindDeviceName_一致なし_null() {
var names = new[] { "DFK 23UX249" };
Assert.That(IScamDeviceSelector.FindDeviceName(names, "DFK33UX178"), Is.Null);
}
[Test]
public void FindDeviceName_一覧がnull_null() {
Assert.That(IScamDeviceSelector.FindDeviceName(null, "DFK33UX178"), Is.Null);
}
[Test]
public void FindDeviceName_一覧が空_null() {
Assert.That(IScamDeviceSelector.FindDeviceName(new List<string>(), "DFK33UX178"), Is.Null);
}
[Test]
public void FindDeviceName_キーがnull_null() {
Assert.That(IScamDeviceSelector.FindDeviceName(new[] { "DFK 33UX178" }, null), Is.Null);
}
[Test]
public void FindDeviceName_キーが空_null() {
// 一覧に空の名前があっても空のキーには一致させない
Assert.That(IScamDeviceSelector.FindDeviceName(new[] { "", "DFK 33UX178" }, ""), Is.Null);
}
[Test]
public void FindDeviceName_一覧中のnullと空を飛ばす() {
var names = new[] { null, "", "DFK 33UX178" };
Assert.That(IScamDeviceSelector.FindDeviceName(names, "DFK33UX178"), Is.EqualTo("DFK 33UX178"));
}
}
}