ResourceDictionaryTests.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  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 Avalonia.Controls;
  5. using Xunit;
  6. namespace Avalonia.Styling.UnitTests
  7. {
  8. public class ResourceDictionaryTests
  9. {
  10. [Fact]
  11. public void TryGetResource_Should_Find_Resource()
  12. {
  13. var target = new ResourceDictionary
  14. {
  15. { "foo", "bar" },
  16. };
  17. Assert.True(target.TryGetResource("foo", out var result));
  18. Assert.Equal("bar", result);
  19. }
  20. [Fact]
  21. public void TryGetResource_Should_Find_Resource_From_Merged_Dictionary()
  22. {
  23. var target = new ResourceDictionary
  24. {
  25. MergedDictionaries =
  26. {
  27. new ResourceDictionary
  28. {
  29. { "foo", "bar" },
  30. }
  31. }
  32. };
  33. Assert.True(target.TryGetResource("foo", out var result));
  34. Assert.Equal("bar", result);
  35. }
  36. [Fact]
  37. public void TryGetResource_Should_Find_Resource_From_Itself_Before_Merged_Dictionary()
  38. {
  39. var target = new ResourceDictionary
  40. {
  41. { "foo", "bar" },
  42. };
  43. target.MergedDictionaries.Add(new ResourceDictionary
  44. {
  45. { "foo", "baz" },
  46. });
  47. Assert.True(target.TryGetResource("foo", out var result));
  48. Assert.Equal("bar", result);
  49. }
  50. [Fact]
  51. public void TryGetResource_Should_Find_Resource_From_Later_Merged_Dictionary()
  52. {
  53. var target = new ResourceDictionary
  54. {
  55. MergedDictionaries =
  56. {
  57. new ResourceDictionary
  58. {
  59. { "foo", "bar" },
  60. },
  61. new ResourceDictionary
  62. {
  63. { "foo", "baz" },
  64. }
  65. }
  66. };
  67. Assert.True(target.TryGetResource("foo", out var result));
  68. Assert.Equal("baz", result);
  69. }
  70. [Fact]
  71. public void ResourcesChanged_Should_Be_Raised_On_Resource_Add()
  72. {
  73. var target = new ResourceDictionary();
  74. var raised = false;
  75. target.ResourcesChanged += (_, __) => raised = true;
  76. target.Add("foo", "bar");
  77. Assert.True(raised);
  78. }
  79. [Fact]
  80. public void ResourcesChanged_Should_Be_Raised_On_MergedDictionary_Add()
  81. {
  82. var target = new ResourceDictionary();
  83. var raised = false;
  84. target.ResourcesChanged += (_, __) => raised = true;
  85. target.MergedDictionaries.Add(new ResourceDictionary
  86. {
  87. { "foo", "bar" },
  88. });
  89. Assert.True(raised);
  90. }
  91. [Fact]
  92. public void ResourcesChanged_Should_Not_Be_Raised_On_Empty_MergedDictionary_Add()
  93. {
  94. var target = new ResourceDictionary();
  95. var raised = false;
  96. target.ResourcesChanged += (_, __) => raised = true;
  97. target.MergedDictionaries.Add(new ResourceDictionary());
  98. Assert.False(raised);
  99. }
  100. [Fact]
  101. public void ResourcesChanged_Should_Be_Raised_On_MergedDictionary_Remove()
  102. {
  103. var target = new ResourceDictionary
  104. {
  105. MergedDictionaries =
  106. {
  107. new ResourceDictionary { { "foo", "bar" } },
  108. }
  109. };
  110. var raised = false;
  111. target.ResourcesChanged += (_, __) => raised = true;
  112. target.MergedDictionaries.RemoveAt(0);
  113. Assert.True(raised);
  114. }
  115. [Fact]
  116. public void ResourcesChanged_Should_Not_Be_Raised_On_Empty_MergedDictionary_Remove()
  117. {
  118. var target = new ResourceDictionary
  119. {
  120. MergedDictionaries =
  121. {
  122. new ResourceDictionary(),
  123. }
  124. };
  125. var raised = false;
  126. target.ResourcesChanged += (_, __) => raised = true;
  127. target.MergedDictionaries.RemoveAt(0);
  128. Assert.False(raised);
  129. }
  130. [Fact]
  131. public void ResourcesChanged_Should_Be_Raised_On_MergedDictionary_Resource_Add()
  132. {
  133. var target = new ResourceDictionary
  134. {
  135. MergedDictionaries =
  136. {
  137. new ResourceDictionary(),
  138. }
  139. };
  140. var raised = false;
  141. target.ResourcesChanged += (_, __) => raised = true;
  142. ((IResourceDictionary)target.MergedDictionaries[0]).Add("foo", "bar");
  143. Assert.True(raised);
  144. }
  145. }
  146. }