ControlThemeTests.cs 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using System;
  2. using Avalonia.Controls;
  3. using Avalonia.Controls.Primitives;
  4. using Avalonia.Styling;
  5. using Xunit;
  6. namespace Avalonia.Base.UnitTests.Styling
  7. {
  8. public class ControlThemeTests
  9. {
  10. [Fact]
  11. public void ControlTheme_Cannot_Be_Added_To_Styles()
  12. {
  13. var target = new ControlTheme(typeof(Button));
  14. var styles = new Styles();
  15. Assert.Throws<InvalidOperationException>(() => styles.Add(target));
  16. }
  17. [Fact]
  18. public void ControlTheme_Cannot_Be_Added_To_Style_Children()
  19. {
  20. var target = new ControlTheme(typeof(Button));
  21. var style = new Style();
  22. Assert.Throws<InvalidOperationException>(() => style.Children.Add(target));
  23. }
  24. [Fact]
  25. public void ControlTheme_Cannot_Be_Added_To_ControlTheme_Children()
  26. {
  27. var target = new ControlTheme(typeof(Button));
  28. var other = new ControlTheme(typeof(CheckBox));
  29. Assert.Throws<InvalidOperationException>(() => other.Children.Add(target));
  30. }
  31. [Fact]
  32. public void Style_Without_Selector_Cannot_Be_Added_To_Children()
  33. {
  34. var target = new ControlTheme(typeof(Button));
  35. var child = new Style();
  36. Assert.Throws<InvalidOperationException>(() => target.Children.Add(child));
  37. }
  38. [Fact]
  39. public void Style_Without_Nesting_Selector_Cannot_Be_Added_To_Children()
  40. {
  41. var target = new ControlTheme(typeof(Button));
  42. var child = new Style(x => x.OfType<Button>().Template().OfType<Border>());
  43. Assert.Throws<InvalidOperationException>(() => target.Children.Add(child));
  44. }
  45. [Fact]
  46. public void Style_With_NonTemplate_Child_Selector_Cannot_Be_Added_To_Children()
  47. {
  48. var target = new ControlTheme(typeof(Button));
  49. var child = new Style(x => x.Nesting().Child().OfType<Border>());
  50. Assert.Throws<InvalidOperationException>(() => target.Children.Add(child));
  51. }
  52. [Fact]
  53. public void Style_With_NonTemplate_Descendent_Selector_Cannot_Be_Added_To_Children()
  54. {
  55. var target = new ControlTheme(typeof(Button));
  56. var child = new Style(x => x.Nesting().Descendant().OfType<Border>());
  57. Assert.Throws<InvalidOperationException>(() => target.Children.Add(child));
  58. }
  59. [Fact]
  60. public void Style_With_NonTemplate_Child_Template_Selector_Cannot_Be_Added_To_Children()
  61. {
  62. var target = new ControlTheme(typeof(Button));
  63. var child = new Style(x => x.Nesting().Child().Template().OfType<Border>());
  64. Assert.Throws<InvalidOperationException>(() => target.Children.Add(child));
  65. }
  66. [Fact]
  67. public void Style_With_Double_Template_Selector_Cannot_Be_Added_To_Children()
  68. {
  69. var target = new ControlTheme(typeof(Button));
  70. var child = new Style(x => x.Nesting().Template().OfType<ToggleButton>().Template().OfType<Border>());
  71. Assert.Throws<InvalidOperationException>(() => target.Children.Add(child));
  72. }
  73. }
  74. }