SelectableMixinTests.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // -----------------------------------------------------------------------
  2. // <copyright file="SelectableMixinTests.cs" company="Steven Kirk">
  3. // Copyright 2015 MIT Licence. See licence.md for more information.
  4. // </copyright>
  5. // -----------------------------------------------------------------------
  6. namespace Perspex.Controls.UnitTests.Mixins
  7. {
  8. using Perspex.Controls.Mixins;
  9. using Perspex.Controls.Primitives;
  10. using Xunit;
  11. public class SelectableMixinTests
  12. {
  13. [Fact]
  14. public void Selected_Class_Should_Not_Initially_Be_Added()
  15. {
  16. var target = new TestControl();
  17. Assert.Empty(target.Classes);
  18. }
  19. [Fact]
  20. public void Setting_IsSelected_Should_Add_Selected_Class()
  21. {
  22. var target = new TestControl();
  23. target.IsSelected = true;
  24. Assert.Equal(new[] { "selected" }, target.Classes);
  25. }
  26. [Fact]
  27. public void Clearing_IsSelected_Should_Remove_Selected_Class()
  28. {
  29. var target = new TestControl();
  30. target.IsSelected = true;
  31. target.IsSelected = false;
  32. Assert.Empty(target.Classes);
  33. }
  34. [Fact]
  35. public void Setting_IsSelected_Should_Raise_IsSelectedChangedEvent()
  36. {
  37. var target = new TestControl();
  38. var raised = false;
  39. target.AddHandler(
  40. SelectingItemsControl.IsSelectedChangedEvent,
  41. (s, e) => raised = true);
  42. target.IsSelected = true;
  43. Assert.True(raised);
  44. }
  45. private class TestControl : Control, ISelectable
  46. {
  47. public static readonly PerspexProperty<bool> IsSelectedProperty =
  48. PerspexProperty.Register<TestControl, bool>(nameof(IsSelected));
  49. static TestControl()
  50. {
  51. SelectableMixin.Attach<TestControl>(IsSelectedProperty);
  52. }
  53. public bool IsSelected
  54. {
  55. get { return this.GetValue(IsSelectedProperty); }
  56. set { this.SetValue(IsSelectedProperty, value); }
  57. }
  58. }
  59. }
  60. }