@Test public void testRemoveVerifyListenerUnregistersUntypedEvents() { VerifyListener listener = mock(VerifyListener.class); text.addVerifyListener(listener); text.removeVerifyListener(listener); assertFalse(text.isListening(SWT.Verify)); }
@Test public void testVerifyEvent() { VerifyListener verifyListener; final java.util.List<TypedEvent> log = new ArrayList<TypedEvent>(); text.addModifyListener( new ModifyListener() { public void modifyText(ModifyEvent event) { log.add(event); } }); text.addVerifyListener( new VerifyListener() { public void verifyText(VerifyEvent event) { assertEquals('\0', event.character); assertEquals(0, event.keyCode); log.add(event); } }); // VerifyEvent is also sent when setting text to the already set value log.clear(); text.setText(""); assertEquals(2, log.size()); assertEquals(VerifyEvent.class, log.get(0).getClass()); assertEquals(ModifyEvent.class, log.get(1).getClass()); // Test verifyListener that prevents (doit=false) change text.setText(""); log.clear(); verifyListener = new VerifyListener() { public void verifyText(VerifyEvent event) { event.doit = false; } }; text.addVerifyListener(verifyListener); text.setText("other"); assertEquals(1, log.size()); assertEquals(VerifyEvent.class, log.get(0).getClass()); assertEquals("", text.getText()); text.removeVerifyListener(verifyListener); // Test verifyListener that manipulates text text.setText(""); log.clear(); verifyListener = new VerifyListener() { public void verifyText(VerifyEvent event) { event.text = "manipulated"; } }; text.addVerifyListener(verifyListener); text.setText("other"); assertEquals(2, log.size()); assertEquals(VerifyEvent.class, log.get(0).getClass()); assertEquals(ModifyEvent.class, log.get(1).getClass()); assertEquals("manipulated", text.getText()); text.removeVerifyListener(verifyListener); // Ensure that VerifyEvent#start and #end denote the positions of the old // text and #text denotes the text to be set String oldText = "old"; text.setText(oldText); log.clear(); String newText = oldText + "changed"; text.setText(newText); assertEquals(2, log.size()); assertEquals(VerifyEvent.class, log.get(0).getClass()); VerifyEvent verifyEvent = (VerifyEvent) log.get(0); assertEquals(0, verifyEvent.start); assertEquals(oldText.length(), verifyEvent.end); assertEquals(newText, verifyEvent.text); assertEquals(ModifyEvent.class, log.get(1).getClass()); // Ensure that VerifyEvent gets fired when setEditable was set to false text.setText(""); text.setEditable(false); log.clear(); text.setText("whatever"); assertEquals(2, log.size()); assertEquals(VerifyEvent.class, log.get(0).getClass()); assertEquals(ModifyEvent.class, log.get(1).getClass()); text.setEditable(true); // Ensure that VerifyEvent#text denotes the text to be set // and not the cut by textLimit one text.setTextLimit(5); String sampleText = "sample_text"; log.clear(); text.setText(sampleText); assertEquals(2, log.size()); assertEquals(VerifyEvent.class, log.get(0).getClass()); verifyEvent = (VerifyEvent) log.get(0); assertEquals(sampleText, verifyEvent.text); }
@Override public void widgetDisposed(DisposeEvent e) { text.removeVerifyListener(verifyListener); text.removeFocusListener(focusListener); text.removeDisposeListener(disposeListener); }