Browse Source

Added tests from nthmaster.com

pull/6381/head
Max Katz 4 years ago
parent
commit
bab0449805
  1. 71
      tests/Avalonia.Styling.UnitTests/SelectorTests_NthChild.cs

71
tests/Avalonia.Styling.UnitTests/SelectorTests_NthChild.cs

@ -1,3 +1,4 @@
using System.Linq;
using System.Threading.Tasks;
using Avalonia.Controls;
using Xunit;
@ -205,6 +206,76 @@ namespace Avalonia.Styling.UnitTests
Assert.Equal(SelectorMatch.NeverThisInstance, target.Match(b1));
}
[Theory] // http://nthmaster.com/
[InlineData(+0, 8, false, false, false, false, false, false, false, true , false, false, false)]
[InlineData(+1, 6, false, false, false, false, false, true , true , true , true , true , true )]
[InlineData(-1, 9, true , true , true , true , true , true , true , true , true , false, false)]
public async Task Nth_Child_Master_Com_Test_Sigle_Selector(
int step, int offset, params bool[] items)
{
var panel = new StackPanel();
panel.Children.AddRange(items.Select(_ => new Border()));
var previous = default(Selector).OfType<Border>();
var target = previous.NthChild(step, offset);
var results = new bool[items.Length];
for (int index = 0; index < items.Length; index++)
{
var border = panel.Children[index];
results[index] = await target.Match(border).Activator!.Take(1);
}
Assert.Equal(items, results);
}
[Theory] // http://nthmaster.com/
[InlineData(+1, 4, -1, 8, false, false, false, true , true , true , true , true , false, false, false)]
[InlineData(+3, 1, +2, 0, false, false, false, true , false, false, false, false, false, true , false)]
public async Task Nth_Child_Master_Com_Test_Double_Selector(
int step1, int offset1, int step2, int offset2, params bool[] items)
{
var panel = new StackPanel();
panel.Children.AddRange(items.Select(_ => new Border()));
var previous = default(Selector).OfType<Border>();
var middle = previous.NthChild(step1, offset1);
var target = middle.NthChild(step2, offset2);
var results = new bool[items.Length];
for (int index = 0; index < items.Length; index++)
{
var border = panel.Children[index];
results[index] = await target.Match(border).Activator!.Take(1);
}
Assert.Equal(items, results);
}
[Theory] // http://nthmaster.com/
[InlineData(+1, 2, 2, 1, -1, 9, false, false, true , false, true , false, true , false, true , false, false)]
public async Task Nth_Child_Master_Com_Test_Triple_Selector(
int step1, int offset1, int step2, int offset2, int step3, int offset3, params bool[] items)
{
var panel = new StackPanel();
panel.Children.AddRange(items.Select(_ => new Border()));
var previous = default(Selector).OfType<Border>();
var middle1 = previous.NthChild(step1, offset1);
var middle2 = middle1.NthChild(step2, offset2);
var target = middle2.NthChild(step3, offset3);
var results = new bool[items.Length];
for (int index = 0; index < items.Length; index++)
{
var border = panel.Children[index];
results[index] = await target.Match(border).Activator!.Take(1);
}
Assert.Equal(items, results);
}
[Fact]
public void Returns_Correct_TargetType()
{

Loading…
Cancel
Save