public void ThrowAnExceptionWhenTheApiIsNull()
 {
     Assert.Throws <ArgumentNullException>(() =>
     {
         _ = new RasGetErrorStringService(null);
     });
 }
        public void ThrowAWin32ExceptionWhenTheBufferSizeIsTooSmall()
        {
            var api = new Mock <IRasApi32>();

            api.Setup(o => o.RasGetErrorString(1, It.IsAny <StringBuilder>(), It.IsAny <int>())).Returns(ERROR_INSUFFICIENT_BUFFER);

            var target = new RasGetErrorStringService(api.Object);

            Assert.Throws <System.ComponentModel.Win32Exception>(() => target.GetErrorString(1));
        }
        public void MustNotThrowAnExceptionWhenTheErrorCodeIsLessThanZero()
        {
            var api = new Mock <IRasApi32>();

            var target = new RasGetErrorStringService(api.Object);

            Assert.DoesNotThrow(() => target.GetErrorString(-1));

            api.Verify(o => o.RasGetErrorString(It.IsAny <int>(), It.IsAny <StringBuilder>(), It.IsAny <int>()), Times.Once);
        }
        public void ReturnNullWhenTheErrorCodeIsNotValid()
        {
            var api = new Mock <IRasApi32>();

            api.Setup(o => o.RasGetErrorString(87, It.IsAny <StringBuilder>(), It.IsAny <int>())).Returns(ERROR_INVALID_PARAMETER);

            var target = new RasGetErrorStringService(api.Object);
            var result = target.GetErrorString(87);

            Assert.IsNull(result);
        }
        public void ReturnTheErrorString()
        {
            var message = "This is a test message!";

            var api = new Mock <IRasApi32>();

            api.Setup(o => o.RasGetErrorString(1, It.IsAny <StringBuilder>(), It.IsAny <int>()))
            .Callback <int, StringBuilder, int>((o1, o2, o3) => { o2.Append(message); })
            .Returns(SUCCESS);

            var target = new RasGetErrorStringService(api.Object);
            var result = target.GetErrorString(1);

            Assert.AreEqual(message, result);
        }