Browse Source

Use async in selector tests.

pull/58/head
Steven Kirk 11 years ago
parent
commit
e7651dfcf2
  1. 43
      Tests/Perspex.Styling.UnitTests/SelectorTests_Class.cs
  2. 26
      Tests/Perspex.Styling.UnitTests/SelectorTests_Descendent.cs
  3. 29
      Tests/Perspex.Styling.UnitTests/SelectorTests_Id.cs
  4. 29
      Tests/Perspex.Styling.UnitTests/SelectorTests_OfType.cs
  5. 34
      Tests/Perspex.Styling.UnitTests/SelectorTests_Template.cs

43
Tests/Perspex.Styling.UnitTests/SelectorTests_Class.cs

@ -8,6 +8,7 @@ namespace Perspex.Styling.UnitTests
{
using System.Linq;
using System.Reactive.Linq;
using System.Threading.Tasks;
using Moq;
using Perspex.Styling;
using Xunit;
@ -24,7 +25,7 @@ namespace Perspex.Styling.UnitTests
}
[Fact]
public void Class_Matches_Control_With_Class()
public async Task Class_Matches_Control_With_Class()
{
var control = new Control1
{
@ -32,12 +33,13 @@ namespace Perspex.Styling.UnitTests
};
var target = new Selector().Class("foo");
var activator = target.GetActivator(control);
Assert.True(ActivatorValue(target, control));
Assert.True(await activator.Take(1));
}
[Fact]
public void Class_Doesnt_Match_Control_Without_Class()
public async Task Class_Doesnt_Match_Control_Without_Class()
{
var control = new Control1
{
@ -45,12 +47,13 @@ namespace Perspex.Styling.UnitTests
};
var target = new Selector().Class("foo");
var activator = target.GetActivator(control);
Assert.False(ActivatorValue(target, control));
Assert.False(await activator.Take(1));
}
[Fact]
public void Class_Matches_Control_With_TemplatedParent()
public async Task Class_Matches_Control_With_TemplatedParent()
{
var control = new Control1
{
@ -59,25 +62,26 @@ namespace Perspex.Styling.UnitTests
};
var target = new Selector().Class("foo");
var activator = target.GetActivator(control);
Assert.True(ActivatorValue(target, control));
Assert.True(await activator.Take(1));
}
[Fact]
public void Class_Tracks_Additions()
public async Task Class_Tracks_Additions()
{
var control = new Control1();
var target = new Selector().Class("foo");
var activator = target.GetActivator(control);
Assert.False(ActivatorValue(target, control));
Assert.False(await activator.Take(1));
control.Classes.Add("foo");
Assert.True(ActivatorValue(target, control));
Assert.True(await activator.Take(1));
}
[Fact]
public void Class_Tracks_Removals()
public async Task Class_Tracks_Removals()
{
var control = new Control1
{
@ -87,30 +91,25 @@ namespace Perspex.Styling.UnitTests
var target = new Selector().Class("foo");
var activator = target.GetActivator(control);
Assert.True(ActivatorValue(target, control));
Assert.True(await activator.Take(1));
control.Classes.Remove("foo");
Assert.False(ActivatorValue(target, control));
Assert.False(await activator.Take(1));
}
[Fact]
public void Multiple_Classes()
public async Task Multiple_Classes()
{
var control = new Control1();
var target = new Selector().Class("foo").Class("bar");
var activator = target.GetActivator(control);
Assert.False(ActivatorValue(target, control));
Assert.False(await activator.Take(1));
control.Classes.Add("foo");
Assert.False(ActivatorValue(target, control));
Assert.False(await activator.Take(1));
control.Classes.Add("bar");
Assert.True(ActivatorValue(target, control));
Assert.True(await activator.Take(1));
control.Classes.Remove("bar");
Assert.False(ActivatorValue(target, control));
}
private static bool ActivatorValue(Selector selector, IStyleable control)
{
return selector.GetActivator(control).Take(1).ToEnumerable().Single();
Assert.False(await activator.Take(1));
}
public class Control1 : TestControlBase

26
Tests/Perspex.Styling.UnitTests/SelectorTests_Descendent.cs

@ -9,6 +9,7 @@ namespace Perspex.Styling.UnitTests
using System;
using System.Linq;
using System.Reactive.Linq;
using System.Threading.Tasks;
using Moq;
using Perspex.Collections;
using Perspex.Styling;
@ -17,7 +18,7 @@ namespace Perspex.Styling.UnitTests
public class SelectorTests_Descendent
{
[Fact]
public void Descendent_Matches_Control_When_It_Is_Child_OfType()
public async Task Descendent_Matches_Control_When_It_Is_Child_OfType()
{
var parent = new Mock<TestLogical1>();
var child = new Mock<TestLogical2>();
@ -26,12 +27,13 @@ namespace Perspex.Styling.UnitTests
child.Setup(x => x.LogicalParent).Returns(parent.Object);
var selector = new Selector().OfType(parent.Object.GetType()).Descendent().OfType(child.Object.GetType());
var activator = selector.GetActivator(childStyleable.Object);
Assert.True(ActivatorValue(selector, childStyleable.Object));
Assert.True(await activator.Take(1));
}
[Fact]
public void Descendent_Matches_Control_When_It_Is_Descendent_OfType()
public async Task Descendent_Matches_Control_When_It_Is_Descendent_OfType()
{
var grandparent = new Mock<TestLogical1>();
var parent = new Mock<TestLogical2>();
@ -41,12 +43,13 @@ namespace Perspex.Styling.UnitTests
child.Setup(x => x.LogicalParent).Returns(parent.Object);
var selector = new Selector().OfType(grandparent.Object.GetType()).Descendent().OfType(child.Object.GetType());
var activator = selector.GetActivator(child.Object);
Assert.True(ActivatorValue(selector, child.Object));
Assert.True(await activator.Take(1));
}
[Fact]
public void Descendent_Matches_Control_When_It_Is_Descendent_OfType_And_Class()
public async Task Descendent_Matches_Control_When_It_Is_Descendent_OfType_And_Class()
{
var grandparent = new Mock<TestLogical1>();
var parent = new Mock<TestLogical2>();
@ -58,12 +61,13 @@ namespace Perspex.Styling.UnitTests
child.Setup(x => x.LogicalParent).Returns(parent.Object);
var selector = new Selector().OfType(grandparent.Object.GetType()).Class("foo").Descendent().OfType(child.Object.GetType());
var activator = selector.GetActivator(child.Object);
Assert.True(ActivatorValue(selector, child.Object));
Assert.True(await activator.Take(1));
}
[Fact]
public void Descendent_Doesnt_Match_Control_When_It_Is_Descendent_OfType_But_Wrong_Class()
public async Task Descendent_Doesnt_Match_Control_When_It_Is_Descendent_OfType_But_Wrong_Class()
{
var grandparent = new Mock<TestLogical1>();
var parent = new Mock<TestLogical2>();
@ -75,13 +79,9 @@ namespace Perspex.Styling.UnitTests
child.Setup(x => x.LogicalParent).Returns(parent.Object);
var selector = new Selector().OfType<TestLogical1>().Class("foo").Descendent().OfType<TestLogical3>();
var activator = selector.GetActivator(child.Object);
Assert.False(ActivatorValue(selector, child.Object));
}
private static bool ActivatorValue(Selector selector, IStyleable control)
{
return selector.GetActivator(control).Take(1).ToEnumerable().Single();
Assert.False(await activator.Take(1));
}
public abstract class TestLogical : ILogical, IStyleable

29
Tests/Perspex.Styling.UnitTests/SelectorTests_Id.cs

@ -8,6 +8,7 @@ namespace Perspex.Styling.UnitTests
{
using System.Linq;
using System.Reactive.Linq;
using System.Threading.Tasks;
using Moq;
using Perspex.Styling;
using Xunit;
@ -24,59 +25,57 @@ namespace Perspex.Styling.UnitTests
}
[Fact]
public void Id_Matches_Control_With_Correct_Name()
public async Task Id_Matches_Control_With_Correct_Name()
{
var control = new Control1 { Name = "foo" };
var target = new Selector().Name("foo");
var activator = target.GetActivator(control);
Assert.True(ActivatorValue(target, control));
Assert.True(await activator.Take(1));
}
[Fact]
public void Id_Doesnt_Match_Control_Of_Wrong_Name()
public async Task Id_Doesnt_Match_Control_Of_Wrong_Name()
{
var control = new Control1 { Name = "foo" };
var target = new Selector().Name("bar");
var activator = target.GetActivator(control);
Assert.False(ActivatorValue(target, control));
Assert.False(await activator.Take(1));
}
[Fact]
public void Id_Doesnt_Match_Control_With_TemplatedParent()
public async Task Id_Doesnt_Match_Control_With_TemplatedParent()
{
var control = new Control1 { TemplatedParent = new Mock<ITemplatedControl>().Object };
var target = new Selector().Name("foo");
var activator = target.GetActivator(control);
Assert.False(ActivatorValue(target, control));
Assert.False(await activator.Take(1));
}
[Fact]
public void When_Id_Matches_Control_Other_Selectors_Are_Subscribed()
public async Task When_Id_Matches_Control_Other_Selectors_Are_Subscribed()
{
var control = new Control1 { Name = "foo" };
var target = new Selector().Name("foo").SubscribeCheck();
var result = target.GetActivator(control).ToEnumerable().Take(1).ToArray();
var result = await target.GetActivator(control).Take(1);
Assert.Equal(1, control.SubscribeCheckObservable.SubscribedCount);
}
[Fact]
public void When_Id_Doesnt_Match_Control_Other_Selectors_Are_Not_Subscribed()
public async Task When_Id_Doesnt_Match_Control_Other_Selectors_Are_Not_Subscribed()
{
var control = new Control1 { Name = "foo" };
var target = new Selector().Name("bar").SubscribeCheck();
var result = target.GetActivator(control).ToEnumerable().Take(1).ToArray();
var result = await target.GetActivator(control).Take(1);
Assert.Equal(0, control.SubscribeCheckObservable.SubscribedCount);
}
private static bool ActivatorValue(Selector selector, IStyleable control)
{
return selector.GetActivator(control).Take(1).ToEnumerable().Single();
}
public class Control1 : TestControlBase
{
}

29
Tests/Perspex.Styling.UnitTests/SelectorTests_OfType.cs

@ -8,6 +8,7 @@ namespace Perspex.Styling.UnitTests
{
using System.Linq;
using System.Reactive.Linq;
using System.Threading.Tasks;
using Moq;
using Perspex.Styling;
using Xunit;
@ -24,59 +25,57 @@ namespace Perspex.Styling.UnitTests
}
[Fact]
public void OfType_Matches_Control_Of_Correct_Type()
public async Task OfType_Matches_Control_Of_Correct_Type()
{
var control = new Control1();
var target = new Selector().OfType<Control1>();
var activator = target.GetActivator(control);
Assert.True(ActivatorValue(target, control));
Assert.True(await activator.Take(1));
}
[Fact]
public void OfType_Doesnt_Match_Control_Of_Wrong_Type()
public async Task OfType_Doesnt_Match_Control_Of_Wrong_Type()
{
var control = new Control2();
var target = new Selector().OfType<Control1>();
var activator = target.GetActivator(control);
Assert.False(ActivatorValue(target, control));
Assert.False(await activator.Take(1));
}
[Fact]
public void OfType_Matches_Control_With_TemplatedParent()
public async Task OfType_Matches_Control_With_TemplatedParent()
{
var control = new Control1 { TemplatedParent = new Mock<ITemplatedControl>().Object };
var target = new Selector().OfType<Control1>();
var activator = target.GetActivator(control);
Assert.True(ActivatorValue(target, control));
Assert.True(await activator.Take(1));
}
[Fact]
public void When_OfType_Matches_Control_Other_Selectors_Are_Subscribed()
public async Task When_OfType_Matches_Control_Other_Selectors_Are_Subscribed()
{
var control = new Control1();
var target = new Selector().OfType<Control1>().SubscribeCheck();
var result = target.GetActivator(control).ToEnumerable().Take(1).ToArray();
var result = await target.GetActivator(control).Take(1);
Assert.Equal(1, control.SubscribeCheckObservable.SubscribedCount);
}
[Fact]
public void When_OfType_Doesnt_Match_Control_Other_Selectors_Are_Not_Subscribed()
public async Task When_OfType_Doesnt_Match_Control_Other_Selectors_Are_Not_Subscribed()
{
var control = new Control1();
var target = new Selector().OfType<Control2>().SubscribeCheck();
var result = target.GetActivator(control).ToEnumerable().Take(1).ToArray();
var result = await target.GetActivator(control).Take(1);
Assert.Equal(0, control.SubscribeCheckObservable.SubscribedCount);
}
private static bool ActivatorValue(Selector selector, IStyleable control)
{
return selector.GetActivator(control).Take(1).ToEnumerable().Single();
}
public class Control1 : TestControlBase
{
}

34
Tests/Perspex.Styling.UnitTests/SelectorTests_Template.cs

@ -13,11 +13,12 @@ namespace Perspex.Styling.UnitTests
using Perspex.Styling;
using Perspex.VisualTree;
using Xunit;
using System.Threading.Tasks;
public class SelectorTests_Template
{
[Fact]
public void Control_In_Template_Is_Matched_With_Template_Selector()
public async Task Control_In_Template_Is_Matched_With_Template_Selector()
{
var target = new Mock<IVisual>();
var templatedControl = target.As<ITemplatedControl>();
@ -26,26 +27,27 @@ namespace Perspex.Styling.UnitTests
var border = (Border)target.Object.GetVisualChildren().Single();
var selector = new Selector().Template().OfType<Border>();
var activator = selector.GetActivator(border);
Assert.True(ActivatorValue(selector, border));
Assert.True(await activator.Take(1));
}
[Fact]
public void Nested_Control_In_Template_Is_Matched_With_Template_Selector()
public async Task Nested_Control_In_Template_Is_Matched_With_Template_Selector()
{
var target = new Mock<IVisual>();
var templatedControl = target.As<ITemplatedControl>();
this.BuildVisualTree(target);
var textBlock = (TextBlock)target.Object.VisualChildren.Single().VisualChildren.Single();
var selector = new Selector().Template().OfType<TextBlock>();
var activator = selector.GetActivator(textBlock);
Assert.True(ActivatorValue(selector, textBlock));
Assert.True(await activator.Take(1));
}
[Fact]
public void Control_In_Template_Is_Matched_With_TypeOf_TemplatedControl()
public async Task Control_In_Template_Is_Matched_With_TypeOf_TemplatedControl()
{
var target = new Mock<IVisual>();
var templatedControl = target.As<ITemplatedControl>();
@ -54,12 +56,13 @@ namespace Perspex.Styling.UnitTests
var border = (Border)target.Object.VisualChildren.Single();
var selector = new Selector().OfType(templatedControl.Object.GetType()).Template().OfType<Border>();
var activator = selector.GetActivator(border);
Assert.True(ActivatorValue(selector, border));
Assert.True(await activator.Take(1));
}
[Fact]
public void Control_In_Template_Is_Matched_With_Correct_TypeOf_And_Class_Of_TemplatedControl()
public async Task Control_In_Template_Is_Matched_With_Correct_TypeOf_And_Class_Of_TemplatedControl()
{
var target = new Mock<IVisual>();
var templatedControl = target.As<ITemplatedControl>();
@ -71,14 +74,14 @@ namespace Perspex.Styling.UnitTests
styleable.Setup(x => x.StyleKey).Returns(styleKey);
styleable.Setup(x => x.Classes).Returns(new Classes("foo"));
var border = (Border)target.Object.VisualChildren.Single();
var selector = new Selector().OfType(styleKey).Class("foo").Template().OfType<Border>();
var activator = selector.GetActivator(border);
Assert.True(ActivatorValue(selector, border));
Assert.True(await activator.Take(1));
}
[Fact]
public void Control_In_Template_Is_Not_Matched_With_Correct_TypeOf_And_Wrong_Class_Of_TemplatedControl()
public async Task Control_In_Template_Is_Not_Matched_With_Correct_TypeOf_And_Wrong_Class_Of_TemplatedControl()
{
var target = new Mock<IVisual>();
var templatedControl = target.As<ITemplatedControl>();
@ -87,15 +90,10 @@ namespace Perspex.Styling.UnitTests
styleable.Setup(x => x.Classes).Returns(new Classes("bar"));
var border = (Border)target.Object.VisualChildren.Single();
var selector = new Selector().OfType(templatedControl.Object.GetType()).Class("foo").Template().OfType<Border>();
var activator = selector.GetActivator(border);
Assert.False(ActivatorValue(selector, border));
}
private static bool ActivatorValue(Selector selector, IStyleable control)
{
return selector.GetActivator(control).Take(1).ToEnumerable().Single();
Assert.False(await activator.Take(1));
}
private void BuildVisualTree<T>(Mock<T> templatedControl) where T : class, IVisual

Loading…
Cancel
Save