SelectorTests_Or.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. using Avalonia.Controls;
  2. using Xunit;
  3. namespace Avalonia.Styling.UnitTests
  4. {
  5. public class SelectorTests_Or
  6. {
  7. [Fact]
  8. public void Or_Selector_Should_Have_Correct_String_Representation()
  9. {
  10. var target = Selectors.Or(
  11. default(Selector).OfType<Control1>().Class("foo"),
  12. default(Selector).OfType<Control2>().Class("bar"));
  13. Assert.Equal("Control1.foo, Control2.bar", target.ToString());
  14. }
  15. [Fact]
  16. public void Or_Selector_Matches_Control_Of_Correct_Type()
  17. {
  18. var target = Selectors.Or(
  19. default(Selector).OfType<Control1>(),
  20. default(Selector).OfType<Control2>().Class("bar"));
  21. var control = new Control1();
  22. Assert.Equal(SelectorMatchResult.AlwaysThisType, target.Match(control).Result);
  23. }
  24. [Fact]
  25. public void Or_Selector_Matches_Control_Of_Correct_Type_With_Class()
  26. {
  27. var target = Selectors.Or(
  28. default(Selector).OfType<Control1>(),
  29. default(Selector).OfType<Control2>().Class("bar"));
  30. var control = new Control2();
  31. Assert.Equal(SelectorMatchResult.Sometimes, target.Match(control).Result);
  32. }
  33. [Fact]
  34. public void Or_Selector_Doesnt_Match_Control_Of_Incorrect_Type()
  35. {
  36. var target = Selectors.Or(
  37. default(Selector).OfType<Control1>(),
  38. default(Selector).OfType<Control2>().Class("bar"));
  39. var control = new Control3();
  40. Assert.Equal(SelectorMatchResult.NeverThisType, target.Match(control).Result);
  41. }
  42. [Fact]
  43. public void Or_Selector_Doesnt_Match_Control_With_Incorrect_Name()
  44. {
  45. var target = Selectors.Or(
  46. default(Selector).OfType<Control1>().Name("foo"),
  47. default(Selector).OfType<Control2>().Name("foo"));
  48. var control = new Control1 { Name = "bar" };
  49. Assert.Equal(SelectorMatchResult.NeverThisInstance, target.Match(control).Result);
  50. }
  51. [Fact]
  52. public void Returns_Correct_TargetType_When_Types_Same()
  53. {
  54. var target = Selectors.Or(
  55. default(Selector).OfType<Control1>().Class("foo"),
  56. default(Selector).OfType<Control1>().Class("bar"));
  57. Assert.Equal(typeof(Control1), target.TargetType);
  58. }
  59. [Fact]
  60. public void Returns_Common_TargetType()
  61. {
  62. var target = Selectors.Or(
  63. default(Selector).OfType<Control1>().Class("foo"),
  64. default(Selector).OfType<Control2>().Class("bar"));
  65. Assert.Equal(typeof(Control), target.TargetType);
  66. }
  67. [Fact]
  68. public void Returns_Null_TargetType_When_A_Selector_Has_No_TargetType()
  69. {
  70. var target = Selectors.Or(
  71. default(Selector).OfType<Control1>().Class("foo"),
  72. default(Selector).Class("bar"));
  73. Assert.Equal(null, target.TargetType);
  74. }
  75. public class Control1 : Control
  76. {
  77. }
  78. public class Control2 : Control
  79. {
  80. }
  81. public class Control3 : Control
  82. {
  83. }
  84. }
  85. }