RadioButtonTests.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. using Avalonia.Markup.Data;
  2. using Avalonia.UnitTests;
  3. using Xunit;
  4. namespace Avalonia.Controls.UnitTests
  5. {
  6. public class RadioButtonTests : ScopedTestBase
  7. {
  8. [Theory]
  9. [InlineData(false)]
  10. [InlineData(true)]
  11. public void Indeterminate_RadioButton_Is_Not_Unchecked_After_Checking_Other_Radio_Button(bool isThreeState)
  12. {
  13. var panel = new Panel();
  14. var radioButton1 = new RadioButton();
  15. radioButton1.IsThreeState = false;
  16. radioButton1.IsChecked = false;
  17. var radioButton2 = new RadioButton();
  18. radioButton2.IsThreeState = isThreeState;
  19. radioButton2.IsChecked = null;
  20. panel.Children.Add(radioButton1);
  21. panel.Children.Add(radioButton2);
  22. Assert.Null(radioButton2.IsChecked);
  23. radioButton1.IsChecked = true;
  24. Assert.True(radioButton1.IsChecked);
  25. Assert.Null(radioButton2.IsChecked);
  26. }
  27. [Fact]
  28. public void RadioButton_In_Same_Group_Is_Unchecked()
  29. {
  30. var parent = new Panel();
  31. var panel1 = new Panel();
  32. var panel2 = new Panel();
  33. parent.Children.Add(panel1);
  34. parent.Children.Add(panel2);
  35. var radioButton1 = new RadioButton();
  36. radioButton1.GroupName = "A";
  37. radioButton1.IsChecked = false;
  38. var radioButton2 = new RadioButton();
  39. radioButton2.GroupName = "A";
  40. radioButton2.IsChecked = true;
  41. var radioButton3 = new RadioButton();
  42. radioButton3.GroupName = "A";
  43. radioButton3.IsChecked = false;
  44. panel1.Children.Add(radioButton1);
  45. panel1.Children.Add(radioButton2);
  46. panel2.Children.Add(radioButton3);
  47. Assert.False(radioButton1.IsChecked);
  48. Assert.True(radioButton2.IsChecked);
  49. Assert.False(radioButton3.IsChecked);
  50. radioButton3.IsChecked = true;
  51. Assert.False(radioButton1.IsChecked);
  52. Assert.False(radioButton2.IsChecked);
  53. Assert.True(radioButton3.IsChecked);
  54. }
  55. [Fact]
  56. public void RadioButton_Empty_GroupName_Not_Influence_Other_Groups()
  57. {
  58. var parent = new Panel();
  59. var radioButton1 = new RadioButton();
  60. radioButton1.GroupName = "A";
  61. radioButton1.IsChecked = true;
  62. var radioButton2 = new RadioButton();
  63. radioButton2.GroupName = "A";
  64. radioButton2.IsChecked = false;
  65. var radioButton3 = new RadioButton();
  66. radioButton3.GroupName = null;
  67. radioButton3.IsChecked = false;
  68. var radioButton4 = new RadioButton();
  69. radioButton4.GroupName = null;
  70. radioButton4.IsChecked = true;
  71. parent.Children.Add(radioButton1);
  72. parent.Children.Add(radioButton2);
  73. parent.Children.Add(radioButton3);
  74. parent.Children.Add(radioButton4);
  75. Assert.True(radioButton1.IsChecked);
  76. Assert.False(radioButton2.IsChecked);
  77. Assert.False(radioButton3.IsChecked);
  78. Assert.True(radioButton4.IsChecked);
  79. radioButton3.IsChecked = true;
  80. Assert.True(radioButton1.IsChecked);
  81. Assert.False(radioButton2.IsChecked);
  82. Assert.True(radioButton3.IsChecked);
  83. Assert.False(radioButton4.IsChecked);
  84. }
  85. }
  86. }