1717
1818import org .fusesource .jansi .Ansi .Color ;
1919import org .junit .jupiter .api .Test ;
20+ import org .junit .jupiter .params .ParameterizedTest ;
21+ import org .junit .jupiter .params .provider .CsvSource ;
2022
2123import static org .junit .jupiter .api .Assertions .assertEquals ;
2224
@@ -52,4 +54,83 @@ public void testClone() throws CloneNotSupportedException {
5254
5355 assertEquals (ansi .a ("test" ).reset ().toString (), clone .a ("test" ).reset ().toString ());
5456 }
57+
58+ @ ParameterizedTest
59+ @ CsvSource ({
60+ "-1,-1,ESC[-1;-1H" , "-1,0,ESC[-1;0H" , "-1,1,ESC[-1;1H" , "-1,2,ESC[-1;2H" ,
61+ "0,-1,ESC[0;-1H" , "0,0,ESC[0;0H" , "0,1,ESC[0;1H" , "0,2,ESC[0;2H" ,
62+ "1,-1,ESC[1;-1H" , "1,0,ESC[1;0H" , "1,1,ESC[1;1H" , "1,2,ESC[1;2H" ,
63+ "2,-1,ESC[2;-1H" , "2,0,ESC[2;0H" , "2,1,ESC[2;1H" , "2,2,ESC[2;2H"
64+ })
65+ public void testCursor (int x , int y , String expected ) {
66+ assertAnsi (expected , new Ansi ().cursor (x , y ));
67+ }
68+
69+ @ ParameterizedTest
70+ @ CsvSource ({"-2,''" , "-1,''" , "0,ESC[0G" , "1,ESC[1G" , "2,ESC[2G" })
71+ public void testCursorToColumn (int x , String expected ) {
72+ assertAnsi (expected , new Ansi ().cursorToColumn (x ));
73+ }
74+
75+ @ ParameterizedTest
76+ @ CsvSource ({"-2,ESC[2B" , "-1,ESC[1B" , "0,''" , "1,ESC[1A" , "2,ESC[2A" })
77+ public void testCursorUp (int y , String expected ) {
78+ assertAnsi (expected , new Ansi ().cursorUp (y ));
79+ }
80+
81+ @ ParameterizedTest
82+ @ CsvSource ({"-2,ESC[2A" , "-1,ESC[1A" , "0,''" , "1,ESC[1B" , "2,ESC[2B" })
83+ public void testCursorDown (int y , String expected ) {
84+ assertAnsi (expected , new Ansi ().cursorDown (y ));
85+ }
86+
87+ @ ParameterizedTest
88+ @ CsvSource ({"-2,ESC[2D" , "-1,ESC[1D" , "0,''" , "1,ESC[1C" , "2,ESC[2C" })
89+ public void testCursorRight (int x , String expected ) {
90+ assertAnsi (expected , new Ansi ().cursorRight (x ));
91+ }
92+
93+ @ ParameterizedTest
94+ @ CsvSource ({"-2,ESC[2C" , "-1,ESC[1C" , "0,''" , "1,ESC[1D" , "2,ESC[2D" })
95+ public void testCursorLeft (int x , String expected ) {
96+ assertAnsi (expected , new Ansi ().cursorLeft (x ));
97+ }
98+
99+ @ ParameterizedTest
100+ @ CsvSource ({
101+ "-2,-2,ESC[2DESC[2A" , "-2,-1,ESC[2DESC[1A" , "-2,0,ESC[2D" , "-2,1,ESC[2DESC[1B" , "-2,2,ESC[2DESC[2B" ,
102+ "-1,-2,ESC[1DESC[2A" , "-1,-1,ESC[1DESC[1A" , "-1,0,ESC[1D" , "-1,1,ESC[1DESC[1B" , "-1,2,ESC[1DESC[2B" ,
103+ "0,-2,ESC[2A" , "0,-1,ESC[1A" , "0,0,''" , "0,1,ESC[1B" , "0,2,ESC[2B" ,
104+ "1,-2,ESC[1CESC[2A" , "1,-1,ESC[1CESC[1A" , "1,0,ESC[1C" , "1,1,ESC[1CESC[1B" , "1,2,ESC[1CESC[2B" ,
105+ "2,-2,ESC[2CESC[2A" , "2,-1,ESC[2CESC[1A" , "2,0,ESC[2C" , "2,1,ESC[2CESC[1B" , "2,2,ESC[2CESC[2B"
106+ })
107+ public void testCursorMove (int x , int y , String expected ) {
108+ assertAnsi (expected , new Ansi ().cursorMove (x , y ));
109+ }
110+
111+ @ Test
112+ public void testCursorDownLine () {
113+ assertAnsi ("ESC[E" , new Ansi ().cursorDownLine ());
114+ }
115+
116+ @ ParameterizedTest
117+ @ CsvSource ({"-2,ESC[2F" , "-1,ESC[1F" , "0,''" , "1,ESC[1E" , "2,ESC[2E" })
118+ public void testCursorDownLine (int n , String expected ) {
119+ assertAnsi (expected , new Ansi ().cursorDownLine (n ));
120+ }
121+
122+ @ Test
123+ public void testCursorUpLine () {
124+ assertAnsi ("ESC[F" , new Ansi ().cursorUpLine ());
125+ }
126+
127+ @ ParameterizedTest
128+ @ CsvSource ({"-2,ESC[2E" , "-1,ESC[1E" , "0,''" , "1,ESC[1F" , "2,ESC[2F" })
129+ public void testCursorUpLine (int n , String expected ) {
130+ assertAnsi (expected , new Ansi ().cursorUpLine (n ));
131+ }
132+
133+ private static void assertAnsi (String expected , Ansi actual ) {
134+ assertEquals (expected .replace ("ESC" , "\033 " ), actual .toString ());
135+ }
55136}
0 commit comments