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); }
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()); }
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); }