A cross-platform UI framework for .NET
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

169 lines
4.4 KiB

using Avalonia.Controls.Primitives;
using Avalonia.Layout;
using Avalonia.LogicalTree;
using Avalonia.UnitTests;
using Xunit;
namespace Avalonia.Controls.UnitTests.Primitives
{
public class TrackTests : ScopedTestBase
{
[Fact]
public void Measure_Should_Return_Thumb_DesiredWidth_In_Vertical_Orientation()
{
var thumb = new Thumb
{
Width = 12,
};
var target = new Track
{
Thumb = thumb,
Orientation = Orientation.Vertical,
};
target.Measure(new Size(100, 100));
Assert.Equal(new Size(12, 0), target.DesiredSize);
}
[Fact]
public void Measure_Should_Return_Thumb_DesiredHeight_In_Horizontal_Orientation()
{
var thumb = new Thumb
{
Height = 12,
};
var target = new Track
{
Thumb = thumb,
Orientation = Orientation.Horizontal,
};
target.Measure(new Size(100, 100));
Assert.Equal(new Size(0, 12), target.DesiredSize);
}
[Fact]
public void Should_Arrange_Thumb_In_Horizontal_Orientation()
{
var thumb = new Thumb
{
Height = 12,
};
var target = new Track
{
Thumb = thumb,
Orientation = Orientation.Horizontal,
Minimum = 100,
Maximum = 200,
Height = 12,
Value = 150,
ViewportSize = 50,
};
target.Measure(new Size(100, 100));
target.Arrange(new Rect(0, 0, 100, 100));
Assert.Equal(new Rect(33, 0, 34, 12), thumb.Bounds);
}
[Fact]
public void Should_Arrange_Thumb_In_Vertical_Orientation()
{
var thumb = new Thumb
{
Width = 12,
};
var target = new Track
{
Thumb = thumb,
Orientation = Orientation.Vertical,
Minimum = 100,
Maximum = 200,
Value = 150,
ViewportSize = 50,
Width = 12,
};
target.Measure(new Size(100, 100));
target.Arrange(new Rect(0, 0, 100, 100));
Assert.Equal(new Rect(0, 33, 12, 34), thumb.Bounds);
}
[Fact]
public void Thumb_Should_Have_Zero_Width_When_Minimum_Equals_Maximum()
{
var thumb = new Thumb
{
Height = 12,
};
var target = new Track
{
Height = 12,
Thumb = thumb,
Orientation = Orientation.Horizontal,
Minimum = 100,
Maximum = 100,
};
target.Measure(new Size(100, 100));
target.Arrange(new Rect(0, 0, 100, 100));
Assert.Equal(new Rect(0, 0, 0, 12), thumb.Bounds);
}
[Fact]
public void Thumb_Should_Be_Logical_Child()
{
var thumb = new Thumb
{
Height = 12,
};
var target = new Track
{
Height = 12,
Thumb = thumb,
Orientation = Orientation.Horizontal,
Minimum = 100,
Maximum = 100,
};
Assert.Same(thumb.Parent, target);
Assert.Equal(new[] { thumb }, ((ILogical)target).LogicalChildren);
}
[Fact]
public void Should_Not_Pass_Invalid_Arrange_Rect()
{
var thumb = new Thumb { Width = 100.873106060606 };
var increaseButton = new Button { Width = 10 };
var decreaseButton = new Button { Width = 10 };
var target = new Track
{
Height = 12,
Thumb = thumb,
IncreaseButton = increaseButton,
DecreaseButton = decreaseButton,
Orientation = Orientation.Horizontal,
Minimum = 0,
Maximum = 287,
Value = 287,
ViewportSize = 241,
};
target.Measure(Size.Infinity);
// #1297 was occuring here.
target.Arrange(new Rect(0, 0, 221, 12));
}
}
}