using System;
using NUnit.Framework;

namespace TIASshot.Tests {
    /// <summary>
    /// 光源（LightSource）のうち実機なしで確かめられる部分のテスト（層①）．
    ///
    /// 仕様: PLAN_06「守ること」・.claude/verify-profile.md「実機テスト」の後始末
    ///   - Close は消灯せずにポートを閉じる．開いていなければ何もしない（例外にならない）
    ///   - 終了処理・実機テストの後始末から何度呼ばれても止めない
    /// ポートを開いた状態で消灯の命令を送らないことは実機でしか確かめられない（層④．実機テストの cleanup）．
    /// </summary>
    [TestFixture]
    public class LightSourceTests {

        [Test]
        public void Close_ポートが開いていない_例外にならない() {
            var light = new LightSource();
            Assert.DoesNotThrow((Action)(() => light.Close()));
        }

        [Test]
        public void Close_2回呼ぶ_例外にならない() {
            var light = new LightSource();
            Assert.DoesNotThrow((Action)(() => { light.Close(); light.Close(); }));
        }

        [Test]
        public void Close_ポートが開いていない_閉じた状態のまま() {
            var light = new LightSource();
            light.Close();
            Assert.That(light.IsOpen, Is.False);
        }
    }
}
