Browse Source

Started adding ScrollContentPresenter tests.

pull/39/head
Steven Kirk 11 years ago
parent
commit
62901f02d5
  1. 5
      Perspex.Controls/Presenters/ScrollContentPresenter.cs
  2. 16
      Tests/Perspex.Controls.UnitTests/Perspex.Controls.UnitTests.csproj
  3. 53
      Tests/Perspex.Controls.UnitTests/ScrollContentPresenterTests.cs
  4. 5
      Tests/Perspex.Controls.UnitTests/packages.config

5
Perspex.Controls/Presenters/ScrollContentPresenter.cs

@ -26,6 +26,8 @@ namespace Perspex.Controls.Presenters
public static readonly PerspexProperty<bool> CanScrollHorizontallyProperty =
PerspexProperty.Register<ScrollContentPresenter, bool>("CanScrollHorizontally", true);
private Size measuredExtent;
static ScrollContentPresenter()
{
ClipToBoundsProperty.OverrideDefaultValue(typeof(ScrollContentPresenter), true);
@ -77,7 +79,7 @@ namespace Perspex.Controls.Presenters
content.Measure(measureSize);
var size = content.DesiredSize.Value;
this.Extent = size;
this.measuredExtent = size;
return size.Constrain(availableSize);
}
else
@ -91,6 +93,7 @@ namespace Perspex.Controls.Presenters
var child = this.GetVisualChildren().SingleOrDefault() as ILayoutable;
this.Viewport = finalSize;
this.Extent = this.measuredExtent;
if (child != null)
{

16
Tests/Perspex.Controls.UnitTests/Perspex.Controls.UnitTests.csproj

@ -51,6 +51,21 @@
<HintPath>..\..\packages\Splat.1.5.1\lib\Net45\Splat.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Reactive.Core, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll</HintPath>
</Reference>
<Reference Include="System.Reactive.Interfaces, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\packages\Rx-Interfaces.2.2.5\lib\net45\System.Reactive.Interfaces.dll</HintPath>
</Reference>
<Reference Include="System.Reactive.Linq, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\packages\Rx-Linq.2.2.5\lib\net45\System.Reactive.Linq.dll</HintPath>
</Reference>
<Reference Include="System.Reactive.PlatformServices">
<HintPath>..\..\packages\Rx-PlatformServices.2.2.5\lib\net45\System.Reactive.PlatformServices.dll</HintPath>
</Reference>
<Reference Include="xunit">
<HintPath>..\..\packages\xunit.1.9.2\lib\net20\xunit.dll</HintPath>
</Reference>
@ -65,6 +80,7 @@
</Choose>
<ItemGroup>
<Compile Include="DropDownTests.cs" />
<Compile Include="ScrollContentPresenterTests.cs" />
<Compile Include="ScrollViewerTests.cs" />
<Compile Include="SelectingItemsControlTests.cs" />
<Compile Include="ListBoxTests.cs" />

53
Tests/Perspex.Controls.UnitTests/ScrollContentPresenterTests.cs

@ -0,0 +1,53 @@
// -----------------------------------------------------------------------
// <copyright file="ScrollPresenterTests.cs" company="Steven Kirk">
// Copyright 2014 MIT Licence. See licence.md for more information.
// </copyright>
// -----------------------------------------------------------------------
namespace Perspex.Controls.UnitTests
{
using System;
using System.Collections.Generic;
using System.Reactive.Linq;
using Perspex.Controls.Presenters;
using Xunit;
public class ScrollContentPresenterTests
{
[Fact]
public void Arrange_Should_Set_Viewport_And_Extent_In_That_Order()
{
var target = new ScrollContentPresenter
{
Content = new Border { Width = 40, Height = 50 }
};
var set = new List<string>();
target.Measure(new Size(100, 100));
target.GetObservable(ScrollViewer.ViewportProperty).Skip(1).Subscribe(_ => set.Add("Viewport"));
target.GetObservable(ScrollViewer.ExtentProperty).Skip(1).Subscribe(_ => set.Add("Extent"));
target.Arrange(new Rect(0, 0, 100, 100));
Assert.Equal(new[] { "Viewport", "Extent" }, set);
}
[Fact]
public void Setting_Offset_Should_Invalidate_Arrange()
{
var target = new ScrollContentPresenter
{
Content = new Border { Width = 40, Height = 50 }
};
target.Measure(new Size(100, 100));
target.Arrange(new Rect(0, 0, 100, 100));
target.Offset = new Vector(10, 100);
Assert.True(target.IsMeasureValid);
Assert.False(target.IsArrangeValid);
}
}
}

5
Tests/Perspex.Controls.UnitTests/packages.config

@ -3,6 +3,11 @@
<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="Rx-Core" version="2.2.5" targetFramework="net45" />
<package id="Rx-Interfaces" version="2.2.5" targetFramework="net45" />
<package id="Rx-Linq" version="2.2.5" targetFramework="net45" />
<package id="Rx-Main" version="2.2.5" targetFramework="net45" />
<package id="Rx-PlatformServices" version="2.2.5" targetFramework="net45" />
<package id="Splat" version="1.5.1" targetFramework="net45" />
<package id="xunit" version="1.9.2" targetFramework="net45" />
<package id="xunit.runner.visualstudio" version="2.0.0-rc1-build1030" targetFramework="net45" />

Loading…
Cancel
Save