コード例 #1
0
        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 つずつ削除する");
        }
コード例 #2
0
        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 したものは一度しか実行されない");
        }