6 changed files with 141 additions and 57 deletions
@ -0,0 +1,111 @@ |
|||||
|
// -----------------------------------------------------------------------
|
||||
|
// <copyright file="LayoutManagerTests.cs" company="Steven Kirk">
|
||||
|
// Copyright 2014 MIT Licence. See licence.md for more information.
|
||||
|
// </copyright>
|
||||
|
// -----------------------------------------------------------------------
|
||||
|
|
||||
|
namespace Perspex.Layout.UnitTests |
||||
|
{ |
||||
|
using System.Linq; |
||||
|
using Microsoft.VisualStudio.TestTools.UnitTesting; |
||||
|
using Moq; |
||||
|
using Perspex.Controls; |
||||
|
using Perspex.Controls.Presenters; |
||||
|
using Perspex.Controls.Primitives; |
||||
|
using Perspex.Input; |
||||
|
using Perspex.Platform; |
||||
|
using Perspex.Rendering; |
||||
|
using Perspex.Styling; |
||||
|
using Perspex.Themes.Default; |
||||
|
using Ploeh.AutoFixture; |
||||
|
using Ploeh.AutoFixture.AutoMoq; |
||||
|
using Splat; |
||||
|
|
||||
|
[TestClass] |
||||
|
public class FullLayoutTests |
||||
|
{ |
||||
|
[TestMethod] |
||||
|
public void Test_ScrollViewer_With_TextBlock() |
||||
|
{ |
||||
|
using (var context = Locator.CurrentMutable.WithResolver()) |
||||
|
{ |
||||
|
this.RegisterServices(); |
||||
|
|
||||
|
ScrollViewer scrollViewer; |
||||
|
TextBlock textBlock; |
||||
|
|
||||
|
var window = new Window() |
||||
|
{ |
||||
|
Content = (scrollViewer = new ScrollViewer |
||||
|
{ |
||||
|
Id = "scrollViewer", |
||||
|
Width = 200, |
||||
|
Height = 200, |
||||
|
HorizontalAlignment = HorizontalAlignment.Center, |
||||
|
VerticalAlignment = VerticalAlignment.Center, |
||||
|
Content = (textBlock = new TextBlock |
||||
|
{ |
||||
|
Width = 400, |
||||
|
Height = 400, |
||||
|
Text = "Hello World!", |
||||
|
}), |
||||
|
}) |
||||
|
}; |
||||
|
|
||||
|
window.LayoutManager.ExecuteLayoutPass(); |
||||
|
|
||||
|
Assert.AreEqual(new Size(800, 600), window.ActualSize); |
||||
|
Assert.AreEqual(new Size(200, 200), scrollViewer.ActualSize); |
||||
|
Assert.AreEqual(new Point(300, 200), Position(scrollViewer)); |
||||
|
Assert.AreEqual(new Size(400, 400), textBlock.ActualSize); |
||||
|
|
||||
|
var scrollBars = scrollViewer.GetTemplateControls().OfType<ScrollBar>().ToList(); |
||||
|
var presenters = scrollViewer.GetTemplateControls().OfType<ScrollContentPresenter>().ToList(); |
||||
|
|
||||
|
Assert.AreEqual(2, scrollBars.Count); |
||||
|
Assert.AreEqual(1, presenters.Count); |
||||
|
|
||||
|
var presenter = presenters[0]; |
||||
|
Assert.AreEqual(new Size(190, 190), presenter.ActualSize); |
||||
|
|
||||
|
var horzScroll = scrollBars.Single(x => x.Orientation == Orientation.Horizontal); |
||||
|
var vertScroll = scrollBars.Single(x => x.Orientation == Orientation.Vertical); |
||||
|
|
||||
|
Assert.IsTrue(horzScroll.IsVisible); |
||||
|
Assert.IsTrue(vertScroll.IsVisible); |
||||
|
Assert.AreEqual(new Size(200, 10), horzScroll.ActualSize); |
||||
|
Assert.AreEqual(new Size(10, 200), vertScroll.ActualSize); |
||||
|
Assert.AreEqual(new Point(0, 190), Position(horzScroll)); |
||||
|
Assert.AreEqual(new Point(190, 0), Position(vertScroll)); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
private static Point Position(IVisual v) |
||||
|
{ |
||||
|
return v.Bounds.Position; |
||||
|
} |
||||
|
|
||||
|
private void RegisterServices() |
||||
|
{ |
||||
|
var fixture = new Fixture().Customize(new AutoMoqCustomization()); |
||||
|
var l = Locator.CurrentMutable; |
||||
|
var windowImpl = new Mock<IWindowImpl>(); |
||||
|
var renderManager = fixture.Create<IRenderManager>(); |
||||
|
var globalStyles = new Mock<IGlobalStyles>(); |
||||
|
var theme = new DefaultTheme(); |
||||
|
|
||||
|
globalStyles.Setup(x => x.Styles).Returns(theme); |
||||
|
windowImpl.Setup(x => x.ClientSize).Returns(new Size(800, 600)); |
||||
|
|
||||
|
l.RegisterConstant(new Mock<IInputManager>().Object, typeof(IInputManager)); |
||||
|
l.RegisterConstant(new LayoutManager(), typeof(ILayoutManager)); |
||||
|
l.RegisterConstant(new Mock<IPlatformRenderInterface>().Object, typeof(IPlatformRenderInterface)); |
||||
|
l.RegisterConstant(new Mock<IPlatformThreadingInterface>().Object, typeof(IPlatformThreadingInterface)); |
||||
|
l.RegisterConstant(renderManager, typeof(IRenderManager)); |
||||
|
l.RegisterConstant(new Styler(), typeof(IStyler)); |
||||
|
l.RegisterConstant(globalStyles.Object, typeof(IGlobalStyles)); |
||||
|
l.RegisterConstant(windowImpl.Object, typeof(IWindowImpl)); |
||||
|
l.RegisterConstant(new Mock<ITextService>().Object, typeof(ITextService)); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -1,51 +0,0 @@ |
|||||
// -----------------------------------------------------------------------
|
|
||||
// <copyright file="LayoutableTests.cs" company="Steven Kirk">
|
|
||||
// Copyright 2014 MIT Licence. See licence.md for more information.
|
|
||||
// </copyright>
|
|
||||
// -----------------------------------------------------------------------
|
|
||||
|
|
||||
namespace Perspex.Layout.UnitTests |
|
||||
{ |
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting; |
|
||||
using Moq; |
|
||||
using Moq.AutoMock; |
|
||||
using Perspex.Controls; |
|
||||
using Perspex.Input; |
|
||||
using Perspex.Platform; |
|
||||
using Perspex.Rendering; |
|
||||
using Perspex.Styling; |
|
||||
using Splat; |
|
||||
|
|
||||
[TestClass] |
|
||||
public class LayoutableTests |
|
||||
{ |
|
||||
private Mock<ILayoutManager> layoutManager; |
|
||||
|
|
||||
[TestMethod] |
|
||||
public void Calling_InvalidateMeasure_On_Window_Should_Call_LayoutManager_InvalidateMeasure() |
|
||||
{ |
|
||||
using (var d = Locator.Current.WithResolver()) |
|
||||
{ |
|
||||
this.RegisterServices(); |
|
||||
|
|
||||
Window target = new Window(); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
private void RegisterServices() |
|
||||
{ |
|
||||
var l = Locator.CurrentMutable; |
|
||||
var m = new AutoMocker(); |
|
||||
|
|
||||
var lm = m.CreateInstance<ILayoutManager>(); |
|
||||
//this.layoutManager =
|
|
||||
|
|
||||
l.RegisterConstant(new Mock<IInputManager>().Object, typeof(IInputManager)); |
|
||||
l.RegisterConstant(this.layoutManager.Object, typeof(ILayoutManager)); |
|
||||
l.RegisterConstant(new Mock<IPlatformRenderInterface>().Object, typeof(IPlatformRenderInterface)); |
|
||||
l.RegisterConstant(new Mock<IRenderManager>().Object, typeof(IRenderManager)); |
|
||||
l.RegisterConstant(new Mock<IStyler>().Object, typeof(IStyler)); |
|
||||
l.RegisterConstant(new Mock<IWindowImpl>().Object, typeof(IWindowImpl)); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -1,6 +1,7 @@ |
|||||
<?xml version="1.0" encoding="utf-8"?> |
<?xml version="1.0" encoding="utf-8"?> |
||||
<packages> |
<packages> |
||||
|
<package id="AutoFixture" version="3.21.1" targetFramework="net45" /> |
||||
|
<package id="AutoFixture.AutoMoq" version="3.21.1" targetFramework="net45" /> |
||||
<package id="Moq" version="4.2.1409.1722" targetFramework="net45" /> |
<package id="Moq" version="4.2.1409.1722" targetFramework="net45" /> |
||||
<package id="Moq.AutoMock" version="0.3.2.1" targetFramework="net45" /> |
|
||||
<package id="Splat" version="1.5.1" targetFramework="net45" /> |
<package id="Splat" version="1.5.1" targetFramework="net45" /> |
||||
</packages> |
</packages> |
||||
Loading…
Reference in new issue