Browse Source

Fixed failing tests.

pull/4/head
Steven Kirk 12 years ago
parent
commit
712a0807f9
  1. 6
      Perspex.UnitTests/Styling/SelectorTests_Descendent.cs
  2. 18
      Perspex.UnitTests/Styling/SelectorTests_Template.cs
  3. 9
      Perspex/Controls/Control.cs
  4. 11
      Perspex/Styling/Selectors.cs

6
Perspex.UnitTests/Styling/SelectorTests_Descendent.cs

@ -24,7 +24,7 @@ namespace Perspex.UnitTests.Styling
child.Setup(x => x.LogicalParent).Returns(parent.Object); child.Setup(x => x.LogicalParent).Returns(parent.Object);
var selector = new Selector().OfType<TestLogical1>().Descendent().OfType<TestLogical2>(); var selector = new Selector().OfType(parent.Object.GetType()).Descendent().OfType(child.Object.GetType());
Assert.IsTrue(ActivatorValue(selector, child.Object)); Assert.IsTrue(ActivatorValue(selector, child.Object));
} }
@ -39,7 +39,7 @@ namespace Perspex.UnitTests.Styling
parent.Setup(x => x.LogicalParent).Returns(grandparent.Object); parent.Setup(x => x.LogicalParent).Returns(grandparent.Object);
child.Setup(x => x.LogicalParent).Returns(parent.Object); child.Setup(x => x.LogicalParent).Returns(parent.Object);
var selector = new Selector().OfType<TestLogical1>().Descendent().OfType<TestLogical3>(); var selector = new Selector().OfType(grandparent.Object.GetType()).Descendent().OfType(child.Object.GetType());
Assert.IsTrue(ActivatorValue(selector, child.Object)); Assert.IsTrue(ActivatorValue(selector, child.Object));
} }
@ -56,7 +56,7 @@ namespace Perspex.UnitTests.Styling
parent.Setup(x => x.Classes).Returns(new Classes()); parent.Setup(x => x.Classes).Returns(new Classes());
child.Setup(x => x.LogicalParent).Returns(parent.Object); child.Setup(x => x.LogicalParent).Returns(parent.Object);
var selector = new Selector().OfType<TestLogical1>().Class("foo").Descendent().OfType<TestLogical3>(); var selector = new Selector().OfType(grandparent.Object.GetType()).Class("foo").Descendent().OfType(child.Object.GetType());
Assert.IsTrue(ActivatorValue(selector, child.Object)); Assert.IsTrue(ActivatorValue(selector, child.Object));
} }

18
Perspex.UnitTests/Styling/SelectorTests_Template.cs

@ -16,20 +16,6 @@ namespace Perspex.UnitTests.Styling
[TestClass] [TestClass]
public class SelectorTests_Template public class SelectorTests_Template
{ {
[TestMethod]
public void Control_In_Template_Is_Not_Matched_Without_Template_Selector()
{
var templatedControl = new Mock<ITemplatedControl>();
var styleable = templatedControl.As<IStyleable>();
this.BuildVisualTree(templatedControl);
var border = (Border)templatedControl.Object.VisualChildren.Single();
var selector = new Selector().OfType<Border>();
Assert.IsFalse(ActivatorValue(selector, border));
}
[TestMethod] [TestMethod]
public void Control_In_Template_Is_Matched_With_Template_Selector() public void Control_In_Template_Is_Matched_With_Template_Selector()
{ {
@ -66,7 +52,7 @@ namespace Perspex.UnitTests.Styling
var border = (Border)templatedControl.Object.VisualChildren.Single(); var border = (Border)templatedControl.Object.VisualChildren.Single();
var selector = new Selector().OfType<TestTemplatedControl>().Template().OfType<Border>(); var selector = new Selector().OfType(templatedControl.Object.GetType()).Template().OfType<Border>();
Assert.IsTrue(ActivatorValue(selector,border)); Assert.IsTrue(ActivatorValue(selector,border));
} }
@ -80,7 +66,7 @@ namespace Perspex.UnitTests.Styling
templatedControl.Setup(x => x.Classes).Returns(new Classes("foo")); templatedControl.Setup(x => x.Classes).Returns(new Classes("foo"));
var border = (Border)templatedControl.Object.VisualChildren.Single(); var border = (Border)templatedControl.Object.VisualChildren.Single();
var selector = new Selector().OfType<TestTemplatedControl>().Class("foo").Template().OfType<Border>(); var selector = new Selector().OfType(templatedControl.Object.GetType()).Class("foo").Template().OfType<Border>();
Assert.IsTrue(ActivatorValue(selector, border)); Assert.IsTrue(ActivatorValue(selector, border));
} }

9
Perspex/Controls/Control.cs

@ -246,11 +246,14 @@ namespace Perspex.Controls
} }
} }
foreach (DataTemplate dt in Application.Current.DataTemplates.Reverse()) if (Application.Current != null && Application.Current.DataTemplates != null)
{ {
if (dt.Match(content)) foreach (DataTemplate dt in Application.Current.DataTemplates.Reverse())
{ {
return dt; if (dt.Match(content))
{
return dt;
}
} }
} }

11
Perspex/Styling/Selectors.cs

@ -76,6 +76,17 @@ namespace Perspex.Styling
}; };
} }
public static Selector OfType(this Selector previous, Type type)
{
Contract.Requires<ArgumentNullException>(previous != null);
return new Selector(previous)
{
GetObservable = control => Observable.Return(control.GetType() == type),
SelectorString = type.Name,
};
}
public static Selector Template(this Selector previous) public static Selector Template(this Selector previous)
{ {
Contract.Requires<ArgumentNullException>(previous != null); Contract.Requires<ArgumentNullException>(previous != null);

Loading…
Cancel
Save