示例#1
0
    public void BindTest()
    {
        EventHolder holder  = new EventHolder();
        EventCall   call    = new EventCall();
        var         handle1 = call.Bind(holder);

        //イベント
        Assert.IsTrue(call.Message(TestEvent.Event1));
        Assert.AreEqual(holder.value, "event1");
        //型が違う
        Assert.IsFalse(call.Message(TestEvent.Event1, "test"));
        Assert.AreNotEqual(holder.value, "test");
        //イベントを発火
        Assert.IsTrue(call.Message(TestEvent.Event2, "event2"));
        Assert.AreEqual(holder.value, "event2");

        //再びバインドするため二回イベント呼ばれる
        call.Bind(holder);
        holder.value = "";
        Assert.IsTrue(call.Broadcast(TestEvent.Event3, 123));
        Assert.AreEqual(holder.value, "123123");

        //一つ目のバインドを解除するので一回だけ呼ばれる
        handle1.Dispose();
        holder.value = "";
        Assert.IsTrue(call.Broadcast(TestEvent.Event3, 123));
        Assert.AreEqual(holder.value, "123");
    }