Browse Source

More template/descendent selector tests.

pull/4/head
Steven Kirk 12 years ago
parent
commit
0ec3641fb7
  1. 38
      Perspex.UnitTests/Styling/SelectorTests_Descendent.cs
  2. 36
      Perspex.UnitTests/Styling/SelectorTests_Template.cs
  3. 2
      Perspex.UnitTests/Styling/TestControlBase.cs
  4. 4
      Perspex/Styling/Selectors.cs

38
Perspex.UnitTests/Styling/SelectorTests_Descendent.cs

@ -27,7 +27,7 @@ namespace Perspex.UnitTests.Styling
var selector = new Selector().OfType<TestLogical1>().Descendent().OfType<TestLogical2>();
Assert.AreEqual(true, ActivatorValue(selector, child.Object));
Assert.IsTrue(ActivatorValue(selector, child.Object));
}
[TestMethod]
@ -42,7 +42,41 @@ namespace Perspex.UnitTests.Styling
var selector = new Selector().OfType<TestLogical1>().Descendent().OfType<TestLogical3>();
Assert.AreEqual(true, ActivatorValue(selector, child.Object));
Assert.IsTrue(ActivatorValue(selector, child.Object));
}
[TestMethod]
public void Descendent_Matches_Control_When_It_Is_Descendent_OfType_And_Class()
{
var grandparent = new Mock<TestLogical1>();
var parent = new Mock<TestLogical2>();
var child = new Mock<TestLogical3>();
grandparent.Setup(x => x.Classes).Returns(new Classes("foo"));
parent.Setup(x => x.LogicalParent).Returns(grandparent.Object);
parent.Setup(x => x.Classes).Returns(new Classes());
child.Setup(x => x.LogicalParent).Returns(parent.Object);
var selector = new Selector().OfType<TestLogical1>().Class("foo").Descendent().OfType<TestLogical3>();
Assert.IsTrue(ActivatorValue(selector, child.Object));
}
[TestMethod]
public void Descendent_Doesnt_Match_Control_When_It_Is_Descendent_OfType_But_Wrong_Class()
{
var grandparent = new Mock<TestLogical1>();
var parent = new Mock<TestLogical2>();
var child = new Mock<TestLogical3>();
grandparent.Setup(x => x.Classes).Returns(new Classes("bar"));
parent.Setup(x => x.LogicalParent).Returns(grandparent.Object);
parent.Setup(x => x.Classes).Returns(new Classes("foo"));
child.Setup(x => x.LogicalParent).Returns(parent.Object);
var selector = new Selector().OfType<TestLogical1>().Class("foo").Descendent().OfType<TestLogical3>();
Assert.IsFalse(ActivatorValue(selector, child.Object));
}
private static bool ActivatorValue(Match selector, IStyleable control)

36
Perspex.UnitTests/Styling/SelectorTests_Template.cs

@ -28,7 +28,7 @@ namespace Perspex.UnitTests.Styling
var selector = new Selector().OfType<Border>();
Assert.AreEqual(false, ActivatorValue(selector, border));
Assert.IsFalse(ActivatorValue(selector, border));
}
[TestMethod]
@ -42,7 +42,7 @@ namespace Perspex.UnitTests.Styling
var selector = new Selector().Template().OfType<Border>();
Assert.AreEqual(true, ActivatorValue(selector, border));
Assert.IsTrue(ActivatorValue(selector, border));
}
[TestMethod]
@ -56,7 +56,7 @@ namespace Perspex.UnitTests.Styling
var selector = new Selector().Template().OfType<TextBlock>();
Assert.AreEqual(true, ActivatorValue(selector, textBlock));
Assert.IsTrue(ActivatorValue(selector, textBlock));
}
[TestMethod]
@ -69,7 +69,35 @@ namespace Perspex.UnitTests.Styling
var selector = new Selector().OfType<TestTemplatedControl>().Template().OfType<Border>();
Assert.AreEqual(true, ActivatorValue(selector,border));
Assert.IsTrue(ActivatorValue(selector,border));
}
[TestMethod]
public void Control_In_Template_Is_Matched_With_Correct_TypeOf_And_Class_Of_TemplatedControl()
{
var templatedControl = new Mock<TestTemplatedControl>();
this.BuildVisualTree(templatedControl);
templatedControl.Setup(x => x.Classes).Returns(new Classes("foo"));
var border = (Border)templatedControl.Object.VisualChildren.Single();
var selector = new Selector().OfType<TestTemplatedControl>().Class("foo").Template().OfType<Border>();
Assert.IsTrue(ActivatorValue(selector, border));
}
[TestMethod]
public void Control_In_Template_Is_Not_Matched_With_Correct_TypeOf_And_Wrong_Class_Of_TemplatedControl()
{
var templatedControl = new Mock<TestTemplatedControl>();
this.BuildVisualTree(templatedControl);
templatedControl.Setup(x => x.Classes).Returns(new Classes("bar"));
var border = (Border)templatedControl.Object.VisualChildren.Single();
var selector = new Selector().OfType<TestTemplatedControl>().Class("foo").Template().OfType<Border>();
Assert.IsFalse(ActivatorValue(selector, border));
}
private static bool ActivatorValue(Match selector, IStyleable control)

2
Perspex.UnitTests/Styling/TestControlBase.cs

@ -20,7 +20,7 @@ namespace Perspex.UnitTests.Styling
public string Id { get; set; }
public Classes Classes { get; set; }
public virtual Classes Classes { get; set; }
public TestObservable SubscribeCheckObservable { get; private set; }

4
Perspex/Styling/Selectors.cs

@ -43,7 +43,7 @@ namespace Perspex.Styling
if (c is IStyleable)
{
descendentMatches.Add(previous.GetObservable((IStyleable)c));
descendentMatches.Add(previous.GetActivator((IStyleable)c));
}
}
@ -84,7 +84,7 @@ namespace Perspex.Styling
{
IStyleable templatedParent = control.TemplatedParent as IStyleable;
return templatedParent != null ?
previous.GetObservable(templatedParent) :
previous.GetActivator(templatedParent) :
Observable.Return(true);
},
InTemplate = true,

Loading…
Cancel
Save