Example #1
0
        public void ReducerTest()
        {
            var reducer = new SampleReducer();
            var store   = new Store <State>(new State(), reducer);

            Assert.AreEqual(0, reducer.count);
            store.Dispatch(new SampleAction());
            Assert.AreEqual(1, reducer.count);
        }
Example #2
0
        public void MiddlewareTest()
        {
            var        reducer   = new SampleReducer();
            var        store     = new Store <State>(new State(), reducer);
            List <int> positions = new List <int>();

            Middleware middleware1 = _store =>
            {
                return(next =>
                {
                    return action =>
                    {
                        positions.Add(1);
                        next(action);
                        positions.Add(2);
                        return "middleware1";
                    };
                });
            };
            Middleware middleware2 = _store =>
            {
                return(next =>
                {
                    return action =>
                    {
                        positions.Add(3);
                        next(action);
                        positions.Add(4);
                        return "middleware2";
                    };
                });
            };

            store.ApplyMiddlewares(middleware1);

            Assert.AreEqual("middleware1", store.Dispatch(new SampleAction()));
            Assert.AreEqual(1, reducer.count);
            Assert.AreEqual(2, positions.Count);
            Assert.AreEqual(new[] { 1, 2 }, positions.ToArray());

            positions.Clear();
            store.ApplyMiddlewares(middleware1, middleware2);

            Assert.AreEqual("middleware1", store.Dispatch(new SampleAction()));
            Assert.AreEqual(2, reducer.count);
            Assert.AreEqual(4, positions.Count);
            Assert.AreEqual(new[] { 1, 3, 4, 2 }, positions.ToArray());
        }
Example #3
0
    public void ReducerSubscribeTest()
    {
        var store   = new Store <State>(new State());
        var reducer = new SampleReducer();

        store.AddReducer <Action>(reducer.Reduce);

        store.Dispatch(new Action());
        Assert.AreEqual(1, reducer.Count);

        store.Dispatch(new Action());
        Assert.AreEqual(2, reducer.Count);

        store.RemoveReducer <Action>(reducer.Reduce);
        store.Dispatch(new Action());
        Assert.AreEqual(2, reducer.Count);
    }