| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 | // Licensed to the .NET Foundation under one or more agreements.// The .NET Foundation licenses this file to you under the Apache 2.0 License.// See the LICENSE file in the project root for more information. using System;using System.Reactive;using Xunit;namespace ReactiveTests.Tests{    public class ExceptionHelperTest    {        private Exception _errors;        [Fact]        public void ExceptionHelper_TrySetException_Empty()        {            var ex = new InvalidOperationException();            Assert.True(ExceptionHelper.TrySetException(ref _errors, ex));            Assert.Equal(ex, _errors);        }        [Fact]        public void ExceptionHelper_TrySetException_Not_Empty()        {            var ex1 = new InvalidOperationException();            _errors = ex1;            var ex2 = new NotSupportedException();            Assert.False(ExceptionHelper.TrySetException(ref _errors, ex2));            Assert.Equal(ex1, _errors);        }        [Fact]        public void ExceptionHelper_TrySetException_Terminate_Empty()        {            var ex = ExceptionHelper.Terminate(ref _errors);            Assert.Null(ex);            Assert.Equal(_errors, ExceptionHelper.Terminated);        }        [Fact]        public void ExceptionHelper_TrySetException_Terminate_Not_Empty()        {            var ex1 = new InvalidOperationException();            _errors = ex1;            var ex = ExceptionHelper.Terminate(ref _errors);            Assert.Equal(ex, ex1);            Assert.Equal(_errors, ExceptionHelper.Terminated);        }        [Fact]        public void ExceptionHelper_TrySetException_Terminate_Twice()        {            var ex1 = new InvalidOperationException();            _errors = ex1;            var ex = ExceptionHelper.Terminate(ref _errors);            Assert.Equal(ex, ex1);            Assert.Equal(_errors, ExceptionHelper.Terminated);            ex = ExceptionHelper.Terminate(ref _errors);            Assert.Equal(ex, ExceptionHelper.Terminated);            Assert.Equal(_errors, ExceptionHelper.Terminated);        }        [Fact]        public void ExceptionHelper_TryAddException_Empty()        {            var ex1 = new InvalidOperationException();            Assert.True(ExceptionHelper.TryAddException(ref _errors, ex1));            Assert.Equal(ex1, _errors);        }        [Fact]        public void ExceptionHelper_TryAddException_Not_Empty()        {            var ex1 = new InvalidOperationException();            _errors = ex1;            var ex2 = new NotImplementedException();            Assert.True(ExceptionHelper.TryAddException(ref _errors, ex2));            Assert.True(_errors is AggregateException);            var x = _errors as AggregateException;            Assert.Equal(2, x.InnerExceptions.Count);            Assert.True(x.InnerExceptions[0] is InvalidOperationException);            Assert.True(x.InnerExceptions[1] is NotImplementedException);        }        [Fact]        public void ExceptionHelper_TryAddException_Aggregated()        {            var ex1 = new InvalidOperationException();            var ex2 = new NotImplementedException();            _errors = new AggregateException(ex1, ex2);            var ex3 = new InvalidCastException();            Assert.True(ExceptionHelper.TryAddException(ref _errors, ex3));            Assert.True(_errors is AggregateException);            var x = _errors as AggregateException;            Assert.Equal(3, x.InnerExceptions.Count);            Assert.True(x.InnerExceptions[0] is InvalidOperationException);            Assert.True(x.InnerExceptions[1] is NotImplementedException);            Assert.True(x.InnerExceptions[2] is InvalidCastException);        }        [Fact]        public void ExceptionHelper_TryAddException_Terminated()        {            _errors = ExceptionHelper.Terminated;            var ex = new InvalidCastException();            Assert.False(ExceptionHelper.TryAddException(ref _errors, ex));            Assert.Equal(_errors, ExceptionHelper.Terminated);        }    }}
 |