Exemplo n.º 1
0
        public void Success_Ok()
        {
            var called = 0;
            Func <Result <int, string> > factory = () =>
            {
                called++;
                return(new Success <int, string>(5));
            };

            var result = LazyResult.Create(factory).Bind(i => (i + 5).ToString(CultureInfo.InvariantCulture));

            Assert.AreEqual(called, 0);
            Assert.That(result.Unwrap(), Is.EqualTo("10"));
            Assert.AreEqual(called, 1);
        }
Exemplo n.º 2
0
        public void Failure_Ok()
        {
            var called = 0;
            Func <Result <int, string> > factory = () =>
            {
                called++;
                return(new Failure <int, string>("Failure"));
            };

            var failure       = LazyResult.Create(factory);
            var failureResult = failure.BindToResult(this.testFunc);

            Assert.AreEqual(called, 0);
            Assert.That(failureResult.UnwrapError(), Is.EqualTo("Failure"));
            Assert.AreEqual(called, 1);
        }
Exemplo n.º 3
0
        public void TwoCalls_Failure_Ok()
        {
            var called = 0;
            Func <Result <string, int> > factory = () =>
            {
                called++;
                return(new Failure <string, int>(5));
            };

            var result = LazyResult.Create(factory)
                         .Bind <object, string>(_ => throw new Exception("Should not hit this!"), i => (i + 5).ToString(CultureInfo.InvariantCulture));

            Assert.AreEqual(called, 0);
            Assert.That(result.UnwrapError(), Is.EqualTo("10"));
            Assert.AreEqual(called, 1);
        }
Exemplo n.º 4
0
        public void Failure_Ok()
        {
            var called       = 0;
            var errorMessage = "Error!";
            Func <Result <int, string> > factory = () =>
            {
                called++;
                return(new Failure <int, string>(errorMessage));
            };

            var result = LazyResult.Create(factory).Bind(i => (i + 5).ToString(CultureInfo.InvariantCulture));

            Assert.AreEqual(called, 0);
            Assert.That(result.UnwrapError(), Is.EqualTo(errorMessage));
            Assert.AreEqual(called, 1);
        }
Exemplo n.º 5
0
        public void Success_BindsToFailure_Ok()
        {
            var called = 0;
            Func <Result <int, string> > factory = () =>
            {
                called++;
                return(new Success <int, string>(6));
            };

            var success = LazyResult.Create(factory);

            var successResult = success.BindToResult(this.testFunc);

            Assert.AreEqual(called, 0);
            Assert.That(successResult.UnwrapError(), Is.EqualTo("Oops"));
            Assert.AreEqual(called, 1);
        }
Exemplo n.º 6
0
        public void Result_Ok()
        {
            var calls = 0;

            var factory = new Func <Result <int, object> >(() =>
            {
                calls += 1;
                return(new Success <int, object>(calls));
            });

            var result = LazyResult.Create(factory);

            Assert.AreEqual(calls, 0);

            Assert.AreEqual(result.Unwrap(), 1);
            Assert.AreEqual(calls, 1);

            Assert.AreEqual(result.Unwrap(), 1);
            Assert.AreEqual(calls, 1);
        }
Exemplo n.º 7
0
 public void IsSuccess_Ok()
 {
     Assert.AreEqual(LazyResult.Create(() => new Success <int, object>(4)).IsSuccess, true);
     Assert.AreEqual(LazyResult.Create(() => new Failure <object, int>(4)).IsSuccess, false);
 }