1919import java .util .stream .Stream ;
2020
2121import org .eclipse .ui .internal .console .ConsoleOutputLineWrap ;
22+ import org .junit .jupiter .api .Named ;
2223import org .junit .jupiter .params .ParameterizedTest ;
2324import org .junit .jupiter .params .provider .Arguments ;
2425import org .junit .jupiter .params .provider .MethodSource ;
@@ -42,92 +43,92 @@ public class ConsoleOutputLineWrapTest {
4243 * @param output expected output, repeated {@code repeat} times
4344 * @param nl the newline character sequences
4445 */
45- record Parameters (int limit , int chunks , int repeat , String input , String output , String ... nl ) {
46+ record Parameters (String name , int limit , int chunks , int repeat , String input , String output , String ... nl ) {
4647 }
4748
48- private static Parameters test (int limit , String input , String output , String ... nl ) {
49- return test (limit , 1 , 1 , input , output , nl );
49+ private static Parameters test (String name , int limit , String input , String output , String ... nl ) {
50+ return test (name , limit , 1 , 1 , input , output , nl );
5051 }
5152
52- private static Parameters test (int limit , int chunks , String input , String output , String ... nl ) {
53- return test (limit , chunks , chunks , input , output , nl );
53+ private static Parameters test (String name , int limit , int chunks , String input , String output , String ... nl ) {
54+ return test (name , limit , chunks , chunks , input , output , nl );
5455 }
5556
56- private static Parameters test (int limit , int chunks , int repeat , String input , String output , String ... nl ) {
57- return new Parameters (limit , chunks , repeat , input , output , nl );
57+ private static Parameters test (String name , int limit , int chunks , int repeat , String input , String output , String ... nl ) {
58+ return new Parameters (name , limit , chunks , repeat , input , output , nl );
5859 }
5960
6061 private static final Parameters [] TESTS = {
6162 // Unix newlines
62- test (4 , "\n ========" , "\n ====\n ====" , "\n " ),
63-
64- test (10 , "========" , "========" , "\n " ),
65- test (10 , 10 , 8 , "========" , "==========" , "\n " ),
66- test ( 4 , "========" , "====\n ====" , "\n " ),
67- test ( 4 , 10 , "========" , "====\n ====" , "\n " ),
68- test ( 4 , "====\n ====" , "====\n ====" , "\n " ),
69- test ( 4 , 10 , "====\n ====" , "====\n ====" , "\n " ),
70-
71- test ( 2 , 10 , "=======\n ==" , "==\n ==\n ==\n =\n ==" , "\n " ),
72- test ( 2 , "====\n ====" , "==\n ==\n ==\n ==" , "\n " ),
73- test ( 2 , 10 , "====\n ====" , "==\n ==\n ==\n ==" , "\n " ),
74- test ( 2 , "=========" , "==\n ==\n ==\n ==\n =" , "\n " ),
75- test ( 2 , "=======\n ==" , "==\n ==\n ==\n =\n ==" , "\n " ),
76- test ( 3 , "=========" , "===\n ===\n ===" , "\n " ),
77- test ( 3 , 10 , "=========" , "===\n ===\n ===" , "\n " ),
78- test ( 3 , "========\n =" , "===\n ===\n ==\n =" , "\n " ),
79-
80- test ( 2 , "======\n ======" , "==\n ==\n ==\n ==\n ==\n ==" , "\n " ),
81- test ( 2 , 10 , "======\n ======" , "==\n ==\n ==\n ==\n ==\n ==" , "\n " ),
82-
83- test ( 3 , 3 , 1 , "========\n =" , "===\n ===\n ==\n ===\n ===\n ===\n ===\n ===\n ===\n =" , "\n " ),
84- test ( 4 , 3 , 1 , "========\n =" , "====\n ====\n ====\n ====\n =\n ====\n ====\n =\n =" , "\n " ),
63+ test ("unix_nl_01" , 4 , "\n ========" , "\n ====\n ====" , "\n " ),
64+
65+ test ("unix_nl_02" , 10 , "========" , "========" , "\n " ),
66+ test ("unix_nl_03" , 10 , 10 , 8 , "========" , "==========" , "\n " ),
67+ test ("unix_nl_04" , 4 , "========" , "====\n ====" , "\n " ),
68+ test ("unix_nl_05" , 4 , 10 , "========" , "====\n ====" , "\n " ),
69+ test ("unix_nl_06" , 4 , "====\n ====" , "====\n ====" , "\n " ),
70+ test ("unix_nl_07" , 4 , 10 , "====\n ====" , "====\n ====" , "\n " ),
71+
72+ test ("unix_nl_08" , 2 , 10 , "=======\n ==" , "==\n ==\n ==\n =\n ==" , "\n " ),
73+ test ("unix_nl_09" , 2 , "====\n ====" , "==\n ==\n ==\n ==" , "\n " ),
74+ test ("unix_nl_10" , 2 , 10 , "====\n ====" , "==\n ==\n ==\n ==" , "\n " ),
75+ test ("unix_nl_11" , 2 , "=========" , "==\n ==\n ==\n ==\n =" , "\n " ),
76+ test ("unix_nl_12" , 2 , "=======\n ==" , "==\n ==\n ==\n =\n ==" , "\n " ),
77+ test ("unix_nl_13" , 3 , "=========" , "===\n ===\n ===" , "\n " ),
78+ test ("unix_nl_14" , 3 , 10 , "=========" , "===\n ===\n ===" , "\n " ),
79+ test ("unix_nl_15" , 3 , "========\n =" , "===\n ===\n ==\n =" , "\n " ),
80+
81+ test ("unix_nl_16" , 2 , "======\n ======" , "==\n ==\n ==\n ==\n ==\n ==" , "\n " ),
82+ test ("unix_nl_17" , 2 , 10 , "======\n ======" , "==\n ==\n ==\n ==\n ==\n ==" , "\n " ),
83+
84+ test ("unix_nl_18" , 3 , 3 , 1 , "========\n =" , "===\n ===\n ==\n ===\n ===\n ===\n ===\n ===\n ===\n =" , "\n " ),
85+ test ("unix_nl_19" , 4 , 3 , 1 , "========\n =" , "====\n ====\n ====\n ====\n =\n ====\n ====\n =\n =" , "\n " ),
8586
8687 // Windows newlines
87- test (4 , "\r \n ========" , "\r \n ====\r \n ====" , "\r \n " ),
88-
89- test (10 , "========" , "========" , "\r \n " ),
90- test (10 , 10 , 8 , "========" , "==========" , "\r \n " ),
91- test ( 4 , "========" , "====\r \n ====" , "\r \n " ),
92- test ( 4 , 10 , "========" , "====\r \n ====" , "\r \n " ),
93- test ( 4 , "====\r \n ====" , "====\r \n ====" , "\r \n " ),
94- test ( 4 , 10 , "====\r \n ====" , "====\r \n ====" , "\r \n " ),
95-
96- test ( 2 , 10 , "=======\r \n ==" , "==\r \n ==\r \n ==\r \n =\r \n ==" , "\r \n " ),
97- test ( 2 , "====\r \n ====" , "==\r \n ==\r \n ==\r \n ==" , "\r \n " ),
98- test ( 2 , 10 , "====\r \n ====" , "==\r \n ==\r \n ==\r \n ==" , "\r \n " ),
99- test ( 2 , "=========" , "==\r \n ==\r \n ==\r \n ==\r \n =" , "\r \n " ),
100- test ( 2 , "=======\r \n ==" , "==\r \n ==\r \n ==\r \n =\r \n ==" , "\r \n " ),
101- test ( 3 , "=========" , "===\r \n ===\r \n ===" , "\r \n " ),
102- test ( 3 , 10 , "=========" , "===\r \n ===\r \n ===" , "\r \n " ),
103- test ( 3 , "========\r \n =" , "===\r \n ===\r \n ==\r \n =" , "\r \n " ),
104-
105- test ( 2 , "======\r \n ======" , "==\r \n ==\r \n ==\r \n ==\r \n ==\r \n ==" , "\r \n " ),
106- test ( 2 , 10 , "======\r \n ======" , "==\r \n ==\r \n ==\r \n ==\r \n ==\r \n ==" , "\r \n " ),
107-
108- test ( 3 , 3 , 1 , "========\r \n =" , "===\r \n ===\r \n ==\r \n ===\r \n ===\r \n ===\r \n ===\r \n ===\r \n ===\r \n =" , "\r \n " ),
109- test ( 4 , 3 , 1 , "========\r \n =" , "====\r \n ====\r \n ====\r \n ====\r \n =\r \n ====\r \n ====\r \n =\r \n =" , "\r \n " ),
88+ test ("win_nl_01" , 4 , "\r \n ========" , "\r \n ====\r \n ====" , "\r \n " ),
89+
90+ test ("win_nl_02" , 10 , "========" , "========" , "\r \n " ),
91+ test ("win_nl_03" , 10 , 10 , 8 , "========" , "==========" , "\r \n " ),
92+ test ("win_nl_04" , 4 , "========" , "====\r \n ====" , "\r \n " ),
93+ test ("win_nl_05" , 4 , 10 , "========" , "====\r \n ====" , "\r \n " ),
94+ test ("win_nl_06" , 4 , "====\r \n ====" , "====\r \n ====" , "\r \n " ),
95+ test ("win_nl_07" , 4 , 10 , "====\r \n ====" , "====\r \n ====" , "\r \n " ),
96+
97+ test ("win_nl_08" , 2 , 10 , "=======\r \n ==" , "==\r \n ==\r \n ==\r \n =\r \n ==" , "\r \n " ),
98+ test ("win_nl_09" , 2 , "====\r \n ====" , "==\r \n ==\r \n ==\r \n ==" , "\r \n " ),
99+ test ("win_nl_10" , 2 , 10 , "====\r \n ====" , "==\r \n ==\r \n ==\r \n ==" , "\r \n " ),
100+ test ("win_nl_11" , 2 , "=========" , "==\r \n ==\r \n ==\r \n ==\r \n =" , "\r \n " ),
101+ test ("win_nl_12" , 2 , "=======\r \n ==" , "==\r \n ==\r \n ==\r \n =\r \n ==" , "\r \n " ),
102+ test ("win_nl_13" , 3 , "=========" , "===\r \n ===\r \n ===" , "\r \n " ),
103+ test ("win_nl_14" , 3 , 10 , "=========" , "===\r \n ===\r \n ===" , "\r \n " ),
104+ test ("win_nl_15" , 3 , "========\r \n =" , "===\r \n ===\r \n ==\r \n =" , "\r \n " ),
105+
106+ test ("win_nl_16" , 2 , "======\r \n ======" , "==\r \n ==\r \n ==\r \n ==\r \n ==\r \n ==" , "\r \n " ),
107+ test ("win_nl_17" , 2 , 10 , "======\r \n ======" , "==\r \n ==\r \n ==\r \n ==\r \n ==\r \n ==" , "\r \n " ),
108+
109+ test ("win_nl_18" , 3 , 3 , 1 , "========\r \n =" , "===\r \n ===\r \n ==\r \n ===\r \n ===\r \n ===\r \n ===\r \n ===\r \n ===\r \n =" , "\r \n " ),
110+ test ("win_nl_19" , 4 , 3 , 1 , "========\r \n =" , "====\r \n ====\r \n ====\r \n ====\r \n =\r \n ====\r \n ====\r \n =\r \n =" , "\r \n " ),
110111
111112 // multiple newlines
112- test ( 3 , 3 , 1 , "========\r \n =" , "===\r \n ===\r \n ==\r \n ===\r \n ===\r \n ===\r \n ===\r \n ===\r \n ===\r \n =" , "\r \n " , "\r " , "\n " ),
113- test ( 4 , 3 , 1 , "========\r \n =" , "====\r \n ====\r \n ====\r \n ====\r \n =\r \n ====\r \n ====\r \n =\r \n =" , "\r \n " , "\r " , "\n " ),
113+ test ("multi_nl_1" , 3 , 3 , 1 , "========\r \n =" , "===\r \n ===\r \n ==\r \n ===\r \n ===\r \n ===\r \n ===\r \n ===\r \n ===\r \n =" , "\r \n " , "\r " , "\n " ),
114+ test ("multi_nl_2" , 4 , 3 , 1 , "========\r \n =" , "====\r \n ====\r \n ====\r \n ====\r \n =\r \n ====\r \n ====\r \n =\r \n =" , "\r \n " , "\r " , "\n " ),
114115
115- test ( 3 , 3 , 1 , "========\r \n =" , "===\r ===\r ==\r \n ===\r ===\r ===\r \n ===\r ===\r ===\r \n =" , "\r " , "\n " , "\r \n " ),
116- test ( 4 , 3 , 1 , "========\r \n =" , "====\r ====\r \n ====\r ====\r =\r \n ====\r ====\r =\r \n =" , "\r " , "\n " , "\r \n " ),
116+ test ("multi_nl_3" , 3 , 3 , 1 , "========\r \n =" , "===\r ===\r ==\r \n ===\r ===\r ===\r \n ===\r ===\r ===\r \n =" , "\r " , "\n " , "\r \n " ),
117+ test ("multi_nl_4" , 4 , 3 , 1 , "========\r \n =" , "====\r ====\r \n ====\r ====\r =\r \n ====\r ====\r =\r \n =" , "\r " , "\n " , "\r \n " ),
117118
118119 // surrogate pairs (emoji 😀 = \uD83D\uDE00, 2 chars) -- wrap must not split a surrogate pair
119120 // single wrap: limit=3, "ab😀c" (5 chars) -> wrap before emoji
120- test ( 3 , "ab\uD83D \uDE00 c" , "ab\n \uD83D \uDE00 c" , "\n " ),
121+ test ("surrogate_pairs_1" , 3 , "ab\uD83D \uDE00 c" , "ab\n \uD83D \uDE00 c" , "\n " ),
121122 // single wrap: limit=4, "abc😀d" (6 chars) -> wrap before emoji
122- test ( 4 , "abc\uD83D \uDE00 d" , "abc\n \uD83D \uDE00 d" , "\n " ),
123+ test ("surrogate_pairs_2" , 4 , "abc\uD83D \uDE00 d" , "abc\n \uD83D \uDE00 d" , "\n " ),
123124 // second wrap also falls on a low surrogate: limit=3, "ab😀😀b" (7 chars) -> both wraps before emoji
124- test ( 3 , "ab\uD83D \uDE00 \uD83D \uDE00 b" , "ab\n \uD83D \uDE00 \n \uD83D \uDE00 b" , "\n " ),
125+ test ("surrogate_pairs_3" , 3 , "ab\uD83D \uDE00 \uD83D \uDE00 b" , "ab\n \uD83D \uDE00 \n \uD83D \uDE00 b" , "\n " ),
125126 // wrap between two ASCII chars, then second wrap on low surrogate: limit=3, "abc😀😀" (7 chars)
126- test ( 3 , "abc\uD83D \uDE00 \uD83D \uDE00 " , "abc\n \uD83D \uDE00 \n \uD83D \uDE00 " , "\n " ),
127+ test ("surrogate_pairs_4" , 3 , "abc\uD83D \uDE00 \uD83D \uDE00 " , "abc\n \uD83D \uDE00 \n \uD83D \uDE00 " , "\n " ),
127128 };
128129
129130 private static Stream <Arguments > tests () {
130- return Arrays .stream (TESTS ).map (Arguments :: of );
131+ return Arrays .stream (TESTS ).map (ConsoleOutputLineWrapTest :: named );
131132 }
132133
133134 @ ParameterizedTest
@@ -147,4 +148,8 @@ public void test(Parameters p) {
147148 private static String repeat (String s , int r , String nl ) {
148149 return (nl + s ).repeat (r ).substring (nl .length ());
149150 }
151+
152+ private static Arguments named (Parameters p ) {
153+ return Arguments .of (Named .of (p .name , p ));
154+ }
150155}
0 commit comments