1 // ================================================================================================
3 // StatusManagerのテストクラスソース。</summary>
5 // <copyright file="StatusManagerTest.cs" company="honeplusのメモ帳">
6 // Copyright (C) 2012 Honeplus. All rights reserved.</copyright>
9 // ================================================================================================
11 namespace Honememo.Utilities
14 using Microsoft.VisualStudio.TestTools.UnitTesting;
17 /// <see cref="StatusManager<T>"/>のテストクラスです。
20 public class StatusManagerTest
25 /// <see cref="StatusManager<T>.Status"/>プロパティテストケース。
28 public void TestStatus()
30 var sm = new StatusManager<string>();
33 Assert.IsNull(sm.Status);
37 Assert.AreEqual("test", sm.Status);
39 // 更新時はChangedイベントが呼ばれる
41 sm.Changed += new EventHandler(delegate { called = true; });
43 Assert.IsTrue(called);
44 Assert.AreEqual("test2", sm.Status);
46 // Switchで値が設定されていた場合、Statusを更新すると戻らなくなる
47 sm.Switch("switchstatus");
48 Assert.AreEqual("switchstatus", sm.Status);
49 sm.Status = "newstatus";
50 Assert.AreEqual("newstatus", sm.Status);
52 Assert.AreEqual("newstatus", sm.Status);
60 /// <see cref="StatusManager<T>.Switch"/>,
61 /// <see cref="StatusManager<T>.Dispose"/>メソッドテストケース。
64 public void TestSwitch()
66 var sm = new StatusManager<string>();
69 Assert.IsNull(sm.Status);
71 // Switchでステータスが更新、Disposeで元の値に戻る
72 using (var sm1 = sm.Switch("switch1"))
74 Assert.AreEqual("switch1", sm.Status);
77 using (var sm2 = sm.Switch("switch2"))
79 Assert.AreEqual("switch2", sm.Status);
81 using (var sm3 = sm.Switch("switch3"))
83 Assert.AreEqual("switch3", sm.Status);
86 Assert.AreEqual("switch2", sm.Status);
89 Assert.AreEqual("switch1", sm.Status);
91 // 設定時と戻り時はChangedイベントが呼ばれる
93 sm.Changed += new EventHandler(delegate { ++count; });
94 Assert.AreEqual(0, count);
95 using (var sm2 = sm.Switch("switch4"))
97 Assert.AreEqual(1, count);
98 Assert.AreEqual("switch4", sm.Status);
101 Assert.AreEqual(2, count);
102 Assert.AreEqual("switch1", sm.Status);
105 Assert.IsNull(sm.Status);
109 /// <see cref="StatusManager<T>.Clear"/>メソッドテストケース。
112 public void TestClear()
114 var sm = new StatusManager<int>();
117 Assert.AreEqual(0, sm.Status);
119 Assert.AreEqual(5, sm.Status);
121 Assert.AreEqual(0, sm.Status);
123 // Switchで値が設定されていた場合、Clearすると戻らなくなる
125 Assert.AreEqual(10, sm.Status);
127 Assert.AreEqual(20, sm.Status);
129 Assert.AreEqual(0, sm.Status);
131 Assert.AreEqual(0, sm.Status);