whitespace forced changes (#6002)

This commit is contained in:
Clint Rutkas
2020-08-17 10:00:56 -07:00
committed by GitHub
parent 649e7e103d
commit d055ba1c3b
129 changed files with 14175 additions and 14175 deletions

View File

@@ -1,44 +1,44 @@
// 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 Common;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
namespace UnitTests_PreviewHandlerCommon
{
[TestClass]
public class FileBasedPreviewHandlerTests
{
public class TestFileBasedPreviewHandler : FileBasedPreviewHandler
{
public override void DoPreview()
{
throw new NotImplementedException();
}
protected override IPreviewHandlerControl CreatePreviewHandlerControl()
{
return new Mock<IPreviewHandlerControl>().Object;
}
}
[DataTestMethod]
[DataRow(0U)]
[DataRow(1U)]
public void FileBasedPreviewHandler_ShouldSetFilePath_WhenInitializeCalled(uint grfMode)
{
// Arrange
var fileBasedPreviewHandler = new TestFileBasedPreviewHandler();
var filePath = "C:\\valid-path";
// Act
fileBasedPreviewHandler.Initialize(filePath, grfMode);
// Assert
Assert.AreEqual(fileBasedPreviewHandler.FilePath, filePath);
}
}
}
// 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 Common;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
namespace UnitTests_PreviewHandlerCommon
{
[TestClass]
public class FileBasedPreviewHandlerTests
{
public class TestFileBasedPreviewHandler : FileBasedPreviewHandler
{
public override void DoPreview()
{
throw new NotImplementedException();
}
protected override IPreviewHandlerControl CreatePreviewHandlerControl()
{
return new Mock<IPreviewHandlerControl>().Object;
}
}
[DataTestMethod]
[DataRow(0U)]
[DataRow(1U)]
public void FileBasedPreviewHandler_ShouldSetFilePath_WhenInitializeCalled(uint grfMode)
{
// Arrange
var fileBasedPreviewHandler = new TestFileBasedPreviewHandler();
var filePath = "C:\\valid-path";
// Act
fileBasedPreviewHandler.Initialize(filePath, grfMode);
// Assert
Assert.AreEqual(fileBasedPreviewHandler.FilePath, filePath);
}
}
}

View File

@@ -1,200 +1,200 @@
// 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.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using Common;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace UnitTests_PreviewHandlerCommon
{
[TestClass]
public class FormHandlerControlTests
{
private class TestFormControl : FormHandlerControl
{
}
[TestMethod]
public void FormHandlerControl_ShouldCreateHandle_OnInitialization()
{
// Arrange and act
using (var testFormHandlerControl = new TestFormControl())
{
// Assert
Assert.IsTrue(testFormHandlerControl.IsHandleCreated);
}
}
[TestMethod]
public void FormHandlerControl_ShouldSetVisibleFalse_OnInitialization()
{
// Arrange and act
using (var testFormHandlerControl = new TestFormControl())
{
// Assert
Assert.IsFalse(testFormHandlerControl.Visible);
}
}
[TestMethod]
public void FormHandlerControl_ShouldSetFormBorderStyle_OnInitialization()
{
// Arrange and act
using (var testFormHandlerControl = new TestFormControl())
{
// Assert
Assert.AreEqual(FormBorderStyle.None, testFormHandlerControl.FormBorderStyle);
}
}
[TestMethod]
public void FormHandlerControl_ShouldReturnValidHandle_WhenGetHandleCalled()
{
// Arrange
using (var testFormHandlerControl = new TestFormControl())
{
// Act
var handle = testFormHandlerControl.GetHandle();
// Assert
Assert.AreEqual(testFormHandlerControl.Handle, handle);
}
}
[TestMethod]
public void FormHandlerControl_ShouldSetBackgroundColor_WhenSetBackgroundColorCalled()
{
// Arrange
using (var testFormHandlerControl = new TestFormControl())
{
var color = Color.Navy;
// Act
testFormHandlerControl.SetBackgroundColor(color);
// Assert
Assert.AreEqual(color, testFormHandlerControl.BackColor);
}
}
[TestMethod]
public void FormHandlerControl_ShouldSetFont_WhenSetFontCalled()
{
// Arrange
using (var testFormHandlerControl = new TestFormControl())
{
var font = new Font("Arial", 20);
// Act
testFormHandlerControl.SetFont(font);
// Assert
Assert.AreEqual(font, testFormHandlerControl.Font);
}
}
[TestMethod]
public void FormHandlerControl_ShouldUpdateBounds_WhenSetRectCalled()
{
// Arrange
using (var testFormHandlerControl = new TestFormControl())
{
var bounds = new Rectangle(2, 2, 4, 4);
// Act
testFormHandlerControl.SetRect(bounds);
// Assert
Assert.AreEqual(bounds, testFormHandlerControl.Bounds);
}
}
[TestMethod]
public void FormHandlerControl_ShouldSetTextColor_WhenSetTextColorCalled()
{
// Arrange
using (var testFormHandlerControl = new TestFormControl())
{
var color = Color.Navy;
// Act
testFormHandlerControl.SetTextColor(color);
// Assert
Assert.AreEqual(color, testFormHandlerControl.ForeColor);
}
}
[TestMethod]
public void FormHandlerControl_ShouldClearAllControls_WhenUnloadCalled()
{
// Arrange
using (var testFormHandlerControl = new TestFormControl())
{
testFormHandlerControl.Controls.Add(new TextBox());
testFormHandlerControl.Controls.Add(new RichTextBox());
// Act
testFormHandlerControl.Unload();
// Assert
Assert.AreEqual(0, testFormHandlerControl.Controls.Count);
}
}
[TestMethod]
public void FormHandlerControl_ShouldSetVisibleFalse_WhenUnloadCalled()
{
// Arrange
using (var testFormHandlerControl = new TestFormControl())
{
// Act
testFormHandlerControl.Unload();
// Assert
Assert.IsFalse(testFormHandlerControl.Visible);
}
}
[TestMethod]
public void FormHandlerControl_ShouldSetVisibletrue_WhenDoPreviewCalled()
{
// Arrange
using (var testFormHandlerControl = new TestFormControl())
{
// Act
testFormHandlerControl.DoPreview("valid-path");
// Assert
Assert.IsTrue(testFormHandlerControl.Visible);
}
}
[TestMethod]
public void FormHandlerControl_ShouldSetParentHandle_WhenSetWindowCalled()
{
// Arrange
using (var testFormHandlerControl = new TestFormControl())
{
var parentFormWindow = new UserControl();
var parentHwnd = parentFormWindow.Handle;
var rect = new Rectangle(2, 2, 4, 4);
// Act
testFormHandlerControl.SetWindow(parentHwnd, rect);
var actualParentHwnd = GetAncestor(testFormHandlerControl.Handle, 1); // GA_PARENT 1
// Assert
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);
}
}
// 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.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using Common;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace UnitTests_PreviewHandlerCommon
{
[TestClass]
public class FormHandlerControlTests
{
private class TestFormControl : FormHandlerControl
{
}
[TestMethod]
public void FormHandlerControl_ShouldCreateHandle_OnInitialization()
{
// Arrange and act
using (var testFormHandlerControl = new TestFormControl())
{
// Assert
Assert.IsTrue(testFormHandlerControl.IsHandleCreated);
}
}
[TestMethod]
public void FormHandlerControl_ShouldSetVisibleFalse_OnInitialization()
{
// Arrange and act
using (var testFormHandlerControl = new TestFormControl())
{
// Assert
Assert.IsFalse(testFormHandlerControl.Visible);
}
}
[TestMethod]
public void FormHandlerControl_ShouldSetFormBorderStyle_OnInitialization()
{
// Arrange and act
using (var testFormHandlerControl = new TestFormControl())
{
// Assert
Assert.AreEqual(FormBorderStyle.None, testFormHandlerControl.FormBorderStyle);
}
}
[TestMethod]
public void FormHandlerControl_ShouldReturnValidHandle_WhenGetHandleCalled()
{
// Arrange
using (var testFormHandlerControl = new TestFormControl())
{
// Act
var handle = testFormHandlerControl.GetHandle();
// Assert
Assert.AreEqual(testFormHandlerControl.Handle, handle);
}
}
[TestMethod]
public void FormHandlerControl_ShouldSetBackgroundColor_WhenSetBackgroundColorCalled()
{
// Arrange
using (var testFormHandlerControl = new TestFormControl())
{
var color = Color.Navy;
// Act
testFormHandlerControl.SetBackgroundColor(color);
// Assert
Assert.AreEqual(color, testFormHandlerControl.BackColor);
}
}
[TestMethod]
public void FormHandlerControl_ShouldSetFont_WhenSetFontCalled()
{
// Arrange
using (var testFormHandlerControl = new TestFormControl())
{
var font = new Font("Arial", 20);
// Act
testFormHandlerControl.SetFont(font);
// Assert
Assert.AreEqual(font, testFormHandlerControl.Font);
}
}
[TestMethod]
public void FormHandlerControl_ShouldUpdateBounds_WhenSetRectCalled()
{
// Arrange
using (var testFormHandlerControl = new TestFormControl())
{
var bounds = new Rectangle(2, 2, 4, 4);
// Act
testFormHandlerControl.SetRect(bounds);
// Assert
Assert.AreEqual(bounds, testFormHandlerControl.Bounds);
}
}
[TestMethod]
public void FormHandlerControl_ShouldSetTextColor_WhenSetTextColorCalled()
{
// Arrange
using (var testFormHandlerControl = new TestFormControl())
{
var color = Color.Navy;
// Act
testFormHandlerControl.SetTextColor(color);
// Assert
Assert.AreEqual(color, testFormHandlerControl.ForeColor);
}
}
[TestMethod]
public void FormHandlerControl_ShouldClearAllControls_WhenUnloadCalled()
{
// Arrange
using (var testFormHandlerControl = new TestFormControl())
{
testFormHandlerControl.Controls.Add(new TextBox());
testFormHandlerControl.Controls.Add(new RichTextBox());
// Act
testFormHandlerControl.Unload();
// Assert
Assert.AreEqual(0, testFormHandlerControl.Controls.Count);
}
}
[TestMethod]
public void FormHandlerControl_ShouldSetVisibleFalse_WhenUnloadCalled()
{
// Arrange
using (var testFormHandlerControl = new TestFormControl())
{
// Act
testFormHandlerControl.Unload();
// Assert
Assert.IsFalse(testFormHandlerControl.Visible);
}
}
[TestMethod]
public void FormHandlerControl_ShouldSetVisibletrue_WhenDoPreviewCalled()
{
// Arrange
using (var testFormHandlerControl = new TestFormControl())
{
// Act
testFormHandlerControl.DoPreview("valid-path");
// Assert
Assert.IsTrue(testFormHandlerControl.Visible);
}
}
[TestMethod]
public void FormHandlerControl_ShouldSetParentHandle_WhenSetWindowCalled()
{
// Arrange
using (var testFormHandlerControl = new TestFormControl())
{
var parentFormWindow = new UserControl();
var parentHwnd = parentFormWindow.Handle;
var rect = new Rectangle(2, 2, 4, 4);
// Act
testFormHandlerControl.SetWindow(parentHwnd, rect);
var actualParentHwnd = GetAncestor(testFormHandlerControl.Handle, 1); // GA_PARENT 1
// Assert
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

@@ -1,394 +1,394 @@
// 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.ComponentModel;
using System.Drawing;
using Common;
using Common.ComInterlop;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
namespace UnitTests_PreviewHandlerCommon
{
[TestClass]
public class PreviewHandlerBaseTests
{
private static IPreviewHandlerControl previewHandlerControl;
public class TestPreviewHandler : PreviewHandlerBase
{
public override void DoPreview()
{
throw new NotImplementedException();
}
protected override IPreviewHandlerControl CreatePreviewHandlerControl()
{
return GetMockPreviewHandlerControl();
}
}
[TestMethod]
public void PreviewHandlerBase_ShouldCallPreviewControlSetWindow_WhenSetWindowCalled()
{
// Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
var handle = new IntPtr(5);
var bounds = GetRectangle(2, 2, 4, 4);
var actualHandle = IntPtr.Zero;
var actualBounds = Rectangle.Empty;
mockPreviewControl
.Setup(_ => _.SetWindow(It.IsAny<IntPtr>(), It.IsAny<Rectangle>()))
.Callback<IntPtr, Rectangle>((hwnd, rect) =>
{
actualHandle = hwnd;
actualBounds = rect;
});
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
// Act
testPreviewHandler.SetWindow(handle, ref bounds);
// Assert
Assert.AreEqual(actualHandle, handle);
Assert.AreEqual(actualBounds, bounds.ToRectangle());
mockPreviewControl.Verify(_ => _.SetWindow(It.IsAny<IntPtr>(), It.IsAny<Rectangle>()), Times.Once);
}
[TestMethod]
public void PreviewHandlerBase_ShouldCallPreviewControlSetrect_WhenSetRectCalled()
{
// Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
var bounds = GetRectangle(2, 2, 4, 4);
var actualBounds = Rectangle.Empty;
mockPreviewControl
.Setup(_ => _.SetRect(It.IsAny<Rectangle>()))
.Callback<Rectangle>((rect) =>
{
actualBounds = rect;
});
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
// Act
testPreviewHandler.SetRect(ref bounds);
// Assert
Assert.AreEqual(actualBounds, bounds.ToRectangle());
mockPreviewControl.Verify(_ => _.SetRect(It.IsAny<Rectangle>()), Times.Once);
}
[TestMethod]
public void PreviewHandlerBase_ShouldCallPreviewControlUnload_WhenUnloadCalled()
{
// Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
// Act
testPreviewHandler.Unload();
// Assert
mockPreviewControl.Verify(_ => _.Unload(), Times.Once);
}
[TestMethod]
public void PreviewHandlerBase_ShouldCallPreviewControlSetBackgroundColor_WhenSetBackgroundColorCalled()
{
// Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
var color = default(COLORREF);
// Act
testPreviewHandler.SetBackgroundColor(color);
// Assert
mockPreviewControl.Verify(_ => _.SetBackgroundColor(It.Is<Color>(c => (c == color.Color))), Times.Once);
}
[TestMethod]
public void PreviewHandlerBase_ShouldCallPreviewControlSetTextColor_WhenSetTextColorCalled()
{
// Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
var color = default(COLORREF);
// Act
testPreviewHandler.SetTextColor(color);
// Assert
mockPreviewControl.Verify(_ => _.SetTextColor(It.Is<Color>(c => (c == color.Color))), Times.Once);
}
[TestMethod]
public void PreviewHandlerBase_ShouldCallPreviewControlSetFont_WhenSetFontCalled()
{
// Arrange
Font actualFont = null;
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
mockPreviewControl
.Setup(x => x.SetFont(It.IsAny<Font>()))
.Callback<Font>((font) =>
{
actualFont = font;
});
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
var logFont = GetLogFont();
// Act
testPreviewHandler.SetFont(ref logFont);
// Assert
mockPreviewControl.Verify(_ => _.SetFont(It.IsAny<Font>()), Times.Once);
Assert.AreEqual(Font.FromLogFont(logFont), actualFont);
}
[TestMethod]
public void PreviewHandlerBase_ShouldCallPreviewControlSetFocus_WhenSetFocusCalled()
{
// Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
// Act
testPreviewHandler.SetFocus();
// Assert
mockPreviewControl.Verify(_ => _.SetFocus(), Times.Once);
}
[TestMethod]
public void PreviewHandlerBase_ShouldSetHandleOnQueryFocus_WhenPreviewControlsReturnValidHandle()
{
// Arrange
var hwnd = new IntPtr(5);
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
mockPreviewControl.Setup(x => x.QueryFocus(out hwnd));
var actualHwnd = IntPtr.Zero;
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
// Act
testPreviewHandler.QueryFocus(out actualHwnd);
// Assert
Assert.AreEqual(actualHwnd, hwnd);
mockPreviewControl.Verify(_ => _.QueryFocus(out hwnd), Times.Once);
}
[TestMethod]
public void PreviewHandlerBase_ShouldThrowOnQueryFocus_WhenPreviewControlsReturnNotValidHandle()
{
// Arrange
var hwnd = IntPtr.Zero;
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
mockPreviewControl.Setup(x => x.QueryFocus(out hwnd));
var actualHwnd = IntPtr.Zero;
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
Win32Exception exception = null;
// Act
try
{
testPreviewHandler.QueryFocus(out actualHwnd);
}
catch (Win32Exception ex)
{
exception = ex;
}
// Assert
Assert.IsNotNull(exception);
mockPreviewControl.Verify(_ => _.QueryFocus(out hwnd), Times.Once);
}
[TestMethod]
public void PreviewHandlerBase_ShouldDirectKeyStrokesToIPreviewHandlerFrame_IfIPreviewHandlerFrameIsSet()
{
// Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
var mockPreviewHandlerFrame = new Mock<IPreviewHandlerFrame>();
var msg = default(MSG);
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
testPreviewHandler.SetSite(mockPreviewHandlerFrame.Object);
// Act
testPreviewHandler.TranslateAccelerator(ref msg);
// Assert
mockPreviewHandlerFrame.Verify(_ => _.TranslateAccelerator(ref msg), Times.Once);
}
[DataTestMethod]
[DataRow(0U)]
[DataRow(1U)]
public void PreviewHandlerBase_ShouldReturnIPreviewHandlerFrameResponse_IfIPreviewHandlerFrameIsSet(uint resultCode)
{
// Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
var mockPreviewHandlerFrame = new Mock<IPreviewHandlerFrame>();
var msg = default(MSG);
mockPreviewHandlerFrame
.Setup(x => x.TranslateAccelerator(ref msg))
.Returns(resultCode);
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
testPreviewHandler.SetSite(mockPreviewHandlerFrame.Object);
// Act
var actualResultCode = testPreviewHandler.TranslateAccelerator(ref msg);
// Assert
Assert.AreEqual(resultCode, actualResultCode);
}
[TestMethod]
public void PreviewHandlerBase_ShouldReturnS_FALSE_IfIPreviewHandlerFrameIsNotSet()
{
// Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
var msg = default(MSG);
uint sFalse = 1;
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
// Act
var result = testPreviewHandler.TranslateAccelerator(ref msg);
// Assert
Assert.AreEqual(result, sFalse);
}
[TestMethod]
public void PreviewHandlerBase_ShouldReturnPreviewControlHandle_IfGetWindowCalled()
{
// Arrange
var previewControlHandle = new IntPtr(5);
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
mockPreviewControl.Setup(x => x.GetHandle())
.Returns(previewControlHandle);
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
var hwndReceived = IntPtr.Zero;
// Act
testPreviewHandler.GetWindow(out hwndReceived);
// Assert
Assert.AreEqual(hwndReceived, previewControlHandle);
}
[DataTestMethod]
[DataRow(true)]
[DataRow(false)]
public void PreviewHandlerBase_ShouldThrowNotImplementedException_IfContextSensitiveHelpCalled(bool fEnterMode)
{
// Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
NotImplementedException exception = null;
// Act
try
{
testPreviewHandler.ContextSensitiveHelp(fEnterMode);
}
catch (NotImplementedException ex)
{
exception = ex;
}
// Assert
Assert.IsNotNull(exception);
}
[TestMethod]
public void PreviewHandlerBase_ShouldReturnSite_WhenGetSiteCalled()
{
// Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
var site = new Mock<IPreviewHandlerFrame>().Object;
testPreviewHandler.SetSite(site);
object actualSite = null;
var riid = Guid.Empty;
// Act
testPreviewHandler.GetSite(ref riid, out actualSite);
// Assert
Assert.AreEqual(actualSite, site);
}
private LOGFONT GetLogFont()
{
var logFont = new LOGFONT
{
LfHeight = 12,
LfWidth = 0,
LfEscapement = 0,
LfWeight = 400, // FW_NORMAL
LfItalic = Convert.ToByte(false),
LfUnderline = Convert.ToByte(false),
LfStrikeOut = Convert.ToByte(0),
LfCharSet = Convert.ToByte(0), // ANSI_CHARSET
LfOutPrecision = Convert.ToByte(0), // OUT_DEFAULT_PRECIS
LfClipPrecision = Convert.ToByte(0),
LfQuality = Convert.ToByte(0),
LfPitchAndFamily = Convert.ToByte(0),
LfFaceName = "valid-font",
};
return logFont;
}
private RECT GetRectangle(int left, int top, int right, int bottom)
{
var rect = new RECT
{
Left = left,
Top = top,
Right = right,
Bottom = bottom,
};
return rect;
}
private static IPreviewHandlerControl GetMockPreviewHandlerControl()
{
return previewHandlerControl;
}
}
}
// 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.ComponentModel;
using System.Drawing;
using Common;
using Common.ComInterlop;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
namespace UnitTests_PreviewHandlerCommon
{
[TestClass]
public class PreviewHandlerBaseTests
{
private static IPreviewHandlerControl previewHandlerControl;
public class TestPreviewHandler : PreviewHandlerBase
{
public override void DoPreview()
{
throw new NotImplementedException();
}
protected override IPreviewHandlerControl CreatePreviewHandlerControl()
{
return GetMockPreviewHandlerControl();
}
}
[TestMethod]
public void PreviewHandlerBase_ShouldCallPreviewControlSetWindow_WhenSetWindowCalled()
{
// Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
var handle = new IntPtr(5);
var bounds = GetRectangle(2, 2, 4, 4);
var actualHandle = IntPtr.Zero;
var actualBounds = Rectangle.Empty;
mockPreviewControl
.Setup(_ => _.SetWindow(It.IsAny<IntPtr>(), It.IsAny<Rectangle>()))
.Callback<IntPtr, Rectangle>((hwnd, rect) =>
{
actualHandle = hwnd;
actualBounds = rect;
});
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
// Act
testPreviewHandler.SetWindow(handle, ref bounds);
// Assert
Assert.AreEqual(actualHandle, handle);
Assert.AreEqual(actualBounds, bounds.ToRectangle());
mockPreviewControl.Verify(_ => _.SetWindow(It.IsAny<IntPtr>(), It.IsAny<Rectangle>()), Times.Once);
}
[TestMethod]
public void PreviewHandlerBase_ShouldCallPreviewControlSetrect_WhenSetRectCalled()
{
// Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
var bounds = GetRectangle(2, 2, 4, 4);
var actualBounds = Rectangle.Empty;
mockPreviewControl
.Setup(_ => _.SetRect(It.IsAny<Rectangle>()))
.Callback<Rectangle>((rect) =>
{
actualBounds = rect;
});
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
// Act
testPreviewHandler.SetRect(ref bounds);
// Assert
Assert.AreEqual(actualBounds, bounds.ToRectangle());
mockPreviewControl.Verify(_ => _.SetRect(It.IsAny<Rectangle>()), Times.Once);
}
[TestMethod]
public void PreviewHandlerBase_ShouldCallPreviewControlUnload_WhenUnloadCalled()
{
// Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
// Act
testPreviewHandler.Unload();
// Assert
mockPreviewControl.Verify(_ => _.Unload(), Times.Once);
}
[TestMethod]
public void PreviewHandlerBase_ShouldCallPreviewControlSetBackgroundColor_WhenSetBackgroundColorCalled()
{
// Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
var color = default(COLORREF);
// Act
testPreviewHandler.SetBackgroundColor(color);
// Assert
mockPreviewControl.Verify(_ => _.SetBackgroundColor(It.Is<Color>(c => (c == color.Color))), Times.Once);
}
[TestMethod]
public void PreviewHandlerBase_ShouldCallPreviewControlSetTextColor_WhenSetTextColorCalled()
{
// Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
var color = default(COLORREF);
// Act
testPreviewHandler.SetTextColor(color);
// Assert
mockPreviewControl.Verify(_ => _.SetTextColor(It.Is<Color>(c => (c == color.Color))), Times.Once);
}
[TestMethod]
public void PreviewHandlerBase_ShouldCallPreviewControlSetFont_WhenSetFontCalled()
{
// Arrange
Font actualFont = null;
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
mockPreviewControl
.Setup(x => x.SetFont(It.IsAny<Font>()))
.Callback<Font>((font) =>
{
actualFont = font;
});
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
var logFont = GetLogFont();
// Act
testPreviewHandler.SetFont(ref logFont);
// Assert
mockPreviewControl.Verify(_ => _.SetFont(It.IsAny<Font>()), Times.Once);
Assert.AreEqual(Font.FromLogFont(logFont), actualFont);
}
[TestMethod]
public void PreviewHandlerBase_ShouldCallPreviewControlSetFocus_WhenSetFocusCalled()
{
// Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
// Act
testPreviewHandler.SetFocus();
// Assert
mockPreviewControl.Verify(_ => _.SetFocus(), Times.Once);
}
[TestMethod]
public void PreviewHandlerBase_ShouldSetHandleOnQueryFocus_WhenPreviewControlsReturnValidHandle()
{
// Arrange
var hwnd = new IntPtr(5);
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
mockPreviewControl.Setup(x => x.QueryFocus(out hwnd));
var actualHwnd = IntPtr.Zero;
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
// Act
testPreviewHandler.QueryFocus(out actualHwnd);
// Assert
Assert.AreEqual(actualHwnd, hwnd);
mockPreviewControl.Verify(_ => _.QueryFocus(out hwnd), Times.Once);
}
[TestMethod]
public void PreviewHandlerBase_ShouldThrowOnQueryFocus_WhenPreviewControlsReturnNotValidHandle()
{
// Arrange
var hwnd = IntPtr.Zero;
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
mockPreviewControl.Setup(x => x.QueryFocus(out hwnd));
var actualHwnd = IntPtr.Zero;
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
Win32Exception exception = null;
// Act
try
{
testPreviewHandler.QueryFocus(out actualHwnd);
}
catch (Win32Exception ex)
{
exception = ex;
}
// Assert
Assert.IsNotNull(exception);
mockPreviewControl.Verify(_ => _.QueryFocus(out hwnd), Times.Once);
}
[TestMethod]
public void PreviewHandlerBase_ShouldDirectKeyStrokesToIPreviewHandlerFrame_IfIPreviewHandlerFrameIsSet()
{
// Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
var mockPreviewHandlerFrame = new Mock<IPreviewHandlerFrame>();
var msg = default(MSG);
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
testPreviewHandler.SetSite(mockPreviewHandlerFrame.Object);
// Act
testPreviewHandler.TranslateAccelerator(ref msg);
// Assert
mockPreviewHandlerFrame.Verify(_ => _.TranslateAccelerator(ref msg), Times.Once);
}
[DataTestMethod]
[DataRow(0U)]
[DataRow(1U)]
public void PreviewHandlerBase_ShouldReturnIPreviewHandlerFrameResponse_IfIPreviewHandlerFrameIsSet(uint resultCode)
{
// Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
var mockPreviewHandlerFrame = new Mock<IPreviewHandlerFrame>();
var msg = default(MSG);
mockPreviewHandlerFrame
.Setup(x => x.TranslateAccelerator(ref msg))
.Returns(resultCode);
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
testPreviewHandler.SetSite(mockPreviewHandlerFrame.Object);
// Act
var actualResultCode = testPreviewHandler.TranslateAccelerator(ref msg);
// Assert
Assert.AreEqual(resultCode, actualResultCode);
}
[TestMethod]
public void PreviewHandlerBase_ShouldReturnS_FALSE_IfIPreviewHandlerFrameIsNotSet()
{
// Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
var msg = default(MSG);
uint sFalse = 1;
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
// Act
var result = testPreviewHandler.TranslateAccelerator(ref msg);
// Assert
Assert.AreEqual(result, sFalse);
}
[TestMethod]
public void PreviewHandlerBase_ShouldReturnPreviewControlHandle_IfGetWindowCalled()
{
// Arrange
var previewControlHandle = new IntPtr(5);
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
mockPreviewControl.Setup(x => x.GetHandle())
.Returns(previewControlHandle);
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
var hwndReceived = IntPtr.Zero;
// Act
testPreviewHandler.GetWindow(out hwndReceived);
// Assert
Assert.AreEqual(hwndReceived, previewControlHandle);
}
[DataTestMethod]
[DataRow(true)]
[DataRow(false)]
public void PreviewHandlerBase_ShouldThrowNotImplementedException_IfContextSensitiveHelpCalled(bool fEnterMode)
{
// Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
NotImplementedException exception = null;
// Act
try
{
testPreviewHandler.ContextSensitiveHelp(fEnterMode);
}
catch (NotImplementedException ex)
{
exception = ex;
}
// Assert
Assert.IsNotNull(exception);
}
[TestMethod]
public void PreviewHandlerBase_ShouldReturnSite_WhenGetSiteCalled()
{
// Arrange
var mockPreviewControl = new Mock<IPreviewHandlerControl>();
previewHandlerControl = mockPreviewControl.Object;
var testPreviewHandler = new TestPreviewHandler();
var site = new Mock<IPreviewHandlerFrame>().Object;
testPreviewHandler.SetSite(site);
object actualSite = null;
var riid = Guid.Empty;
// Act
testPreviewHandler.GetSite(ref riid, out actualSite);
// Assert
Assert.AreEqual(actualSite, site);
}
private LOGFONT GetLogFont()
{
var logFont = new LOGFONT
{
LfHeight = 12,
LfWidth = 0,
LfEscapement = 0,
LfWeight = 400, // FW_NORMAL
LfItalic = Convert.ToByte(false),
LfUnderline = Convert.ToByte(false),
LfStrikeOut = Convert.ToByte(0),
LfCharSet = Convert.ToByte(0), // ANSI_CHARSET
LfOutPrecision = Convert.ToByte(0), // OUT_DEFAULT_PRECIS
LfClipPrecision = Convert.ToByte(0),
LfQuality = Convert.ToByte(0),
LfPitchAndFamily = Convert.ToByte(0),
LfFaceName = "valid-font",
};
return logFont;
}
private RECT GetRectangle(int left, int top, int right, int bottom)
{
var rect = new RECT
{
Left = left,
Top = top,
Right = right,
Bottom = bottom,
};
return rect;
}
private static IPreviewHandlerControl GetMockPreviewHandlerControl()
{
return previewHandlerControl;
}
}
}

View File

@@ -1,45 +1,45 @@
// 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.ComTypes;
using Common;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
namespace UnitTests_PreviewHandlerCommon
{
[TestClass]
public class StreamBasedPreviewHandlerTests
{
public class TestStreamBasedPreviewHandler : StreamBasedPreviewHandler
{
public override void DoPreview()
{
throw new NotImplementedException();
}
protected override IPreviewHandlerControl CreatePreviewHandlerControl()
{
return new Mock<IPreviewHandlerControl>().Object;
}
}
[DataTestMethod]
[DataRow(0U)]
[DataRow(1U)]
public void StreamBasedPreviewHandler_ShouldSetStream_WhenInitializeCalled(uint grfMode)
{
// Arrange
var streamBasedPreviewHandler = new TestStreamBasedPreviewHandler();
var stream = new Mock<IStream>().Object;
// Act
streamBasedPreviewHandler.Initialize(stream, grfMode);
// Assert
Assert.AreEqual(streamBasedPreviewHandler.Stream, stream);
}
}
}
// 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.ComTypes;
using Common;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
namespace UnitTests_PreviewHandlerCommon
{
[TestClass]
public class StreamBasedPreviewHandlerTests
{
public class TestStreamBasedPreviewHandler : StreamBasedPreviewHandler
{
public override void DoPreview()
{
throw new NotImplementedException();
}
protected override IPreviewHandlerControl CreatePreviewHandlerControl()
{
return new Mock<IPreviewHandlerControl>().Object;
}
}
[DataTestMethod]
[DataRow(0U)]
[DataRow(1U)]
public void StreamBasedPreviewHandler_ShouldSetStream_WhenInitializeCalled(uint grfMode)
{
// Arrange
var streamBasedPreviewHandler = new TestStreamBasedPreviewHandler();
var stream = new Mock<IStream>().Object;
// Act
streamBasedPreviewHandler.Initialize(stream, grfMode);
// Assert
Assert.AreEqual(streamBasedPreviewHandler.Stream, stream);
}
}
}

View File

@@ -1,331 +1,331 @@
// 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.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
using Common.Utilities;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
namespace UnitTests_PreviewHandlerCommon
{
[TestClass]
public class StreamWrapperTests
{
[TestMethod]
public void StreamWrapper_ShouldThrow_IfInitializeWithNullStream()
{
// Arrange
IStream stream = null;
ArgumentNullException exception = null;
// Act
try
{
var streamWrapper = new StreamWrapper(stream);
}
catch (ArgumentNullException ex)
{
exception = ex;
}
// Assert
Assert.IsNotNull(exception);
}
[TestMethod]
public void StreamWrapper_ShouldReturnCanReadTrue()
{
// Arrange
var streamMock = new Mock<IStream>();
// Act
var streamWrapper = new StreamWrapper(streamMock.Object);
// Assert
Assert.AreEqual(streamWrapper.CanRead, true);
}
[TestMethod]
public void StreamWrapper_ShouldReturnCanSeekTrue()
{
// Arrange
var streamMock = new Mock<IStream>();
// Act
var streamWrapper = new StreamWrapper(streamMock.Object);
// Assert
Assert.AreEqual(streamWrapper.CanSeek, true);
}
[TestMethod]
public void StreamWrapper_ShouldReturnCanWriteFalse()
{
// Arrange
var streamMock = new Mock<IStream>();
// Act
var streamWrapper = new StreamWrapper(streamMock.Object);
// Assert
Assert.AreEqual(streamWrapper.CanWrite, false);
}
[TestMethod]
public void StreamWrapper_ShouldReturnValidLength()
{
// Arrange
long streamLength = 5;
var stremMock = new Mock<IStream>();
var stat = new System.Runtime.InteropServices.ComTypes.STATSTG
{
cbSize = streamLength,
};
stremMock
.Setup(x => x.Stat(out stat, It.IsAny<int>()));
var streamWrapper = new StreamWrapper(stremMock.Object);
// Act
var actualLength = streamWrapper.Length;
// Assert
Assert.AreEqual(actualLength, streamLength);
}
[TestMethod]
public void StreamWrapper_ShouldReturnValidPosition()
{
// Arrange
int expectedDwOrigin = 1; // STREAM_SEEK_CUR
long expectedOffset = 0;
long currPosition = 5;
var stremMock = new Mock<IStream>();
stremMock
.Setup(x => x.Seek(It.IsAny<long>(), It.IsAny<int>(), It.IsAny<IntPtr>()))
.Callback<long, int, IntPtr>((dlibMove, dwOrigin, plibNewPosition) =>
{
Marshal.WriteInt64(plibNewPosition, currPosition);
});
var streamWrapper = new StreamWrapper(stremMock.Object);
// Act
var actualPosition = streamWrapper.Position;
// Assert
Assert.AreEqual(actualPosition, currPosition);
stremMock.Verify(_ => _.Seek(It.Is<long>(offset => offset == expectedOffset), It.Is<int>(dworigin => dworigin == expectedDwOrigin), It.IsAny<IntPtr>()), Times.Once);
}
[TestMethod]
public void StreamWrapper_ShouldCallIStreamSeek_WhenSetPosition()
{
// Arrange
long positionToSet = 5;
int expectedDwOrigin = 0; // STREAM_SEEK_SET
var stremMock = new Mock<IStream>();
var streamWrapper = new StreamWrapper(stremMock.Object)
{
// Act
Position = positionToSet,
};
// Assert
stremMock.Verify(_ => _.Seek(It.Is<long>(offset => offset == positionToSet), It.Is<int>(dworigin => dworigin == expectedDwOrigin), It.IsAny<IntPtr>()), Times.Once);
}
[DataTestMethod]
[DataRow(0L, SeekOrigin.Begin)]
[DataRow(5L, SeekOrigin.Begin)]
[DataRow(0L, SeekOrigin.Current)]
[DataRow(5L, SeekOrigin.Current)]
[DataRow(0L, SeekOrigin.End)]
[DataRow(5L, SeekOrigin.End)]
public void StreamWrapper_ShouldCallIStreamSeekWithValidArguments_WhenSeekCalled(long offset, SeekOrigin origin)
{
// Arrange
int expectedDwOrigin = 0;
switch (origin)
{
case SeekOrigin.Begin:
expectedDwOrigin = 0;
break;
case SeekOrigin.Current:
expectedDwOrigin = 1;
break;
case SeekOrigin.End:
expectedDwOrigin = 2;
break;
}
var stremMock = new Mock<IStream>();
var streamWrapper = new StreamWrapper(stremMock.Object);
// Act
streamWrapper.Seek(offset, origin);
// Assert
stremMock.Verify(_ => _.Seek(It.Is<long>(actualOffset => actualOffset == offset), It.Is<int>(actualDwOrigin => actualDwOrigin == expectedDwOrigin), It.IsAny<IntPtr>()), Times.Once);
}
[TestMethod]
public void StreamWrapper_ShouldReturnValidPosition_WhenSeekCalled()
{
// Arrange
long position = 5;
var stremMock = new Mock<IStream>();
stremMock
.Setup(x => x.Seek(It.IsAny<long>(), It.IsAny<int>(), It.IsAny<IntPtr>()))
.Callback<long, int, IntPtr>((dlibMove, dwOrigin, plibNewPosition) =>
{
Marshal.WriteInt64(plibNewPosition, position);
});
var streamWrapper = new StreamWrapper(stremMock.Object);
// Act
var actualPosition = streamWrapper.Seek(0, SeekOrigin.Begin);
// Assert
Assert.AreEqual(position, actualPosition);
}
[DataTestMethod]
[DataRow(10, -1, 5)]
[DataRow(10, 0, -5)]
[DataRow(10, 0, 11)]
[DataRow(10, 5, 6)]
public void StreamWrapper_ShouldThrow_WhenReadCalledWithOutOfRangeArguments(int bufferLength, int offSet, int bytesToRead)
{
// Arrange
var buffer = new byte[bufferLength];
var stremMock = new Mock<IStream>();
ArgumentOutOfRangeException exception = null;
var streamWrapper = new StreamWrapper(stremMock.Object);
// Act
try
{
streamWrapper.Read(buffer, offSet, bytesToRead);
}
catch (ArgumentOutOfRangeException ex)
{
exception = ex;
}
// Assert
Assert.IsNotNull(exception);
}
[DataTestMethod]
[DataRow(5, 0)]
[DataRow(5, 5)]
[DataRow(0, 5)]
public void StreamWrapper_ShouldSetValidBuffer_WhenReadCalled(int count, int offset)
{
// Arrange
var inputBuffer = new byte[1024];
var streamBytes = new byte[count];
for (int i = 0; i < count; i++)
{
streamBytes[i] = (byte)i;
}
var stremMock = new Mock<IStream>();
stremMock
.Setup(x => x.Read(It.IsAny<byte[]>(), It.IsAny<int>(), It.IsAny<IntPtr>()))
.Callback<byte[], int, IntPtr>((buffer, countToRead, bytesReadPtr) =>
{
Array.Copy(streamBytes, 0, buffer, 0, streamBytes.Length);
Marshal.WriteInt32(bytesReadPtr, count);
});
var streamWrapper = new StreamWrapper(stremMock.Object);
// Act
var bytesRead = streamWrapper.Read(inputBuffer, offset, count);
// Assert
CollectionAssert.AreEqual(streamBytes, inputBuffer.Skip(offset).Take(count).ToArray());
Assert.AreEqual(count, bytesRead);
}
[TestMethod]
public void StreamWrapper_ShouldThrowNotImplementedException_WhenFlushCalled()
{
// Arrange
var stremMock = new Mock<IStream>();
var streamWrapper = new StreamWrapper(stremMock.Object);
NotImplementedException exception = null;
// Act
try
{
streamWrapper.Flush();
}
catch (NotImplementedException ex)
{
exception = ex;
}
// Assert
Assert.IsNotNull(exception);
}
[TestMethod]
public void StreamWrapper_ShouldThrowNotImplementedException_WhenSetLengthCalled()
{
// Arrange
var stremMock = new Mock<IStream>();
var streamWrapper = new StreamWrapper(stremMock.Object);
NotImplementedException exception = null;
// Act
try
{
streamWrapper.SetLength(5);
}
catch (NotImplementedException ex)
{
exception = ex;
}
// Assert
Assert.IsNotNull(exception);
}
[TestMethod]
public void StreamWrapper_ShouldThrowNotImplementedException_WhenWriteCalled()
{
// Arrange
var stremMock = new Mock<IStream>();
var streamWrapper = new StreamWrapper(stremMock.Object);
NotImplementedException exception = null;
// Act
try
{
streamWrapper.Write(new byte[5], 0, 0);
}
catch (NotImplementedException ex)
{
exception = ex;
}
// Assert
Assert.IsNotNull(exception);
}
}
}
// 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.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
using Common.Utilities;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
namespace UnitTests_PreviewHandlerCommon
{
[TestClass]
public class StreamWrapperTests
{
[TestMethod]
public void StreamWrapper_ShouldThrow_IfInitializeWithNullStream()
{
// Arrange
IStream stream = null;
ArgumentNullException exception = null;
// Act
try
{
var streamWrapper = new StreamWrapper(stream);
}
catch (ArgumentNullException ex)
{
exception = ex;
}
// Assert
Assert.IsNotNull(exception);
}
[TestMethod]
public void StreamWrapper_ShouldReturnCanReadTrue()
{
// Arrange
var streamMock = new Mock<IStream>();
// Act
var streamWrapper = new StreamWrapper(streamMock.Object);
// Assert
Assert.AreEqual(streamWrapper.CanRead, true);
}
[TestMethod]
public void StreamWrapper_ShouldReturnCanSeekTrue()
{
// Arrange
var streamMock = new Mock<IStream>();
// Act
var streamWrapper = new StreamWrapper(streamMock.Object);
// Assert
Assert.AreEqual(streamWrapper.CanSeek, true);
}
[TestMethod]
public void StreamWrapper_ShouldReturnCanWriteFalse()
{
// Arrange
var streamMock = new Mock<IStream>();
// Act
var streamWrapper = new StreamWrapper(streamMock.Object);
// Assert
Assert.AreEqual(streamWrapper.CanWrite, false);
}
[TestMethod]
public void StreamWrapper_ShouldReturnValidLength()
{
// Arrange
long streamLength = 5;
var stremMock = new Mock<IStream>();
var stat = new System.Runtime.InteropServices.ComTypes.STATSTG
{
cbSize = streamLength,
};
stremMock
.Setup(x => x.Stat(out stat, It.IsAny<int>()));
var streamWrapper = new StreamWrapper(stremMock.Object);
// Act
var actualLength = streamWrapper.Length;
// Assert
Assert.AreEqual(actualLength, streamLength);
}
[TestMethod]
public void StreamWrapper_ShouldReturnValidPosition()
{
// Arrange
int expectedDwOrigin = 1; // STREAM_SEEK_CUR
long expectedOffset = 0;
long currPosition = 5;
var stremMock = new Mock<IStream>();
stremMock
.Setup(x => x.Seek(It.IsAny<long>(), It.IsAny<int>(), It.IsAny<IntPtr>()))
.Callback<long, int, IntPtr>((dlibMove, dwOrigin, plibNewPosition) =>
{
Marshal.WriteInt64(plibNewPosition, currPosition);
});
var streamWrapper = new StreamWrapper(stremMock.Object);
// Act
var actualPosition = streamWrapper.Position;
// Assert
Assert.AreEqual(actualPosition, currPosition);
stremMock.Verify(_ => _.Seek(It.Is<long>(offset => offset == expectedOffset), It.Is<int>(dworigin => dworigin == expectedDwOrigin), It.IsAny<IntPtr>()), Times.Once);
}
[TestMethod]
public void StreamWrapper_ShouldCallIStreamSeek_WhenSetPosition()
{
// Arrange
long positionToSet = 5;
int expectedDwOrigin = 0; // STREAM_SEEK_SET
var stremMock = new Mock<IStream>();
var streamWrapper = new StreamWrapper(stremMock.Object)
{
// Act
Position = positionToSet,
};
// Assert
stremMock.Verify(_ => _.Seek(It.Is<long>(offset => offset == positionToSet), It.Is<int>(dworigin => dworigin == expectedDwOrigin), It.IsAny<IntPtr>()), Times.Once);
}
[DataTestMethod]
[DataRow(0L, SeekOrigin.Begin)]
[DataRow(5L, SeekOrigin.Begin)]
[DataRow(0L, SeekOrigin.Current)]
[DataRow(5L, SeekOrigin.Current)]
[DataRow(0L, SeekOrigin.End)]
[DataRow(5L, SeekOrigin.End)]
public void StreamWrapper_ShouldCallIStreamSeekWithValidArguments_WhenSeekCalled(long offset, SeekOrigin origin)
{
// Arrange
int expectedDwOrigin = 0;
switch (origin)
{
case SeekOrigin.Begin:
expectedDwOrigin = 0;
break;
case SeekOrigin.Current:
expectedDwOrigin = 1;
break;
case SeekOrigin.End:
expectedDwOrigin = 2;
break;
}
var stremMock = new Mock<IStream>();
var streamWrapper = new StreamWrapper(stremMock.Object);
// Act
streamWrapper.Seek(offset, origin);
// Assert
stremMock.Verify(_ => _.Seek(It.Is<long>(actualOffset => actualOffset == offset), It.Is<int>(actualDwOrigin => actualDwOrigin == expectedDwOrigin), It.IsAny<IntPtr>()), Times.Once);
}
[TestMethod]
public void StreamWrapper_ShouldReturnValidPosition_WhenSeekCalled()
{
// Arrange
long position = 5;
var stremMock = new Mock<IStream>();
stremMock
.Setup(x => x.Seek(It.IsAny<long>(), It.IsAny<int>(), It.IsAny<IntPtr>()))
.Callback<long, int, IntPtr>((dlibMove, dwOrigin, plibNewPosition) =>
{
Marshal.WriteInt64(plibNewPosition, position);
});
var streamWrapper = new StreamWrapper(stremMock.Object);
// Act
var actualPosition = streamWrapper.Seek(0, SeekOrigin.Begin);
// Assert
Assert.AreEqual(position, actualPosition);
}
[DataTestMethod]
[DataRow(10, -1, 5)]
[DataRow(10, 0, -5)]
[DataRow(10, 0, 11)]
[DataRow(10, 5, 6)]
public void StreamWrapper_ShouldThrow_WhenReadCalledWithOutOfRangeArguments(int bufferLength, int offSet, int bytesToRead)
{
// Arrange
var buffer = new byte[bufferLength];
var stremMock = new Mock<IStream>();
ArgumentOutOfRangeException exception = null;
var streamWrapper = new StreamWrapper(stremMock.Object);
// Act
try
{
streamWrapper.Read(buffer, offSet, bytesToRead);
}
catch (ArgumentOutOfRangeException ex)
{
exception = ex;
}
// Assert
Assert.IsNotNull(exception);
}
[DataTestMethod]
[DataRow(5, 0)]
[DataRow(5, 5)]
[DataRow(0, 5)]
public void StreamWrapper_ShouldSetValidBuffer_WhenReadCalled(int count, int offset)
{
// Arrange
var inputBuffer = new byte[1024];
var streamBytes = new byte[count];
for (int i = 0; i < count; i++)
{
streamBytes[i] = (byte)i;
}
var stremMock = new Mock<IStream>();
stremMock
.Setup(x => x.Read(It.IsAny<byte[]>(), It.IsAny<int>(), It.IsAny<IntPtr>()))
.Callback<byte[], int, IntPtr>((buffer, countToRead, bytesReadPtr) =>
{
Array.Copy(streamBytes, 0, buffer, 0, streamBytes.Length);
Marshal.WriteInt32(bytesReadPtr, count);
});
var streamWrapper = new StreamWrapper(stremMock.Object);
// Act
var bytesRead = streamWrapper.Read(inputBuffer, offset, count);
// Assert
CollectionAssert.AreEqual(streamBytes, inputBuffer.Skip(offset).Take(count).ToArray());
Assert.AreEqual(count, bytesRead);
}
[TestMethod]
public void StreamWrapper_ShouldThrowNotImplementedException_WhenFlushCalled()
{
// Arrange
var stremMock = new Mock<IStream>();
var streamWrapper = new StreamWrapper(stremMock.Object);
NotImplementedException exception = null;
// Act
try
{
streamWrapper.Flush();
}
catch (NotImplementedException ex)
{
exception = ex;
}
// Assert
Assert.IsNotNull(exception);
}
[TestMethod]
public void StreamWrapper_ShouldThrowNotImplementedException_WhenSetLengthCalled()
{
// Arrange
var stremMock = new Mock<IStream>();
var streamWrapper = new StreamWrapper(stremMock.Object);
NotImplementedException exception = null;
// Act
try
{
streamWrapper.SetLength(5);
}
catch (NotImplementedException ex)
{
exception = ex;
}
// Assert
Assert.IsNotNull(exception);
}
[TestMethod]
public void StreamWrapper_ShouldThrowNotImplementedException_WhenWriteCalled()
{
// Arrange
var stremMock = new Mock<IStream>();
var streamWrapper = new StreamWrapper(stremMock.Object);
NotImplementedException exception = null;
// Act
try
{
streamWrapper.Write(new byte[5], 0, 0);
}
catch (NotImplementedException ex)
{
exception = ex;
}
// Assert
Assert.IsNotNull(exception);
}
}
}