< prev index next >

modules/javafx.controls/src/test/java/test/javafx/scene/control/TextInputControlTest.java

Print this page




  29 import javafx.beans.Observable;
  30 import javafx.beans.property.BooleanProperty;
  31 import javafx.beans.property.SimpleBooleanProperty;
  32 import javafx.beans.property.SimpleStringProperty;
  33 import javafx.beans.property.StringProperty;
  34 import javafx.beans.value.ChangeListener;
  35 import javafx.beans.value.ObservableValue;
  36 import javafx.css.CssMetaData;
  37 import javafx.css.StyleableProperty;
  38 import javafx.event.EventHandler;
  39 import javafx.scene.Scene;
  40 import javafx.scene.input.KeyCode;
  41 import javafx.scene.input.KeyEvent;
  42 import javafx.scene.input.Clipboard;
  43 import javafx.scene.input.ClipboardContent;
  44 import javafx.scene.text.Font;
  45 import javafx.scene.layout.StackPane;
  46 import javafx.stage.Stage;
  47 import java.util.Arrays;
  48 import java.util.Collection;

  49 import javafx.scene.control.IndexRange;
  50 import javafx.scene.control.PasswordField;
  51 import javafx.scene.control.TextArea;
  52 import javafx.scene.control.TextField;
  53 import javafx.scene.control.TextInputControl;
  54 import com.sun.javafx.tk.Toolkit;
  55 import org.junit.Before;
  56 import org.junit.Ignore;
  57 import org.junit.Test;
  58 import org.junit.runner.RunWith;
  59 import org.junit.runners.Parameterized;
  60 import test.com.sun.javafx.scene.control.infrastructure.KeyEventFirer;
  61 import test.com.sun.javafx.pgstub.StubToolkit;
  62 import static org.junit.Assert.assertEquals;
  63 import static org.junit.Assert.assertFalse;
  64 import static org.junit.Assert.assertNull;
  65 import static org.junit.Assert.assertTrue;
  66 
  67 /**
  68  */


1835         textInput.replaceText(0, 0, "a");
1836         assertEquals("a", textInput.getText());
1837 
1838         textInput.replaceText(1, 1, "b");
1839         assertEquals("ab", textInput.getText());
1840 
1841         textInput.replaceText(2, 2, "c");
1842         assertEquals("abc", textInput.getText());
1843 
1844         textInput.replaceText(3, 3, "d");
1845         assertEquals("abcd", textInput.getText());
1846 
1847         textInput.replaceText(3, 4, "efg");
1848         assertEquals("abcefg", textInput.getText());
1849 
1850         textInput.replaceText(3, 6, "d");
1851         assertEquals("abcd", textInput.getText());
1852 
1853         textInput.replaceText(0, 4, "");
1854         assertEquals("", textInput.getText());






























































































































































































1855     }
1856 
1857     // TODO tests for Content firing event notification properly
1858 
1859     // TODO tests for Content not allowing illegal characters
1860 
1861     private void copy(String string) {
1862         ClipboardContent content = new ClipboardContent();
1863         content.putString(string);
1864         Clipboard.getSystemClipboard().setContent(content);
1865     }
1866 }


  29 import javafx.beans.Observable;
  30 import javafx.beans.property.BooleanProperty;
  31 import javafx.beans.property.SimpleBooleanProperty;
  32 import javafx.beans.property.SimpleStringProperty;
  33 import javafx.beans.property.StringProperty;
  34 import javafx.beans.value.ChangeListener;
  35 import javafx.beans.value.ObservableValue;
  36 import javafx.css.CssMetaData;
  37 import javafx.css.StyleableProperty;
  38 import javafx.event.EventHandler;
  39 import javafx.scene.Scene;
  40 import javafx.scene.input.KeyCode;
  41 import javafx.scene.input.KeyEvent;
  42 import javafx.scene.input.Clipboard;
  43 import javafx.scene.input.ClipboardContent;
  44 import javafx.scene.text.Font;
  45 import javafx.scene.layout.StackPane;
  46 import javafx.stage.Stage;
  47 import java.util.Arrays;
  48 import java.util.Collection;
  49 import java.util.Date;
  50 import javafx.scene.control.IndexRange;
  51 import javafx.scene.control.PasswordField;
  52 import javafx.scene.control.TextArea;
  53 import javafx.scene.control.TextField;
  54 import javafx.scene.control.TextInputControl;
  55 import com.sun.javafx.tk.Toolkit;
  56 import org.junit.Before;
  57 import org.junit.Ignore;
  58 import org.junit.Test;
  59 import org.junit.runner.RunWith;
  60 import org.junit.runners.Parameterized;
  61 import test.com.sun.javafx.scene.control.infrastructure.KeyEventFirer;
  62 import test.com.sun.javafx.pgstub.StubToolkit;
  63 import static org.junit.Assert.assertEquals;
  64 import static org.junit.Assert.assertFalse;
  65 import static org.junit.Assert.assertNull;
  66 import static org.junit.Assert.assertTrue;
  67 
  68 /**
  69  */


