예제 #1
0
파일: TestMonad.cs 프로젝트: rayark/mast
        public void BindMonadTest()
        {
            var m1 = new SimpleMonad <string>("12345"); // m1 will output 12345
            var m2 = m1.Then(s => new ParseStringMonad(s));

            _Wait(m2);

            Assert.AreEqual(m2.Result, 12345);
        }
예제 #2
0
파일: TestMonad.cs 프로젝트: rayark/mast
        public void BindMonadSimpleFuncTest()
        {
            var m1 = new SimpleMonad <string>("67890");
            // Then() can accept a function which returns a value instead of a Monad.
            var m2 = m1.Map(int.Parse);

            _Wait(m2);

            Assert.AreEqual(m2.Result, 67890);
        }
예제 #3
0
파일: TestMonad.cs 프로젝트: rayark/mast
        public void BindMonadSecondErrorTest()
        {
            var m1 = new SimpleMonad <string>("abcde"); // m1 output is not number
            var m2 = m1.Then(s => new ParseStringMonad(s));

            _Wait(m2);

            Assert.IsNotNull(m2.Error);
            Assert.IsInstanceOf(typeof(FormatException), m2.Error);
        }
예제 #4
0
파일: TestMonad.cs 프로젝트: rayark/mast
        public void BindMonadFirstErrorTest()
        {
            var m1 = new SimpleMonad <string>(new System.Exception("error 1")); // m1 will failed with this error
            var m2 = m1.Then(s => new ParseStringMonad(s));

            _Wait(m2);

            Assert.IsNotNull(m2.Error);
            Assert.AreEqual(m2.Error.Message, "error 1");
        }
예제 #5
0
파일: TestMonad.cs 프로젝트: rayark/mast
        public void SimpleMonadTest()
        {
            var m = new SimpleMonad <int>(10);

            _Wait(m);

            Assert.AreEqual(m.Result, 10);

            m = new SimpleMonad <int>(new System.ArgumentException("invalid argument"));
            _Wait(m);

            Assert.IsNotNull(m.Error);
            Assert.AreEqual(m.Error.Message, "invalid argument");
        }
예제 #6
0
파일: TestMonad.cs 프로젝트: rayark/mast
        public void BindMonadSimpleFuncTest2()
        {
            bool called = false;

            System.Action <string> setSpriteToImage = (string path) => {
                called = true;
            };

            var m1 = new SimpleMonad <string>("icon.png");
            var m2 = m1.Then(setSpriteToImage);

            _Wait(m2);

            Assert.IsTrue(called);
        }