public void Create()
        {
            var exception = new NegativeNumberException();

            Assert.Equal("A number was negative.", exception.Message);
            Assert.False(exception.Number.HasValue);
        }
        public void Create_Message_Number()
        {
            string message   = "description";
            var    exception = new NegativeNumberException(message, -1);

            Assert.Equal(message, exception.Message);
            Assert.Equal(-1, exception.Number);
        }
        public void Create_Message()
        {
            string message   = "description";
            var    exception = new NegativeNumberException(message);

            Assert.Equal(message, exception.Message);
            Assert.False(exception.Number.HasValue);
        }
        public void Create_Message_Number_InnerException()
        {
            string    message        = "description";
            Exception innerException = new InvalidOperationException();
            var       exception      = new NegativeNumberException(message, -2, innerException);

            Assert.Equal(message, exception.Message);
            Assert.Equal(-2, exception.Number);
            Assert.Equal(innerException, exception.InnerException);
        }
        public void Serialization_RoundTrip()
        {
            string    message           = "description";
            Exception innerException    = new InvalidOperationException();
            var       originalException = new NegativeNumberException(message, -3, innerException);

            var restoredException = (NegativeNumberException)RoundTrip(originalException);

            Assert.NotSame(originalException, restoredException);
            Assert.NotSame(innerException, restoredException.InnerException);
            Assert.Equal(message, restoredException.Message);
            Assert.Equal(-3, restoredException.Number);
            Assert.Equal(innerException.Message, restoredException.InnerException !.Message);