1836         textInput.replaceText(0, 0, "a");
1837         assertEquals("a", textInput.getText());
1838 
1839         textInput.replaceText(1, 1, "b");
1840         assertEquals("ab", textInput.getText());
1841 
1842         textInput.replaceText(2, 2, "c");
1843         assertEquals("abc", textInput.getText());
1844 
1845         textInput.replaceText(3, 3, "d");
1846         assertEquals("abcd", textInput.getText());
1847 
1848         textInput.replaceText(3, 4, "efg");
1849         assertEquals("abcefg", textInput.getText());
1850 
1851         textInput.replaceText(3, 6, "d");
1852         assertEquals("abcd", textInput.getText());
1853 
1854         textInput.replaceText(0, 4, "");
1855         assertEquals("", textInput.getText());
1856 
1857         textInput.undo();
1858         assertEquals("abcd", textInput.getText());
1859 
1860         textInput.undo();
1861         assertEquals("abcefg", textInput.getText());
1862 
1863         textInput.undo();
1864         assertEquals("abcd", textInput.getText());
1865 
1866         textInput.undo();
1867         assertEquals("", textInput.getText());
1868     }
1869 
1870     // Test for JDK-8178418
1871     @Test public void UndoRedoSpaceSequence() {
1872         Toolkit tk = (StubToolkit)Toolkit.getToolkit();
1873         StackPane root = new StackPane();
1874         Scene scene = new Scene(root);
1875         Stage stage = new Stage();
1876         String text = "123456789";
1877         String tempText = "";
1878 
1879         textInput.setText(text);
1880         stage.setScene(scene);
1881         root.getChildren().removeAll();
1882         root.getChildren().add(textInput);
1883         stage.show();
1884         tk.firePulse();
1885 
1886         KeyEventFirer keyboard = new KeyEventFirer(textInput);
1887 
1888         // Test sequence of spaces
1889         keyboard.doKeyPress(KeyCode.HOME);
1890         tk.firePulse();
1891         for(int i = 0; i < 10; ++i) {
1892             keyboard.doKeyTyped(KeyCode.SPACE);
1893             tk.firePulse();
1894             tempText += " ";
1895         }
1896         assertTrue(textInput.getText().equals(tempText + text));
1897 
1898         textInput.undo();
1899         assertTrue(textInput.getText().equals(text));
1900 
1901         textInput.redo();
1902         assertTrue(textInput.getText().equals(tempText + text));
1903 
1904         root.getChildren().removeAll();
1905         stage.hide();
1906         tk.firePulse();
1907     }
1908 
1909     // Test for JDK-8178418
1910     @Test public void UndoRedoReverseSpaceSequence() {
1911         Toolkit tk = (StubToolkit)Toolkit.getToolkit();
1912         StackPane root = new StackPane();
1913         Scene scene = new Scene(root);
1914         Stage stage = new Stage();
1915         String text = "123456789";
1916         String tempText = "";
1917 
1918         textInput.setText(text);
1919         stage.setScene(scene);
1920         root.getChildren().removeAll();
1921         root.getChildren().add(textInput);
1922         stage.show();
1923         tk.firePulse();
1924 
1925         KeyEventFirer keyboard = new KeyEventFirer(textInput);
1926         // Test reverse sequence of spaces
1927         keyboard.doKeyPress(KeyCode.HOME);
1928         tk.firePulse();
1929         for(int i = 0; i < 10; ++i) {
1930             keyboard.doKeyTyped(KeyCode.SPACE);
1931             keyboard.doKeyPress(KeyCode.LEFT);
1932             tk.firePulse();
1933             tempText += " ";
1934             assertTrue(textInput.getText().equals(tempText + text));
1935         }
1936 
1937         for(int i = 0; i < 10; ++i) {
1938             textInput.undo();
1939             tk.firePulse();
1940         }
1941         assertTrue(textInput.getText().equals(text));
1942 
1943         tempText = "";
1944         for(int i = 0; i < 10; ++i) {
1945             textInput.redo();
1946             tk.firePulse();
1947             tempText += " ";
1948             assertTrue(textInput.getText().equals(tempText + text));
1949         }
1950 
1951         root.getChildren().removeAll();
1952         stage.hide();
1953         tk.firePulse();
1954     }
1955 
1956     // Test for JDK-8178418
1957     @Test public void UndoRedoWords() {
1958         Toolkit tk = (StubToolkit)Toolkit.getToolkit();
1959         StackPane root = new StackPane();
1960         Scene scene = new Scene(root);
1961         Stage stage = new Stage();
1962         String text = "123456789";
1963         String tempText = "";
1964 
1965         textInput.setText(text);
1966         stage.setScene(scene);
1967         root.getChildren().removeAll();
1968         root.getChildren().add(textInput);
1969         stage.show();
1970         tk.firePulse();
1971 
1972         KeyEventFirer keyboard = new KeyEventFirer(textInput);
1973         
1974         // Test words separated by space
1975         keyboard.doKeyPress(KeyCode.HOME);
1976         tk.firePulse();
1977         for(int i = 0; i < 10; ++i) {
1978             keyboard.doKeyTyped(KeyCode.SPACE);
1979             keyboard.doKeyTyped(KeyCode.A);
1980             keyboard.doKeyTyped(KeyCode.B);
1981             tk.firePulse();
1982             tempText += " AB";
1983             assertTrue(textInput.getText().equals(tempText + text));
1984         }
1985 
1986         for(int i = 0; i < 10; ++i) {
1987             textInput.undo();
1988             tk.firePulse();
1989         }
1990         assertTrue(textInput.getText().equals(text));
1991 
1992         tempText = "";
1993         for(int i = 0; i < 10; ++i) {
1994             textInput.redo();
1995             tk.firePulse();
1996             tempText += " AB";
1997             assertTrue(textInput.getText().equals(tempText + text));
1998         }
1999 
2000         root.getChildren().removeAll();
2001         stage.hide();
2002         tk.firePulse();
2003     }
2004 
2005     // Test for JDK-8178418
2006     @Test public void UndoRedoTimestampBased() {
2007         Toolkit tk = (StubToolkit)Toolkit.getToolkit();
2008         StackPane root = new StackPane();
2009         Scene scene = new Scene(root);
2010         Stage stage = new Stage();
2011         String text = "123456789";
2012         String tempText = "";
2013 
2014         textInput.setText(text);
2015         stage.setScene(scene);
2016         root.getChildren().removeAll();
2017         root.getChildren().add(textInput);
2018         stage.show();
2019         tk.firePulse();
2020 
2021         KeyEventFirer keyboard = new KeyEventFirer(textInput);
2022         
2023         // Test continuos sequence of characters
2024         // in this case an undo-redo record is added after 2500 mili seconds.
2025         keyboard.doKeyPress(KeyCode.HOME);
2026         tk.firePulse();
2027 
2028         long startTime = (new Date()).getTime();
2029         while(((new Date()).getTime() - startTime < 4000)) {
2030 
2031             keyboard.doKeyTyped(KeyCode.A);
2032             tk.firePulse();
2033             tempText += "A";
2034             assertTrue(textInput.getText().equals(tempText + text));
2035         }
2036 
2037         textInput.undo();
2038         assertFalse(textInput.getText().equals(text));
2039         textInput.undo();
2040         tk.firePulse();
2041         assertTrue(textInput.getText().equals(text));
2042 
2043         root.getChildren().removeAll();
2044         stage.hide();
2045         tk.firePulse();
2046     }
2047 
2048     // TODO tests for Content firing event notification properly
2049 
2050     // TODO tests for Content not allowing illegal characters
2051 
2052     private void copy(String string) {
2053         ClipboardContent content = new ClipboardContent();
2054         content.putString(string);
2055         Clipboard.getSystemClipboard().setContent(content);
2056     }
2057 }
< prev index next >