ClassesTests.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. // Copyright (c) The Avalonia Project. All rights reserved.
  2. // Licensed under the MIT license. See licence.md file in the project root for full license information.
  3. using System;
  4. using Xunit;
  5. namespace Avalonia.Controls.UnitTests
  6. {
  7. public class ClassesTests
  8. {
  9. [Fact]
  10. public void Duplicates_Should_Not_Be_Added()
  11. {
  12. var target = new Classes();
  13. target.Add("foo");
  14. target.Add("foo");
  15. Assert.Equal(new[] { "foo" }, target);
  16. }
  17. [Fact]
  18. public void Duplicates_Should_Not_Be_Added_Via_AddRange()
  19. {
  20. var target = new Classes();
  21. target.Add("foo");
  22. target.AddRange(new[] { "foo", "bar" });
  23. Assert.Equal(new[] { "foo", "bar" }, target);
  24. }
  25. [Fact]
  26. public void Duplicates_Should_Not_Be_Added_Via_Pseudoclasses()
  27. {
  28. var target = new Classes();
  29. var ps = (IPseudoClasses)target;
  30. ps.Add(":foo");
  31. ps.Add(":foo");
  32. Assert.Equal(new[] { ":foo" }, target);
  33. }
  34. [Fact]
  35. public void Duplicates_Should_Not_Be_Inserted()
  36. {
  37. var target = new Classes();
  38. target.Add("foo");
  39. target.Insert(0, "foo");
  40. Assert.Equal(new[] { "foo" }, target);
  41. }
  42. [Fact]
  43. public void Duplicates_Should_Not_Be_Inserted_Via_InsertRange()
  44. {
  45. var target = new Classes();
  46. target.Add("foo");
  47. target.InsertRange(1, new[] { "foo", "bar" });
  48. Assert.Equal(new[] { "foo", "bar" }, target);
  49. }
  50. [Fact]
  51. public void Should_Not_Be_Able_To_Add_Pseudoclass()
  52. {
  53. var target = new Classes();
  54. Assert.Throws<ArgumentException>(() => target.Add(":foo"));
  55. }
  56. [Fact]
  57. public void Should_Not_Be_Able_To_Add_Pseudoclasses_Via_AddRange()
  58. {
  59. var target = new Classes();
  60. Assert.Throws<ArgumentException>(() => target.AddRange(new[] { "foo", ":bar" }));
  61. }
  62. [Fact]
  63. public void Should_Not_Be_Able_To_Insert_Pseudoclass()
  64. {
  65. var target = new Classes();
  66. Assert.Throws<ArgumentException>(() => target.Insert(0, ":foo"));
  67. }
  68. [Fact]
  69. public void Should_Not_Be_Able_To_Insert_Pseudoclasses_Via_InsertRange()
  70. {
  71. var target = new Classes();
  72. Assert.Throws<ArgumentException>(() => target.InsertRange(0, new[] { "foo", ":bar" }));
  73. }
  74. [Fact]
  75. public void Should_Not_Be_Able_To_Remove_Pseudoclass()
  76. {
  77. var target = new Classes();
  78. Assert.Throws<ArgumentException>(() => target.Remove(":foo"));
  79. }
  80. [Fact]
  81. public void Should_Not_Be_Able_To_Remove_Pseudoclasses_Via_RemoveAll()
  82. {
  83. var target = new Classes();
  84. Assert.Throws<ArgumentException>(() => target.RemoveAll(new[] { "foo", ":bar" }));
  85. }
  86. [Fact]
  87. public void Should_Not_Be_Able_To_Remove_Pseudoclasses_Via_RemoveRange()
  88. {
  89. var target = new Classes();
  90. Assert.Throws<ArgumentException>(() => target.RemoveRange(0, 1));
  91. }
  92. [Fact]
  93. public void Should_Not_Be_Able_To_Remove_Pseudoclass_Via_RemoveAt()
  94. {
  95. var target = new Classes();
  96. ((IPseudoClasses)target).Add(":foo");
  97. Assert.Throws<ArgumentException>(() => target.RemoveAt(0));
  98. }
  99. [Fact]
  100. public void Replace_Should_Not_Replace_Pseudoclasses()
  101. {
  102. var target = new Classes("foo", "bar");
  103. ((IPseudoClasses)target).Add(":baz");
  104. target.Replace(new[] { "qux" });
  105. Assert.Equal(new[] { ":baz", "qux" }, target);
  106. }
  107. [Fact]
  108. public void Replace_Should_Not_Accept_Pseudoclasses()
  109. {
  110. var target = new Classes();
  111. Assert.Throws<ArgumentException>(() => target.Replace(new[] { ":qux" }));
  112. }
  113. }
  114. }