Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. package com.vaadin.ui;
  2. import java.util.concurrent.atomic.AtomicBoolean;
  3. import org.junit.Ignore;
  4. import org.junit.Test;
  5. import com.vaadin.server.ServerRpcManager;
  6. import com.vaadin.shared.MouseEventDetails;
  7. import com.vaadin.shared.ui.checkbox.CheckBoxServerRpc;
  8. import com.vaadin.tests.util.MockUI;
  9. import static org.junit.Assert.assertEquals;
  10. import static org.junit.Assert.assertFalse;
  11. import static org.junit.Assert.assertNotNull;
  12. import static org.junit.Assert.assertTrue;
  13. public class CheckBoxTest {
  14. @Test
  15. public void initiallyFalse() {
  16. CheckBox cb = new CheckBox();
  17. assertFalse(cb.getValue());
  18. }
  19. @Test
  20. public void testSetValue() {
  21. CheckBox cb = new CheckBox();
  22. cb.setValue(true);
  23. assertTrue(cb.getValue());
  24. cb.setValue(false);
  25. assertFalse(cb.getValue());
  26. }
  27. @Test
  28. public void setValueChangeFromClientIsUserOriginated() {
  29. UI ui = new MockUI();
  30. CheckBox cb = new CheckBox();
  31. ui.setContent(cb);
  32. AtomicBoolean userOriginated = new AtomicBoolean(false);
  33. cb.addValueChangeListener(
  34. event -> userOriginated.set(event.isUserOriginated()));
  35. ComponentTest.syncToClient(cb);
  36. ServerRpcManager.getRpcProxy(cb, CheckBoxServerRpc.class)
  37. .setChecked(true, new MouseEventDetails());
  38. assertTrue(userOriginated.get());
  39. userOriginated.set(false);
  40. ComponentTest.syncToClient(cb);
  41. ServerRpcManager.getRpcProxy(cb, CheckBoxServerRpc.class)
  42. .setChecked(false, new MouseEventDetails());
  43. assertTrue(userOriginated.get());
  44. }
  45. @Test
  46. public void setValueChangeFromServerIsNotUserOriginated() {
  47. UI ui = new MockUI();
  48. CheckBox cb = new CheckBox();
  49. ui.setContent(cb);
  50. AtomicBoolean userOriginated = new AtomicBoolean(true);
  51. cb.addValueChangeListener(
  52. event -> userOriginated.set(event.isUserOriginated()));
  53. cb.setValue(true);
  54. assertFalse(userOriginated.get());
  55. userOriginated.set(true);
  56. cb.setValue(false);
  57. assertFalse(userOriginated.get());
  58. }
  59. @Test(expected = NullPointerException.class)
  60. public void setValue_nullValue_throwsNPE() {
  61. CheckBox cb = new CheckBox();
  62. cb.setValue(null);
  63. }
  64. @Test
  65. public void getComboBoxInput() {
  66. CheckBox cb = new CheckBox();
  67. assertNotNull("getInputElement should always return a element",
  68. cb.getInputElement());
  69. assertHasStyleNames(cb.getInputElement());
  70. }
  71. @Test
  72. public void getCheckBoxLabel() {
  73. CheckBox cb = new CheckBox();
  74. assertNotNull("getLabelElement should always return a element",
  75. cb.getLabelElement());
  76. assertHasStyleNames(cb.getLabelElement());
  77. }
  78. @Test
  79. @Ignore("Component#setStyleName(null, false) should not throw a NPE")
  80. public void setStyleName_null_false_throws_NPE() {
  81. // FIXME? - Currently it throws a NPE like the implementation in
  82. // Component.java
  83. // waiting for other ticket that fixes the behaviour in Component.java
  84. // before
  85. CheckBox cb = new CheckBox();
  86. cb.getLabelElement().addStyleName("first");
  87. cb.getLabelElement().setStyleName(null, false);
  88. assertEquals("Removing a null style should be ignored", "first",
  89. cb.getLabelElement().getStyleName());
  90. }
  91. private void assertHasStyleNames(HasStyleNames hasStyleNames) {
  92. assertEquals("Given element should not have a default style name", "",
  93. hasStyleNames.getStyleName());
  94. hasStyleNames.addStyleName("first");
  95. assertEquals("first", hasStyleNames.getStyleName());
  96. hasStyleNames.addStyleName("first");
  97. assertEquals("Adding two times the same style should be ignored",
  98. "first", hasStyleNames.getStyleName());
  99. hasStyleNames.addStyleName(null);
  100. assertEquals("Adding null as style should be ignored", "first",
  101. hasStyleNames.getStyleName());
  102. hasStyleNames.addStyleName("");
  103. assertEquals("Adding an empty string as style should be ignored",
  104. "first", hasStyleNames.getStyleName());
  105. hasStyleNames.addStyleName("second");
  106. assertEquals("first second", hasStyleNames.getStyleName());
  107. hasStyleNames.removeStyleName("second");
  108. assertEquals("first", hasStyleNames.getStyleName());
  109. hasStyleNames.addStyleName("second third fourth");
  110. assertEquals("first second third fourth", hasStyleNames.getStyleName());
  111. hasStyleNames.removeStyleName("third fourth");
  112. assertEquals("first second", hasStyleNames.getStyleName());
  113. hasStyleNames.addStyleNames("third", "fourth");
  114. assertEquals("first second third fourth", hasStyleNames.getStyleName());
  115. hasStyleNames.removeStyleNames("second", "fourth");
  116. assertEquals("first third", hasStyleNames.getStyleName());
  117. hasStyleNames.setStyleName(null);
  118. assertEquals("Setting null as style should reset them", "",
  119. hasStyleNames.getStyleName());
  120. hasStyleNames.setStyleName("set-style");
  121. assertEquals("set-style", hasStyleNames.getStyleName());
  122. hasStyleNames.setStyleName("");
  123. assertEquals("Setting an empty string as style should reset them", "",
  124. hasStyleNames.getStyleName());
  125. hasStyleNames.setStyleName("set-style multiple values");
  126. assertEquals("set-style multiple values", hasStyleNames.getStyleName());
  127. hasStyleNames.setStyleName("set-style", false);
  128. assertEquals("multiple values", hasStyleNames.getStyleName());
  129. hasStyleNames.setStyleName("", false);
  130. assertEquals("Removing an empty style should be ignored",
  131. "multiple values", hasStyleNames.getStyleName());
  132. hasStyleNames.setStyleName("", true);
  133. assertEquals("Adding an empty style should be ignored",
  134. "multiple values", hasStyleNames.getStyleName());
  135. hasStyleNames.setStyleName(null, true);
  136. assertEquals("Adding a null style should be ignored", "multiple values",
  137. hasStyleNames.getStyleName());
  138. hasStyleNames.setStyleName("multiple values", false);
  139. assertEquals(
  140. "Removing all set style names should result in an empty style name",
  141. "", hasStyleNames.getStyleName());
  142. hasStyleNames.setStyleName("set-style", true);
  143. assertEquals("set-style", hasStyleNames.getStyleName());
  144. hasStyleNames.setStyleName("multiple values", true);
  145. assertEquals("set-style multiple values", hasStyleNames.getStyleName());
  146. }
  147. }