From e7651dfcf2379169f7ac97d925ef975427aa9b98 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Mon, 25 May 2015 17:09:00 +0200 Subject: [PATCH] Use async in selector tests. --- .../SelectorTests_Class.cs | 43 +++++++++---------- .../SelectorTests_Descendent.cs | 26 +++++------ .../SelectorTests_Id.cs | 29 ++++++------- .../SelectorTests_OfType.cs | 29 ++++++------- .../SelectorTests_Template.cs | 34 +++++++-------- 5 files changed, 78 insertions(+), 83 deletions(-) diff --git a/Tests/Perspex.Styling.UnitTests/SelectorTests_Class.cs b/Tests/Perspex.Styling.UnitTests/SelectorTests_Class.cs index 83e0c3db86..0cf5c4f752 100644 --- a/Tests/Perspex.Styling.UnitTests/SelectorTests_Class.cs +++ b/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 diff --git a/Tests/Perspex.Styling.UnitTests/SelectorTests_Descendent.cs b/Tests/Perspex.Styling.UnitTests/SelectorTests_Descendent.cs index f32842c8b9..1dad4fb9be 100644 --- a/Tests/Perspex.Styling.UnitTests/SelectorTests_Descendent.cs +++ b/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(); var child = new Mock(); @@ -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(); var parent = new Mock(); @@ -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(); var parent = new Mock(); @@ -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(); var parent = new Mock(); @@ -75,13 +79,9 @@ namespace Perspex.Styling.UnitTests child.Setup(x => x.LogicalParent).Returns(parent.Object); var selector = new Selector().OfType().Class("foo").Descendent().OfType(); + 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 diff --git a/Tests/Perspex.Styling.UnitTests/SelectorTests_Id.cs b/Tests/Perspex.Styling.UnitTests/SelectorTests_Id.cs index 558458a2b0..d77f78621c 100644 --- a/Tests/Perspex.Styling.UnitTests/SelectorTests_Id.cs +++ b/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().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 { } diff --git a/Tests/Perspex.Styling.UnitTests/SelectorTests_OfType.cs b/Tests/Perspex.Styling.UnitTests/SelectorTests_OfType.cs index 526b22a2c8..733c4c3391 100644 --- a/Tests/Perspex.Styling.UnitTests/SelectorTests_OfType.cs +++ b/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(); + 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(); + 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().Object }; var target = new Selector().OfType(); + 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().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().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 { } diff --git a/Tests/Perspex.Styling.UnitTests/SelectorTests_Template.cs b/Tests/Perspex.Styling.UnitTests/SelectorTests_Template.cs index ee10445fdb..74efa48e5c 100644 --- a/Tests/Perspex.Styling.UnitTests/SelectorTests_Template.cs +++ b/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(); var templatedControl = target.As(); @@ -26,26 +27,27 @@ namespace Perspex.Styling.UnitTests var border = (Border)target.Object.GetVisualChildren().Single(); var selector = new Selector().Template().OfType(); + 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(); var templatedControl = target.As(); this.BuildVisualTree(target); var textBlock = (TextBlock)target.Object.VisualChildren.Single().VisualChildren.Single(); - var selector = new Selector().Template().OfType(); + 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(); var templatedControl = target.As(); @@ -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(); + 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(); var templatedControl = target.As(); @@ -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(); + 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(); var templatedControl = target.As(); @@ -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(); + 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(Mock templatedControl) where T : class, IVisual