ToggleButtonTests.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using Avalonia.Markup.Xaml.Data;
  2. using Avalonia.UnitTests;
  3. using Xunit;
  4. namespace Avalonia.Controls.Primitives.UnitTests
  5. {
  6. public class ToggleButtonTests
  7. {
  8. private const string uncheckedClass = ":unchecked";
  9. private const string checkedClass = ":checked";
  10. private const string indeterminateClass = ":indeterminate";
  11. [Theory]
  12. [InlineData(false, uncheckedClass, false)]
  13. [InlineData(false, uncheckedClass, true)]
  14. [InlineData(true, checkedClass, false)]
  15. [InlineData(true, checkedClass, true)]
  16. [InlineData(null, indeterminateClass, false)]
  17. [InlineData(null, indeterminateClass, true)]
  18. public void ToggleButton_Has_Correct_Class_According_To_Is_Checked(bool? isChecked, string expectedClass, bool isThreeState)
  19. {
  20. var toggleButton = new ToggleButton();
  21. toggleButton.IsThreeState = isThreeState;
  22. toggleButton.IsChecked = isChecked;
  23. Assert.Contains(expectedClass, toggleButton.Classes);
  24. }
  25. [Fact]
  26. public void ToggleButton_Is_Checked_Binds_To_Bool()
  27. {
  28. var toggleButton = new ToggleButton();
  29. var source = new Class1();
  30. toggleButton.DataContext = source;
  31. toggleButton.Bind(ToggleButton.IsCheckedProperty, new Binding("Foo"));
  32. source.Foo = true;
  33. Assert.True(toggleButton.IsChecked);
  34. source.Foo = false;
  35. Assert.False(toggleButton.IsChecked);
  36. }
  37. private class Class1 : NotifyingBase
  38. {
  39. private bool _foo;
  40. public bool Foo
  41. {
  42. get { return _foo; }
  43. set { _foo = value; RaisePropertyChanged(); }
  44. }
  45. }
  46. }
  47. }