123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- using System;
- using Avalonia.UnitTests;
- using Xunit;
- namespace Avalonia.Controls.UnitTests
- {
- public class ClassesTests : ScopedTestBase
- {
- [Fact]
- public void Duplicates_Should_Not_Be_Added()
- {
- var target = new Classes();
- target.Add("foo");
- target.Add("foo");
- Assert.Equal(new[] { "foo" }, target);
- }
- [Fact]
- public void Duplicates_Should_Not_Be_Added_Via_AddRange()
- {
- var target = new Classes();
- target.Add("foo");
- target.AddRange(new[] { "foo", "bar" });
- Assert.Equal(new[] { "foo", "bar" }, target);
- }
- [Fact]
- public void Duplicates_Should_Not_Be_Added_Via_Pseudoclasses()
- {
- var target = new Classes();
- var ps = (IPseudoClasses)target;
- ps.Add(":foo");
- ps.Add(":foo");
- Assert.Equal(new[] { ":foo" }, target);
- }
- [Fact]
- public void Duplicates_Should_Not_Be_Inserted()
- {
- var target = new Classes();
- target.Add("foo");
- target.Insert(0, "foo");
- Assert.Equal(new[] { "foo" }, target);
- }
- [Fact]
- public void Duplicates_Should_Not_Be_Inserted_Via_InsertRange()
- {
- var target = new Classes();
- target.Add("foo");
- target.InsertRange(1, new[] { "foo", "bar" });
- Assert.Equal(new[] { "foo", "bar" }, target);
- }
- [Fact]
- public void Should_Not_Be_Able_To_Add_Pseudoclass()
- {
- var target = new Classes();
- Assert.Throws<ArgumentException>(() => target.Add(":foo"));
- }
- [Fact]
- public void Should_Not_Be_Able_To_Add_Pseudoclasses_Via_AddRange()
- {
- var target = new Classes();
- Assert.Throws<ArgumentException>(() => target.AddRange(new[] { "foo", ":bar" }));
- }
- [Fact]
- public void Should_Not_Be_Able_To_Insert_Pseudoclass()
- {
- var target = new Classes();
- Assert.Throws<ArgumentException>(() => target.Insert(0, ":foo"));
- }
- [Fact]
- public void Should_Not_Be_Able_To_Insert_Pseudoclasses_Via_InsertRange()
- {
- var target = new Classes();
- Assert.Throws<ArgumentException>(() => target.InsertRange(0, new[] { "foo", ":bar" }));
- }
- [Fact]
- public void Should_Not_Be_Able_To_Remove_Pseudoclass()
- {
- var target = new Classes();
- Assert.Throws<ArgumentException>(() => target.Remove(":foo"));
- }
- [Fact]
- public void Should_Not_Be_Able_To_Remove_Pseudoclasses_Via_RemoveAll()
- {
- var target = new Classes();
- Assert.Throws<ArgumentException>(() => target.RemoveAll(new[] { "foo", ":bar" }));
- }
- [Fact]
- public void Should_Not_Be_Able_To_Remove_Pseudoclasses_Via_RemoveRange()
- {
- var target = new Classes();
- Assert.Throws<ArgumentException>(() => target.RemoveRange(0, 1));
- }
- [Fact]
- public void Should_Not_Be_Able_To_Remove_Pseudoclass_Via_RemoveAt()
- {
- var target = new Classes();
- ((IPseudoClasses)target).Add(":foo");
- Assert.Throws<ArgumentException>(() => target.RemoveAt(0));
- }
- [Fact]
- public void Replace_Should_Not_Replace_Pseudoclasses()
- {
- var target = new Classes("foo", "bar");
- ((IPseudoClasses)target).Add(":baz");
- target.Replace(new[] { "qux" });
- Assert.Equal(new[] { ":baz", "qux" }, target);
- }
- [Fact]
- public void Replace_Should_Not_Accept_Pseudoclasses()
- {
- var target = new Classes();
- Assert.Throws<ArgumentException>(() => target.Replace(new[] { ":qux" }));
- }
- [Fact]
- public void Clear_Should_Not_Remove_Pseudoclasses()
- {
- var target = new Classes("foo", "bar");
- ((IPseudoClasses)target).Add(":baz");
- target.Clear();
- Assert.Equal(new[] { ":baz" }, target);
- }
- [Fact]
- public void RemoveAll_Should_Remove_Classes()
- {
- var target = new Classes("foo", "bar", "baz");
- target.RemoveAll(new[] { "bar", "baz" });
- Assert.Equal(new[] { "foo" }, target);
- }
- [Fact]
- public void Listeners_Can_Be_Added_By_Listener()
- {
- var classes = new Classes();
- var listener1 = new ClassesChangedListener(() => { });
- var listener2 = new ClassesChangedListener(() => classes.AddListener(listener1));
- classes.AddListener(listener2);
- classes.Add("bar");
- }
- [Fact]
- public void Listeners_Can_Be_Removed_By_Listener()
- {
- var classes = new Classes();
- var listener1 = new ClassesChangedListener(() => { });
- var listener2 = new ClassesChangedListener(() => classes.RemoveListener(listener1));
- classes.AddListener(listener1);
- classes.AddListener(listener2);
- classes.Add("bar");
- }
- private class ClassesChangedListener : IClassesChangedListener
- {
- private Action _action;
- public ClassesChangedListener(Action action) => _action = action;
- public void Changed() => _action();
- }
- }
- }
|