Browse Source

Test scrollbar auto-hiding.

pull/63/head
Steven Kirk 11 years ago
parent
commit
a97465b1bd
  1. 3
      Perspex.Controls/Primitives/ScrollBar.cs
  2. 52
      Tests/Perspex.Controls.UnitTests/Primitives/ScrollBarTests.cs

3
Perspex.Controls/Primitives/ScrollBar.cs

@ -9,7 +9,6 @@ namespace Perspex.Controls.Primitives
using System;
using System.Reactive;
using System.Reactive.Linq;
using Perspex.Controls.Templates;
/// <summary>
/// A scrollbar control.
@ -98,7 +97,7 @@ namespace Perspex.Controls.Primitives
case ScrollBarVisibility.Auto:
var viewportSize = this.ViewportSize;
return !double.IsNaN(viewportSize) && viewportSize < this.Maximum - this.Minimum;
return double.IsNaN(viewportSize) || viewportSize < this.Maximum - this.Minimum;
default:
throw new InvalidOperationException("Invalid value for ScrollBar.Visibility.");

52
Tests/Perspex.Controls.UnitTests/Primitives/ScrollBarTests.cs

@ -61,6 +61,58 @@ namespace Perspex.Controls.UnitTests.Primitives
Assert.Equal(target.Value, 50);
}
[Fact]
public void ScrollBar_Can_AutoHide()
{
var target = new ScrollBar();
target.Visibility = ScrollBarVisibility.Auto;
target.Minimum = 0;
target.Maximum = 100;
target.ViewportSize = 100;
Assert.False(target.IsVisible);
}
[Fact]
public void ScrollBar_Should_Not_AutoHide_When_ViewportSize_Is_NaN()
{
var target = new ScrollBar();
target.Visibility = ScrollBarVisibility.Auto;
target.Minimum = 0;
target.Maximum = 100;
target.ViewportSize = double.NaN;
Assert.True(target.IsVisible);
}
[Fact]
public void ScrollBar_Should_Not_AutoHide_When_Visibility_Set_To_Visible()
{
var target = new ScrollBar();
target.Visibility = ScrollBarVisibility.Visible;
target.Minimum = 0;
target.Maximum = 100;
target.ViewportSize = 100;
Assert.True(target.IsVisible);
}
[Fact]
public void ScrollBar_Should_Hide_When_Visibility_Set_To_Hidden()
{
var target = new ScrollBar();
target.Visibility = ScrollBarVisibility.Hidden;
target.Minimum = 0;
target.Maximum = 100;
target.ViewportSize = 10;
Assert.False(target.IsVisible);
}
private static Control Template(ScrollBar control)
{
return new Border

Loading…
Cancel
Save