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 }
|