Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }