예제 #1
0
    public void ListenInitialState()
    {
        var container   = new StateContainer(new IndexedDictionary <string, object>());
        var listenCalls = 0;

        container.Listen("players/:id/position/:attribute", (DataChange change) => {
            listenCalls++;
        });

        container.Listen("turn", (DataChange change) => {
            listenCalls++;
        });

        container.Listen("game/turn", (DataChange change) => {
            listenCalls++;
        });

        container.Listen("messages/:number", (DataChange change) => {
            listenCalls++;
        });

        container.Set(GetRawData());

        Assert.AreEqual(9, listenCalls);
    }
예제 #2
0
    public void ListenAddString()
    {
        var newData = GetRawData();

        newData ["some_string"] = "hello!";

        var listenCalls = 0;

        container.Listen("some_string", (DataChange change) => {
            listenCalls++;
            Assert.AreEqual("add", change.operation);
            Assert.AreEqual("hello!", change.value);
        });

        container.Set(newData);
        Assert.AreEqual(1, listenCalls);
    }
예제 #3
0
    public void ListenWithImmediate()
    {
        var container   = new StateContainer(GetRawData());
        var listenCalls = 0;

        container.Listen("players/:id/position/:attribute", (DataChange change) => {
            listenCalls++;
        }, true);

        container.Listen("turn", (DataChange change) => {
            listenCalls++;
        }, true);

        container.Listen("game/turn", (DataChange change) => {
            listenCalls++;
        }, true);

        container.Listen("messages/:number", (DataChange change) => {
            listenCalls++;
        }, true);

        Assert.AreEqual(9, listenCalls);
    }