public void TestDisconnect() { string seq = ""; Action action1 = () => { seq += "1"; }; Action action2 = () => { seq += "2"; }; Action action3 = () => { seq += "3"; }; Action action4 = () => { seq += "4"; }; var signal = new Signal_A(); signal.Connect(action1); signal.Connect(action1); signal.Connect(action2); signal.Disconnect(action1); signal.Disconnect(action3); signal.Emit(); Assert.That(seq, Is.EqualTo("12"), "同じ delegate が複数登録されていた場合、Disconnect は 1 つずつ削除する"); signal.Connect(action3); signal.ConnectOnce(action3); signal.ConnectOnce(action4); signal.Disconnect(action3); signal.Emit(); Assert.That(seq, Is.EqualTo("12124"), "同じ delegate が Connect & ConnectOnce されていた場合は双方から 1 つずつ削除する"); }
public void TestConnectOnce() { string seq = ""; Action action1 = () => { seq += "1"; }; Action action2 = () => { seq += "2"; }; Action action3 = () => { seq += "3"; }; var signal = new Signal_A(); signal.Connect(action1); signal.ConnectOnce(action2); signal.Connect(action3); signal.Emit(); Assert.That(seq, Is.EqualTo("132"), "ConnectOnce の方が後に実行される"); signal.Emit(); Assert.That(seq, Is.EqualTo("13213"), "ConnectOnce したものは一度しか実行されない"); }