// -----------------------------------------------------------------------
//
// Copyright 2014 MIT Licence. See licence.md for more information.
//
// -----------------------------------------------------------------------
namespace Perspex.UnitTests.Styling
{
using System.Linq;
using System.Reactive.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
using Perspex.Controls;
using Perspex.Styling;
[TestClass]
public class SelectorTests_Class
{
[TestMethod]
public void Class_Matches_Control_With_Class()
{
var control = new Control1
{
Classes = new Classes { "foo" },
};
var target = new Selector().Class("foo");
CollectionAssert.AreEqual(new[] { true }, target.GetActivator(control).Take(1).ToEnumerable().ToArray());
}
[TestMethod]
public void Class_Doesnt_Match_Control_Without_Class()
{
var control = new Control1
{
Classes = new Classes { "bar" },
};
var target = new Selector().Class("foo");
CollectionAssert.AreEqual(new[] { false }, target.GetActivator(control).Take(1).ToEnumerable().ToArray());
}
[TestMethod]
public void Class_Doesnt_Match_Control_With_TemplatedParent()
{
var control = new Control1
{
Classes = new Classes { "foo" },
TemplatedParent = new Mock().Object,
};
var target = new Selector().Class("foo");
CollectionAssert.AreEqual(new[] { false }, target.GetActivator(control).Take(1).ToEnumerable().ToArray());
}
[TestMethod]
public void Class_Tracks_Additions()
{
var control = new Control1();
var target = new Selector().Class("foo");
var activator = target.GetActivator(control);
CollectionAssert.AreEqual(new[] { false }, activator.Take(1).ToEnumerable().ToArray());
control.Classes.Add("foo");
CollectionAssert.AreEqual(new[] { true }, activator.Take(1).ToEnumerable().ToArray());
}
[TestMethod]
public void Class_Tracks_Removals()
{
var control = new Control1
{
Classes = new Classes { "foo" },
};
var target = new Selector().Class("foo");
var activator = target.GetActivator(control);
CollectionAssert.AreEqual(new[] { true }, activator.Take(1).ToEnumerable().ToArray());
control.Classes.Remove("foo");
CollectionAssert.AreEqual(new[] { false }, activator.Take(1).ToEnumerable().ToArray());
}
public class Control1 : TestControlBase
{
}
}
}