public void StateSelectTest() { var m11 = new MonadPrimus.State <string, int>(x => new MonadPrimus.StateTuple <int, string>(int.Parse(x) + 1, x.ToString() + "1")); var m12 = m11.Select(x => x.ToString() + "2"); var res11 = m12.RunState("1"); Assert.AreEqual("22", res11.Value); Assert.AreEqual("11", res11.State); }
public void StateSelectManyTest01() { var m11 = new MonadPrimus.State <string, int>(x => new MonadPrimus.StateTuple <int, string>(int.Parse(x) + 1, x.ToString() + "1")); var m12 = m11.SelectMany(x => new MonadPrimus.State <string, string>(s => new MonadPrimus.StateTuple <string, string>(x + s, s + x))); var res11 = m12.RunState("1"); Assert.AreEqual("211", res11.Value); Assert.AreEqual("112", res11.State); }
public void StateRunStateTest() { var m11 = new MonadPrimus.State <string, int>(x => new MonadPrimus.StateTuple <int, string>(int.Parse(x) + 1, x.ToString() + "1")); var res11 = m11.RunState("1"); var res12 = m11.EvalState("1"); var res13 = m11.ExecState("1"); Assert.AreEqual(2, res11.Value); Assert.AreEqual("11", res11.State); Assert.AreEqual(2, res12); Assert.AreEqual("11", res13); }
public void StateMonadRule2Test() { var m00 = new MonadPrimus.State <string, int>(x => new MonadPrimus.StateTuple <int, string>(int.Parse(x) + 1, x.ToString() + "1")); var m11 = m00.SelectMany(MonadPrimus.ToState <string, int>); var m12 = m00; var res11 = m11.RunState("1"); var res12 = m12.RunState("1"); Assert.AreEqual(2, res11.Value); Assert.AreEqual("11", res11.State); Assert.AreEqual(2, res12.Value); Assert.AreEqual("11", res12.State); }