FxCop for Preview handler (#6833)

This commit is contained in:
Clint Rutkas
2020-09-29 10:43:18 -07:00
committed by GitHub
parent 240f67f15c
commit fb8e80c09c
8 changed files with 233 additions and 199 deletions

View File

@@ -7,12 +7,12 @@ using Common;
using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq; using Moq;
namespace UnitTests_PreviewHandlerCommon namespace PreviewHandlerCommonUnitTests
{ {
[TestClass] [TestClass]
public class FileBasedPreviewHandlerTests public class FileBasedPreviewHandlerTests
{ {
public class TestFileBasedPreviewHandler : FileBasedPreviewHandler internal class TestFileBasedPreviewHandler : FileBasedPreviewHandler
{ {
public override void DoPreview() public override void DoPreview()
{ {
@@ -28,7 +28,7 @@ namespace UnitTests_PreviewHandlerCommon
[DataTestMethod] [DataTestMethod]
[DataRow(0U)] [DataRow(0U)]
[DataRow(1U)] [DataRow(1U)]
public void FileBasedPreviewHandler_ShouldSetFilePath_WhenInitializeCalled(uint grfMode) public void FileBasedPreviewHandlerShouldSetFilePathWhenInitializeCalled(uint grfMode)
{ {
// Arrange // Arrange
var fileBasedPreviewHandler = new TestFileBasedPreviewHandler(); var fileBasedPreviewHandler = new TestFileBasedPreviewHandler();

View File

@@ -4,12 +4,12 @@
using System; using System;
using System.Drawing; using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms; using System.Windows.Forms;
using Common; using Common;
using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace UnitTests_PreviewHandlerCommon namespace PreviewHandlerCommonUnitTests
{ {
[TestClass] [TestClass]
public class FormHandlerControlTests public class FormHandlerControlTests
@@ -19,7 +19,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void FormHandlerControl_ShouldCreateHandle_OnInitialization() public void FormHandlerControlShouldCreateHandleOnInitialization()
{ {
// Arrange and act // Arrange and act
using (var testFormHandlerControl = new TestFormControl()) using (var testFormHandlerControl = new TestFormControl())
@@ -30,7 +30,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void FormHandlerControl_ShouldSetVisibleFalse_OnInitialization() public void FormHandlerControlShouldSetVisibleFalseOnInitialization()
{ {
// Arrange and act // Arrange and act
using (var testFormHandlerControl = new TestFormControl()) using (var testFormHandlerControl = new TestFormControl())
@@ -41,7 +41,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void FormHandlerControl_ShouldSetFormBorderStyle_OnInitialization() public void FormHandlerControlShouldSetFormBorderStyleOnInitialization()
{ {
// Arrange and act // Arrange and act
using (var testFormHandlerControl = new TestFormControl()) using (var testFormHandlerControl = new TestFormControl())
@@ -52,7 +52,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void FormHandlerControl_ShouldReturnValidHandle_WhenGetHandleCalled() public void FormHandlerControlShouldReturnValidHandleWhenGetHandleCalled()
{ {
// Arrange // Arrange
using (var testFormHandlerControl = new TestFormControl()) using (var testFormHandlerControl = new TestFormControl())
@@ -66,7 +66,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void FormHandlerControl_ShouldSetBackgroundColor_WhenSetBackgroundColorCalled() public void FormHandlerControlShouldSetBackgroundColorWhenSetBackgroundColorCalled()
{ {
// Arrange // Arrange
using (var testFormHandlerControl = new TestFormControl()) using (var testFormHandlerControl = new TestFormControl())
@@ -82,13 +82,13 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void FormHandlerControl_ShouldSetFont_WhenSetFontCalled() public void FormHandlerControlShouldSetFontWhenSetFontCalled()
{ {
// Arrange // Arrange
using (var testFormHandlerControl = new TestFormControl()) using (var testFormHandlerControl = new TestFormControl())
{ {
var font = new Font("Arial", 20); using (var font = new Font("Arial", 20))
{
// Act // Act
testFormHandlerControl.SetFont(font); testFormHandlerControl.SetFont(font);
@@ -96,9 +96,10 @@ namespace UnitTests_PreviewHandlerCommon
Assert.AreEqual(font, testFormHandlerControl.Font); Assert.AreEqual(font, testFormHandlerControl.Font);
} }
} }
}
[TestMethod] [TestMethod]
public void FormHandlerControl_ShouldUpdateBounds_WhenSetRectCalled() public void FormHandlerControlShouldUpdateBoundsWhenSetRectCalled()
{ {
// Arrange // Arrange
using (var testFormHandlerControl = new TestFormControl()) using (var testFormHandlerControl = new TestFormControl())
@@ -114,7 +115,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void FormHandlerControl_ShouldSetTextColor_WhenSetTextColorCalled() public void FormHandlerControlShouldSetTextColorWhenSetTextColorCalled()
{ {
// Arrange // Arrange
using (var testFormHandlerControl = new TestFormControl()) using (var testFormHandlerControl = new TestFormControl())
@@ -130,7 +131,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void FormHandlerControl_ShouldClearAllControls_WhenUnloadCalled() public void FormHandlerControlShouldClearAllControlsWhenUnloadCalled()
{ {
// Arrange // Arrange
using (var testFormHandlerControl = new TestFormControl()) using (var testFormHandlerControl = new TestFormControl())
@@ -147,7 +148,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void FormHandlerControl_ShouldSetVisibleFalse_WhenUnloadCalled() public void FormHandlerControlShouldSetVisibleFalseWhenUnloadCalled()
{ {
// Arrange // Arrange
using (var testFormHandlerControl = new TestFormControl()) using (var testFormHandlerControl = new TestFormControl())
@@ -161,7 +162,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void FormHandlerControl_ShouldSetVisibletrue_WhenDoPreviewCalled() public void FormHandlerControlShouldSetVisibletrueWhenDoPreviewCalled()
{ {
// Arrange // Arrange
using (var testFormHandlerControl = new TestFormControl()) using (var testFormHandlerControl = new TestFormControl())
@@ -175,26 +176,24 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void FormHandlerControl_ShouldSetParentHandle_WhenSetWindowCalled() public void FormHandlerControlShouldSetParentHandleWhenSetWindowCalled()
{ {
// Arrange // Arrange
using (var testFormHandlerControl = new TestFormControl()) using (var testFormHandlerControl = new TestFormControl())
{ {
var parentFormWindow = new UserControl(); using (var parentFormWindow = new UserControl())
{
var parentHwnd = parentFormWindow.Handle; var parentHwnd = parentFormWindow.Handle;
var rect = new Rectangle(2, 2, 4, 4); var rect = new Rectangle(2, 2, 4, 4);
// Act // Act
testFormHandlerControl.SetWindow(parentHwnd, rect); testFormHandlerControl.SetWindow(parentHwnd, rect);
var actualParentHwnd = GetAncestor(testFormHandlerControl.Handle, 1); // GA_PARENT 1 var actualParentHwnd = NativeMethods.GetAncestor(testFormHandlerControl.Handle, 1); // GA_PARENT 1
// Assert // Assert
Assert.AreEqual(parentHwnd, actualParentHwnd); Assert.AreEqual(parentHwnd, actualParentHwnd);
} }
} }
}
// Gets the ancestor window: https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getancestor
[DllImport("user32.dll")]
private static extern IntPtr GetAncestor(IntPtr hWnd, uint gaFlags);
} }
} }

View File

@@ -0,0 +1,16 @@
// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Runtime.InteropServices;
namespace PreviewHandlerCommonUnitTests
{
public static class NativeMethods
{
// Gets the ancestor window: https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getancestor
[DllImport("user32.dll")]
internal static extern IntPtr GetAncestor(IntPtr hWnd, uint gaFlags);
}
}

View File

@@ -10,14 +10,14 @@ using Common.ComInterlop;
using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq; using Moq;
namespace UnitTests_PreviewHandlerCommon namespace PreviewHandlerCommonUnitTests
{ {
[TestClass] [TestClass]
public class PreviewHandlerBaseTests public class PreviewHandlerBaseTests
{ {
private static IPreviewHandlerControl previewHandlerControl; private static IPreviewHandlerControl previewHandlerControl;
public class TestPreviewHandler : PreviewHandlerBase internal class TestPreviewHandler : PreviewHandlerBase
{ {
public TestPreviewHandler() public TestPreviewHandler()
{ {
@@ -36,7 +36,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void PreviewHandlerBase_ShouldCallPreviewControlSetWindow_WhenSetWindowCalled() public void PreviewHandlerBaseShouldCallPreviewControlSetWindowWhenSetWindowCalled()
{ {
// Arrange // Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>(); var mockPreviewControl = new Mock<IPreviewHandlerControl>();
@@ -66,7 +66,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void PreviewHandlerBase_ShouldCallPreviewControlSetrect_WhenSetRectCalled() public void PreviewHandlerBaseShouldCallPreviewControlSetrectWhenSetRectCalled()
{ {
// Arrange // Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>(); var mockPreviewControl = new Mock<IPreviewHandlerControl>();
@@ -92,7 +92,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void PreviewHandlerBase_ShouldCallPreviewControlUnload_WhenUnloadCalled() public void PreviewHandlerBaseShouldCallPreviewControlUnloadWhenUnloadCalled()
{ {
// Arrange // Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>(); var mockPreviewControl = new Mock<IPreviewHandlerControl>();
@@ -108,7 +108,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void PreviewHandlerBase_ShouldCallPreviewControlSetBackgroundColor_WhenSetBackgroundColorCalled() public void PreviewHandlerBaseShouldCallPreviewControlSetBackgroundColorWhenSetBackgroundColorCalled()
{ {
// Arrange // Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>(); var mockPreviewControl = new Mock<IPreviewHandlerControl>();
@@ -125,7 +125,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void PreviewHandlerBase_ShouldCallPreviewControlSetTextColor_WhenSetTextColorCalled() public void PreviewHandlerBaseShouldCallPreviewControlSetTextColorWhenSetTextColorCalled()
{ {
// Arrange // Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>(); var mockPreviewControl = new Mock<IPreviewHandlerControl>();
@@ -142,7 +142,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void PreviewHandlerBase_ShouldCallPreviewControlSetFont_WhenSetFontCalled() public void PreviewHandlerBaseShouldCallPreviewControlSetFontWhenSetFontCalled()
{ {
// Arrange // Arrange
Font actualFont = null; Font actualFont = null;
@@ -166,7 +166,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void PreviewHandlerBase_ShouldCallPreviewControlSetFocus_WhenSetFocusCalled() public void PreviewHandlerBaseShouldCallPreviewControlSetFocusWhenSetFocusCalled()
{ {
// Arrange // Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>(); var mockPreviewControl = new Mock<IPreviewHandlerControl>();
@@ -182,7 +182,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void PreviewHandlerBase_ShouldSetHandleOnQueryFocus_WhenPreviewControlsReturnValidHandle() public void PreviewHandlerBaseShouldSetHandleOnQueryFocusWhenPreviewControlsReturnValidHandle()
{ {
// Arrange // Arrange
var hwnd = new IntPtr(5); var hwnd = new IntPtr(5);
@@ -202,7 +202,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void PreviewHandlerBase_ShouldThrowOnQueryFocus_WhenPreviewControlsReturnNotValidHandle() public void PreviewHandlerBaseShouldThrowOnQueryFocusWhenPreviewControlsReturnNotValidHandle()
{ {
// Arrange // Arrange
var hwnd = IntPtr.Zero; var hwnd = IntPtr.Zero;
@@ -230,7 +230,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void PreviewHandlerBase_ShouldDirectKeyStrokesToIPreviewHandlerFrame_IfIPreviewHandlerFrameIsSet() public void PreviewHandlerBaseShouldDirectKeyStrokesToIPreviewHandlerFrameIfIPreviewHandlerFrameIsSet()
{ {
// Arrange // Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>(); var mockPreviewControl = new Mock<IPreviewHandlerControl>();
@@ -251,7 +251,7 @@ namespace UnitTests_PreviewHandlerCommon
[DataTestMethod] [DataTestMethod]
[DataRow(0U)] [DataRow(0U)]
[DataRow(1U)] [DataRow(1U)]
public void PreviewHandlerBase_ShouldReturnIPreviewHandlerFrameResponse_IfIPreviewHandlerFrameIsSet(uint resultCode) public void PreviewHandlerBaseShouldReturnIPreviewHandlerFrameResponseIfIPreviewHandlerFrameIsSet(uint resultCode)
{ {
// Arrange // Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>(); var mockPreviewControl = new Mock<IPreviewHandlerControl>();
@@ -273,7 +273,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void PreviewHandlerBase_ShouldReturnS_FALSE_IfIPreviewHandlerFrameIsNotSet() public void PreviewHandlerBaseShouldReturnUintFalseIfIPreviewHandlerFrameIsNotSet()
{ {
// Arrange // Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>(); var mockPreviewControl = new Mock<IPreviewHandlerControl>();
@@ -291,7 +291,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void PreviewHandlerBase_ShouldReturnPreviewControlHandle_IfGetWindowCalled() public void PreviewHandlerBaseShouldReturnPreviewControlHandleIfGetWindowCalled()
{ {
// Arrange // Arrange
var previewControlHandle = new IntPtr(5); var previewControlHandle = new IntPtr(5);
@@ -313,7 +313,7 @@ namespace UnitTests_PreviewHandlerCommon
[DataTestMethod] [DataTestMethod]
[DataRow(true)] [DataRow(true)]
[DataRow(false)] [DataRow(false)]
public void PreviewHandlerBase_ShouldThrowNotImplementedException_IfContextSensitiveHelpCalled(bool fEnterMode) public void PreviewHandlerBaseShouldThrowNotImplementedExceptionIfContextSensitiveHelpCalled(bool fEnterMode)
{ {
// Arrange // Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>(); var mockPreviewControl = new Mock<IPreviewHandlerControl>();
@@ -337,7 +337,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void PreviewHandlerBase_ShouldReturnSite_WhenGetSiteCalled() public void PreviewHandlerBaseShouldReturnSiteWhenGetSiteCalled()
{ {
// Arrange // Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>(); var mockPreviewControl = new Mock<IPreviewHandlerControl>();
@@ -346,19 +346,18 @@ namespace UnitTests_PreviewHandlerCommon
var testPreviewHandler = new TestPreviewHandler(); var testPreviewHandler = new TestPreviewHandler();
var site = new Mock<IPreviewHandlerFrame>().Object; var site = new Mock<IPreviewHandlerFrame>().Object;
testPreviewHandler.SetSite(site); testPreviewHandler.SetSite(site);
object actualSite = null;
var riid = Guid.Empty; var riid = Guid.Empty;
// Act // Act
testPreviewHandler.GetSite(ref riid, out actualSite); testPreviewHandler.GetSite(ref riid, out object actualSite);
// Assert // Assert
Assert.AreEqual(actualSite, site); Assert.AreEqual(actualSite, site);
} }
private LOGFONT GetLogFont() private static LOGFONT GetLogFont()
{ {
var logFont = new LOGFONT return new LOGFONT
{ {
LfHeight = 12, LfHeight = 12,
LfWidth = 0, LfWidth = 0,
@@ -374,21 +373,17 @@ namespace UnitTests_PreviewHandlerCommon
LfPitchAndFamily = Convert.ToByte(0), LfPitchAndFamily = Convert.ToByte(0),
LfFaceName = "valid-font", LfFaceName = "valid-font",
}; };
return logFont;
} }
private RECT GetRectangle(int left, int top, int right, int bottom) private static RECT GetRectangle(int left, int top, int right, int bottom)
{ {
var rect = new RECT return new RECT
{ {
Left = left, Left = left,
Top = top, Top = top,
Right = right, Right = right,
Bottom = bottom, Bottom = bottom,
}; };
return rect;
} }
private static IPreviewHandlerControl GetMockPreviewHandlerControl() private static IPreviewHandlerControl GetMockPreviewHandlerControl()

View File

@@ -8,12 +8,12 @@ using Common;
using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq; using Moq;
namespace UnitTests_PreviewHandlerCommon namespace PreviewHandlerCommonUnitTests
{ {
[TestClass] [TestClass]
public class StreamBasedPreviewHandlerTests public class StreamBasedPreviewHandlerTests
{ {
public class TestStreamBasedPreviewHandler : StreamBasedPreviewHandler internal class TestStreamBasedPreviewHandler : StreamBasedPreviewHandler
{ {
public override void DoPreview() public override void DoPreview()
{ {
@@ -29,7 +29,7 @@ namespace UnitTests_PreviewHandlerCommon
[DataTestMethod] [DataTestMethod]
[DataRow(0U)] [DataRow(0U)]
[DataRow(1U)] [DataRow(1U)]
public void StreamBasedPreviewHandler_ShouldSetStream_WhenInitializeCalled(uint grfMode) public void StreamBasedPreviewHandlerShouldSetStreamWhenInitializeCalled(uint grfMode)
{ {
// Arrange // Arrange
var streamBasedPreviewHandler = new TestStreamBasedPreviewHandler(); var streamBasedPreviewHandler = new TestStreamBasedPreviewHandler();

View File

@@ -11,13 +11,13 @@ using Common.Utilities;
using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq; using Moq;
namespace UnitTests_PreviewHandlerCommon namespace PreviewHandlerCommonUnitTests
{ {
[TestClass] [TestClass]
public class StreamWrapperTests public class StreamWrapperTests
{ {
[TestMethod] [TestMethod]
public void StreamWrapper_ShouldThrow_IfInitializeWithNullStream() public void StreamWrapperShouldThrowIfInitializeWithNullStream()
{ {
// Arrange // Arrange
IStream stream = null; IStream stream = null;
@@ -26,7 +26,10 @@ namespace UnitTests_PreviewHandlerCommon
// Act // Act
try try
{ {
var streamWrapper = new ReadonlyStream(stream); using (var streamWrapper = new ReadonlyStream(stream))
{
// do work
}
} }
catch (ArgumentNullException ex) catch (ArgumentNullException ex)
{ {
@@ -38,107 +41,113 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void StreamWrapper_ShouldReturnCanReadTrue() public void StreamWrapperShouldReturnCanReadTrue()
{ {
// Arrange // Arrange
var streamMock = new Mock<IStream>(); var streamMock = new Mock<IStream>();
// Act // Act
var streamWrapper = new ReadonlyStream(streamMock.Object); using (var streamWrapper = new ReadonlyStream(streamMock.Object))
{
// Assert // Assert
Assert.AreEqual(streamWrapper.CanRead, true); Assert.AreEqual(streamWrapper.CanRead, true);
} }
}
[TestMethod] [TestMethod]
public void StreamWrapper_ShouldReturnCanSeekTrue() public void StreamWrapperShouldReturnCanSeekTrue()
{ {
// Arrange // Arrange
var streamMock = new Mock<IStream>(); var streamMock = new Mock<IStream>();
// Act // Act
var streamWrapper = new ReadonlyStream(streamMock.Object); using (var streamWrapper = new ReadonlyStream(streamMock.Object))
{
// Assert // Assert
Assert.AreEqual(streamWrapper.CanSeek, true); Assert.AreEqual(streamWrapper.CanSeek, true);
} }
}
[TestMethod] [TestMethod]
public void StreamWrapper_ShouldReturnCanWriteFalse() public void StreamWrapperShouldReturnCanWriteFalse()
{ {
// Arrange // Arrange
var streamMock = new Mock<IStream>(); var streamMock = new Mock<IStream>();
// Act // Act
var streamWrapper = new ReadonlyStream(streamMock.Object); using (var streamWrapper = new ReadonlyStream(streamMock.Object))
{
// Assert // Assert
Assert.AreEqual(streamWrapper.CanWrite, false); Assert.AreEqual(streamWrapper.CanWrite, false);
} }
}
[TestMethod] [TestMethod]
public void StreamWrapper_ShouldReturnValidLength() public void StreamWrapperShouldReturnValidLength()
{ {
// Arrange // Arrange
long streamLength = 5; long streamLength = 5;
var stremMock = new Mock<IStream>(); var streamMock = new Mock<IStream>();
var stat = new System.Runtime.InteropServices.ComTypes.STATSTG var stat = new System.Runtime.InteropServices.ComTypes.STATSTG
{ {
cbSize = streamLength, cbSize = streamLength,
}; };
stremMock streamMock.Setup(x => x.Stat(out stat, It.IsAny<int>()));
.Setup(x => x.Stat(out stat, It.IsAny<int>()));
var streamWrapper = new ReadonlyStream(stremMock.Object);
using (var streamWrapper = new ReadonlyStream(streamMock.Object))
{
// Act // Act
var actualLength = streamWrapper.Length; var actualLength = streamWrapper.Length;
// Assert // Assert
Assert.AreEqual(actualLength, streamLength); Assert.AreEqual(actualLength, streamLength);
} }
}
[TestMethod] [TestMethod]
public void StreamWrapper_ShouldReturnValidPosition() public void StreamWrapperShouldReturnValidPosition()
{ {
// Arrange // Arrange
int expectedDwOrigin = 1; // STREAM_SEEK_CUR int expectedDwOrigin = 1; // STREAM_SEEK_CUR
long expectedOffset = 0; long expectedOffset = 0;
long currPosition = 5; long currPosition = 5;
var stremMock = new Mock<IStream>(); var streamMock = new Mock<IStream>();
stremMock streamMock
.Setup(x => x.Seek(It.IsAny<long>(), It.IsAny<int>(), It.IsAny<IntPtr>())) .Setup(x => x.Seek(It.IsAny<long>(), It.IsAny<int>(), It.IsAny<IntPtr>()))
.Callback<long, int, IntPtr>((dlibMove, dwOrigin, plibNewPosition) => .Callback<long, int, IntPtr>((dlibMove, dwOrigin, plibNewPosition) =>
{ {
Marshal.WriteInt64(plibNewPosition, currPosition); Marshal.WriteInt64(plibNewPosition, currPosition);
}); });
var streamWrapper = new ReadonlyStream(stremMock.Object);
using (var streamWrapper = new ReadonlyStream(streamMock.Object))
{
// Act // Act
var actualPosition = streamWrapper.Position; var actualPosition = streamWrapper.Position;
// Assert // Assert
Assert.AreEqual(actualPosition, currPosition); Assert.AreEqual(actualPosition, currPosition);
stremMock.Verify(_ => _.Seek(It.Is<long>(offset => offset == expectedOffset), It.Is<int>(dworigin => dworigin == expectedDwOrigin), It.IsAny<IntPtr>()), Times.Once); streamMock.Verify(_ => _.Seek(It.Is<long>(offset => offset == expectedOffset), It.Is<int>(dworigin => dworigin == expectedDwOrigin), It.IsAny<IntPtr>()), Times.Once);
}
} }
[TestMethod] [TestMethod]
public void StreamWrapper_ShouldCallIStreamSeek_WhenSetPosition() public void StreamWrapperShouldCallIStreamSeekWhenSetPosition()
{ {
// Arrange // Arrange
long positionToSet = 5; long positionToSet = 5;
int expectedDwOrigin = 0; // STREAM_SEEK_SET int expectedDwOrigin = 0; // STREAM_SEEK_SET
var stremMock = new Mock<IStream>(); var streamMock = new Mock<IStream>();
var streamWrapper = new ReadonlyStream(stremMock.Object) using (var streamWrapper = new ReadonlyStream(streamMock.Object))
{ {
// Act // Act
Position = positionToSet, streamWrapper.Position = positionToSet;
};
// Assert // Assert
stremMock.Verify(_ => _.Seek(It.Is<long>(offset => offset == positionToSet), It.Is<int>(dworigin => dworigin == expectedDwOrigin), It.IsAny<IntPtr>()), Times.Once); streamMock.Verify(_ => _.Seek(It.Is<long>(offset => offset == positionToSet), It.Is<int>(dworigin => dworigin == expectedDwOrigin), It.IsAny<IntPtr>()), Times.Once);
}
} }
[DataTestMethod] [DataTestMethod]
@@ -148,7 +157,7 @@ namespace UnitTests_PreviewHandlerCommon
[DataRow(5L, SeekOrigin.Current)] [DataRow(5L, SeekOrigin.Current)]
[DataRow(0L, SeekOrigin.End)] [DataRow(0L, SeekOrigin.End)]
[DataRow(5L, SeekOrigin.End)] [DataRow(5L, SeekOrigin.End)]
public void StreamWrapper_ShouldCallIStreamSeekWithValidArguments_WhenSeekCalled(long offset, SeekOrigin origin) public void StreamWrapperShouldCallIStreamSeekWithValidArgumentsWhenSeekCalled(long offset, SeekOrigin origin)
{ {
// Arrange // Arrange
int expectedDwOrigin = 0; int expectedDwOrigin = 0;
@@ -167,53 +176,55 @@ namespace UnitTests_PreviewHandlerCommon
break; break;
} }
var stremMock = new Mock<IStream>(); var streamMock = new Mock<IStream>();
var streamWrapper = new ReadonlyStream(stremMock.Object); using (var streamWrapper = new ReadonlyStream(streamMock.Object))
{
// Act // Act
streamWrapper.Seek(offset, origin); streamWrapper.Seek(offset, origin);
// Assert // Assert
stremMock.Verify(_ => _.Seek(It.Is<long>(actualOffset => actualOffset == offset), It.Is<int>(actualDwOrigin => actualDwOrigin == expectedDwOrigin), It.IsAny<IntPtr>()), Times.Once); streamMock.Verify(_ => _.Seek(It.Is<long>(actualOffset => actualOffset == offset), It.Is<int>(actualDwOrigin => actualDwOrigin == expectedDwOrigin), It.IsAny<IntPtr>()), Times.Once);
}
} }
[TestMethod] [TestMethod]
public void StreamWrapper_ShouldReturnValidPosition_WhenSeekCalled() public void StreamWrapperShouldReturnValidPositionWhenSeekCalled()
{ {
// Arrange // Arrange
long position = 5; long position = 5;
var stremMock = new Mock<IStream>(); var streamMock = new Mock<IStream>();
stremMock streamMock
.Setup(x => x.Seek(It.IsAny<long>(), It.IsAny<int>(), It.IsAny<IntPtr>())) .Setup(x => x.Seek(It.IsAny<long>(), It.IsAny<int>(), It.IsAny<IntPtr>()))
.Callback<long, int, IntPtr>((dlibMove, dwOrigin, plibNewPosition) => .Callback<long, int, IntPtr>((dlibMove, dwOrigin, plibNewPosition) =>
{ {
Marshal.WriteInt64(plibNewPosition, position); Marshal.WriteInt64(plibNewPosition, position);
}); });
var streamWrapper = new ReadonlyStream(stremMock.Object); using (var streamWrapper = new ReadonlyStream(streamMock.Object))
{
// Act // Act
var actualPosition = streamWrapper.Seek(0, SeekOrigin.Begin); var actualPosition = streamWrapper.Seek(0, SeekOrigin.Begin);
// Assert // Assert
Assert.AreEqual(position, actualPosition); Assert.AreEqual(position, actualPosition);
} }
}
[DataTestMethod] [DataTestMethod]
[DataRow(10, -1, 5)] [DataRow(10, -1, 5)]
[DataRow(10, 0, -5)] [DataRow(10, 0, -5)]
[DataRow(10, 0, 11)] [DataRow(10, 0, 11)]
[DataRow(10, 5, 6)] [DataRow(10, 5, 6)]
public void StreamWrapper_ShouldThrow_WhenReadCalledWithOutOfRangeArguments(int bufferLength, int offSet, int bytesToRead) public void StreamWrapperShouldThrowWhenReadCalledWithOutOfRangeArguments(int bufferLength, int offSet, int bytesToRead)
{ {
// Arrange // Arrange
var buffer = new byte[bufferLength]; var buffer = new byte[bufferLength];
var stremMock = new Mock<IStream>(); var streamMock = new Mock<IStream>();
ArgumentOutOfRangeException exception = null; ArgumentOutOfRangeException exception = null;
var streamWrapper = new ReadonlyStream(stremMock.Object); using (var streamWrapper = new ReadonlyStream(streamMock.Object))
{
// Act // Act
try try
{ {
@@ -227,12 +238,13 @@ namespace UnitTests_PreviewHandlerCommon
// Assert // Assert
Assert.IsNotNull(exception); Assert.IsNotNull(exception);
} }
}
[DataTestMethod] [DataTestMethod]
[DataRow(5, 0)] [DataRow(5, 0)]
[DataRow(5, 5)] [DataRow(5, 5)]
[DataRow(0, 5)] [DataRow(0, 5)]
public void StreamWrapper_ShouldSetValidBuffer_WhenReadCalled(int count, int offset) public void StreamWrapperShouldSetValidBufferWhenReadCalled(int count, int offset)
{ {
// Arrange // Arrange
var inputBuffer = new byte[1024]; var inputBuffer = new byte[1024];
@@ -242,9 +254,9 @@ namespace UnitTests_PreviewHandlerCommon
streamBytes[i] = (byte)i; streamBytes[i] = (byte)i;
} }
var stremMock = new Mock<IStream>(); var streamMock = new Mock<IStream>();
stremMock streamMock
.Setup(x => x.Read(It.IsAny<byte[]>(), It.IsAny<int>(), It.IsAny<IntPtr>())) .Setup(x => x.Read(It.IsAny<byte[]>(), It.IsAny<int>(), It.IsAny<IntPtr>()))
.Callback<byte[], int, IntPtr>((buffer, countToRead, bytesReadPtr) => .Callback<byte[], int, IntPtr>((buffer, countToRead, bytesReadPtr) =>
{ {
@@ -252,8 +264,8 @@ namespace UnitTests_PreviewHandlerCommon
Marshal.WriteInt32(bytesReadPtr, count); Marshal.WriteInt32(bytesReadPtr, count);
}); });
var streamWrapper = new ReadonlyStream(stremMock.Object); using (var streamWrapper = new ReadonlyStream(streamMock.Object))
{
// Act // Act
var bytesRead = streamWrapper.Read(inputBuffer, offset, count); var bytesRead = streamWrapper.Read(inputBuffer, offset, count);
@@ -261,13 +273,15 @@ namespace UnitTests_PreviewHandlerCommon
CollectionAssert.AreEqual(streamBytes, inputBuffer.Skip(offset).Take(count).ToArray()); CollectionAssert.AreEqual(streamBytes, inputBuffer.Skip(offset).Take(count).ToArray());
Assert.AreEqual(count, bytesRead); Assert.AreEqual(count, bytesRead);
} }
}
[TestMethod] [TestMethod]
public void StreamWrapper_ShouldThrowNotImplementedException_WhenFlushCalled() public void StreamWrapperShouldThrowNotImplementedExceptionWhenFlushCalled()
{ {
// Arrange // Arrange
var stremMock = new Mock<IStream>(); var streamMock = new Mock<IStream>();
var streamWrapper = new ReadonlyStream(stremMock.Object); using (var streamWrapper = new ReadonlyStream(streamMock.Object))
{
NotImplementedException exception = null; NotImplementedException exception = null;
// Act // Act
@@ -283,13 +297,15 @@ namespace UnitTests_PreviewHandlerCommon
// Assert // Assert
Assert.IsNotNull(exception); Assert.IsNotNull(exception);
} }
}
[TestMethod] [TestMethod]
public void StreamWrapper_ShouldThrowNotImplementedException_WhenSetLengthCalled() public void StreamWrapperShouldThrowNotImplementedExceptionWhenSetLengthCalled()
{ {
// Arrange // Arrange
var stremMock = new Mock<IStream>(); var streamMock = new Mock<IStream>();
var streamWrapper = new ReadonlyStream(stremMock.Object); using (var streamWrapper = new ReadonlyStream(streamMock.Object))
{
NotImplementedException exception = null; NotImplementedException exception = null;
// Act // Act
@@ -305,13 +321,15 @@ namespace UnitTests_PreviewHandlerCommon
// Assert // Assert
Assert.IsNotNull(exception); Assert.IsNotNull(exception);
} }
}
[TestMethod] [TestMethod]
public void StreamWrapper_ShouldThrowNotImplementedException_WhenWriteCalled() public void StreamWrapperShouldThrowNotImplementedExceptionWhenWriteCalled()
{ {
// Arrange // Arrange
var stremMock = new Mock<IStream>(); var streamMock = new Mock<IStream>();
var streamWrapper = new ReadonlyStream(stremMock.Object); using (var streamWrapper = new ReadonlyStream(streamMock.Object))
{
NotImplementedException exception = null; NotImplementedException exception = null;
// Act // Act
@@ -329,3 +347,4 @@ namespace UnitTests_PreviewHandlerCommon
} }
} }
} }
}

View File

@@ -44,7 +44,7 @@
<ProjectGuid>{748417CA-F17E-487F-9411-CAFB6D3F4877}</ProjectGuid> <ProjectGuid>{748417CA-F17E-487F-9411-CAFB6D3F4877}</ProjectGuid>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>UnitTests_PreviewHandlerCommon</RootNamespace> <RootNamespace>PreviewHandlerCommonUnitTests</RootNamespace>
<AssemblyName>UnitTests-PreviewHandlerCommon</AssemblyName> <AssemblyName>UnitTests-PreviewHandlerCommon</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
@@ -82,7 +82,6 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<TreatWarningsAsErrors>true</TreatWarningsAsErrors> <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<TreatWarningsAsErrors>true</TreatWarningsAsErrors> <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup> </PropertyGroup>
@@ -98,6 +97,7 @@
</Compile> </Compile>
<Compile Include="FileBasedPreviewHandlerTests.cs" /> <Compile Include="FileBasedPreviewHandlerTests.cs" />
<Compile Include="FormHandlerControlTests.cs" /> <Compile Include="FormHandlerControlTests.cs" />
<Compile Include="NativeMethods.cs" />
<Compile Include="PreviewHandlerBaseTests.cs" /> <Compile Include="PreviewHandlerBaseTests.cs" />
<Compile Include="StreamBasedPreviewHandlerTests.cs" /> <Compile Include="StreamBasedPreviewHandlerTests.cs" />
<Compile Include="StreamWrapperTests.cs" /> <Compile Include="StreamWrapperTests.cs" />
@@ -114,6 +114,11 @@
</AdditionalFiles> </AdditionalFiles>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers">
<Version>3.3.0</Version>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="StyleCop.Analyzers"> <PackageReference Include="StyleCop.Analyzers">
<Version>1.1.118</Version> <Version>1.1.118</Version>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>

View File

@@ -6,7 +6,7 @@ using System.Reflection;
using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting;
using PreviewHandlerCommon; using PreviewHandlerCommon;
namespace UnitTests_PreviewHandlerCommon namespace PreviewHandlerCommonUnitTests
{ {
[TestClass] [TestClass]
public class WebBrowserExtUnitTests : WebBrowserExt public class WebBrowserExtUnitTests : WebBrowserExt
@@ -14,7 +14,7 @@ namespace UnitTests_PreviewHandlerCommon
private const string DISPIDAMBIENTDLCONTROL = "[DISPID=-5512]"; private const string DISPIDAMBIENTDLCONTROL = "[DISPID=-5512]";
[TestMethod] [TestMethod]
public void InvokeMember_ShouldSetValidFlags_WhenCalledWithValidDispId() public void InvokeMemberShouldSetValidFlagsWhenCalledWithValidDispId()
{ {
// Arrange // Arrange
var extendedSite = CreateWebBrowserSiteBase() as WebBrowserSiteExt; var extendedSite = CreateWebBrowserSiteBase() as WebBrowserSiteExt;
@@ -37,7 +37,7 @@ namespace UnitTests_PreviewHandlerCommon
} }
[TestMethod] [TestMethod]
public void InvokeMember_ShouldOnlySetValidFlags_WhenCalledWithValidDispId() public void InvokeMemberShouldOnlySetValidFlagsWhenCalledWithValidDispId()
{ {
// Arrange // Arrange
var extendedSite = CreateWebBrowserSiteBase() as WebBrowserSiteExt; var extendedSite = CreateWebBrowserSiteBase() as WebBrowserSiteExt;