示例#1
0
        public void NewTest()
        {
            void A()
            {
                B();
            }

            void B()
            {
                C();
            }

            void C()
            {
                Nothing.Unreachable();
            }

            Result <TestResultInnerClass> CalcFoo(bool success)
            {
                if (success)
                {
                    return(Result.Success(new TestResultInnerClass {
                        Number = 1
                    }));
                }
                return(Result.Fail("Fail"));
            }

            var result1 = CalcFoo(true);

            Assert.AreEqual(true, result1.Succeed);
            Assert.AreEqual(1, result1.Value.Number);
            Assert.AreEqual(1, result1.Unwrap().Number);
            TestResultInnerClass.Check(result1.Unwrap());

            var result2 = CalcFoo(false);

            Assert.AreEqual(false, result2.Succeed);
            Assert.AreEqual("Fail", result2.FailMessage);
            Assert.Throws <ResultException>(() => result2.Unwrap());

            Assert.Throws <InvalidOperationException>(() => Result.Wrap(A).Unwrap());
        }