|
|
|
@ -11,6 +11,7 @@ namespace Perspex.Styling.UnitTests |
|
|
|
using System.Reactive.Linq; |
|
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting; |
|
|
|
using Moq; |
|
|
|
using Perspex.Collections; |
|
|
|
using Perspex.Styling; |
|
|
|
|
|
|
|
[TestClass] |
|
|
|
@ -19,67 +20,64 @@ namespace Perspex.Styling.UnitTests |
|
|
|
[TestMethod] |
|
|
|
public void Descendent_Matches_Control_When_It_Is_Child_OfType() |
|
|
|
{ |
|
|
|
Assert.Inconclusive("Need to implement logical tree."); |
|
|
|
////var parent = new Mock<TestLogical1>();
|
|
|
|
////var child = new Mock<TestLogical2>();
|
|
|
|
|
|
|
|
////child.Setup(x => x.LogicalParent).Returns(parent.Object);
|
|
|
|
var parent = new Mock<TestLogical1>(); |
|
|
|
var child = new Mock<TestLogical2>(); |
|
|
|
var childStyleable = child.As<IStyleable>(); |
|
|
|
|
|
|
|
////var selector = new Selector().OfType(parent.Object.GetType()).Descendent().OfType(child.Object.GetType());
|
|
|
|
child.Setup(x => x.LogicalParent).Returns(parent.Object); |
|
|
|
|
|
|
|
////Assert.IsTrue(ActivatorValue(selector, child.Object));
|
|
|
|
var selector = new Selector().OfType(parent.Object.GetType()).Descendent().OfType(child.Object.GetType()); |
|
|
|
|
|
|
|
Assert.IsTrue(ActivatorValue(selector, childStyleable.Object)); |
|
|
|
} |
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
public void Descendent_Matches_Control_When_It_Is_Descendent_OfType() |
|
|
|
{ |
|
|
|
Assert.Inconclusive("Need to implement logical tree."); |
|
|
|
////var grandparent = new Mock<TestLogical1>();
|
|
|
|
////var parent = new Mock<TestLogical2>();
|
|
|
|
////var child = new Mock<TestLogical3>();
|
|
|
|
var grandparent = new Mock<TestLogical1>(); |
|
|
|
var parent = new Mock<TestLogical2>(); |
|
|
|
var child = new Mock<TestLogical3>(); |
|
|
|
|
|
|
|
////parent.Setup(x => x.LogicalParent).Returns(grandparent.Object);
|
|
|
|
////child.Setup(x => x.LogicalParent).Returns(parent.Object);
|
|
|
|
parent.Setup(x => x.LogicalParent).Returns(grandparent.Object); |
|
|
|
child.Setup(x => x.LogicalParent).Returns(parent.Object); |
|
|
|
|
|
|
|
////var selector = new Selector().OfType(grandparent.Object.GetType()).Descendent().OfType(child.Object.GetType());
|
|
|
|
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)); |
|
|
|
} |
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
public void Descendent_Matches_Control_When_It_Is_Descendent_OfType_And_Class() |
|
|
|
{ |
|
|
|
Assert.Inconclusive("Need to implement logical tree."); |
|
|
|
////var grandparent = new Mock<TestLogical1>();
|
|
|
|
////var parent = new Mock<TestLogical2>();
|
|
|
|
////var child = new Mock<TestLogical3>();
|
|
|
|
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);
|
|
|
|
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(grandparent.Object.GetType()).Class("foo").Descendent().OfType(child.Object.GetType());
|
|
|
|
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)); |
|
|
|
} |
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
public void Descendent_Doesnt_Match_Control_When_It_Is_Descendent_OfType_But_Wrong_Class() |
|
|
|
{ |
|
|
|
Assert.Inconclusive("Need to implement logical tree."); |
|
|
|
////var grandparent = new Mock<TestLogical1>();
|
|
|
|
////var parent = new Mock<TestLogical2>();
|
|
|
|
////var child = new Mock<TestLogical3>();
|
|
|
|
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);
|
|
|
|
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>();
|
|
|
|
var selector = new Selector().OfType<TestLogical1>().Class("foo").Descendent().OfType<TestLogical3>(); |
|
|
|
|
|
|
|
////Assert.IsFalse(ActivatorValue(selector, child.Object));
|
|
|
|
Assert.IsFalse(ActivatorValue(selector, child.Object)); |
|
|
|
} |
|
|
|
|
|
|
|
private static bool ActivatorValue(Selector selector, IStyleable control) |
|
|
|
@ -87,16 +85,26 @@ namespace Perspex.Styling.UnitTests |
|
|
|
return selector.GetActivator(control).Take(1).ToEnumerable().Single(); |
|
|
|
} |
|
|
|
|
|
|
|
////public abstract class TestLogical1 : TestLogical
|
|
|
|
////{
|
|
|
|
////}
|
|
|
|
public abstract class TestLogical : ILogical, IStyleable |
|
|
|
{ |
|
|
|
public abstract Classes Classes { get; } |
|
|
|
public abstract string Id { get; } |
|
|
|
public abstract IReadOnlyPerspexList<ILogical> LogicalChildren { get; } |
|
|
|
public abstract ILogical LogicalParent { get; } |
|
|
|
public abstract ITemplatedControl TemplatedParent { get; } |
|
|
|
public abstract IDisposable Bind(PerspexProperty property, IObservable<object> source, BindingPriority priority = BindingPriority.LocalValue); |
|
|
|
} |
|
|
|
|
|
|
|
public abstract class TestLogical1 : TestLogical |
|
|
|
{ |
|
|
|
} |
|
|
|
|
|
|
|
////public abstract class TestLogical2 : TestLogical
|
|
|
|
////{
|
|
|
|
////}
|
|
|
|
public abstract class TestLogical2 : TestLogical |
|
|
|
{ |
|
|
|
} |
|
|
|
|
|
|
|
////public abstract class TestLogical3 : TestLogical
|
|
|
|
////{
|
|
|
|
////}
|
|
|
|
public abstract class TestLogical3 : TestLogical |
|
|
|
{ |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|