예제 #1
0
        public void Accessing_Value_Before_Await_Throws()
        {
            var either = new AsyncEither <int, string>(
                Task.Run(async() => {
                await Task.Delay(100);
                return(EitherMethods.CreateValue <int, string>(20));
            })
                );

            Assert.Throws <InvalidEitherStateException>(() => either.Value);
        }
예제 #2
0
        public async Task Creating_Either_With_Error_After_Delay_Await_Both()
        {
            var either = new AsyncEither <int, string>(
                Task.Run(async() => {
                await Task.Delay(100);
                return(EitherMethods.CreateError <int, string>("ERROR"));
            })
                );

            Assert.True(await either.HasError);
            Assert.False(await either.HasValue);

            Assert.Equal(default, either.Value);
예제 #3
0
        public async Task Accessing_Value_Before_After_Awaiting_HasValue_Does_Not_Throw()
        {
            var either = new AsyncEither <int, string>(
                Task.Run(async() => {
                await Task.Delay(100);
                return(EitherMethods.CreateValue <int, string>(20));
            })
                );
            await either.HasValue;
            var exception = Record.Exception(() => either.Value);

            Assert.Null(exception);
        }