@@ -54,6 +54,73 @@ public void testReplace() {
5454 assertEquals ("testReplace:" , "cabc" , StringOps .replace (test , "cabc" , "c" ));
5555 }
5656
57+ public void testEscapeUnEscapeFileName () {
58+ assertEquals ("" , StringOps .escapeFileName ("" ));
59+ assertEquals ("abc123" , StringOps .escapeFileName ("abc123" ));
60+ assertEquals ("abc123" , StringOps .unescapeFileName ("abc123" ));
61+
62+ assertEquals ("\u001b \u001b " , StringOps .escapeFileName ("\u001b " ));
63+ assertEquals ("\u001b " , StringOps .unescapeFileName ("\u001b \u001b " ));
64+
65+ assertEquals ("\u001b " , StringOps .escapeFileName (" " ));
66+ assertEquals (" " , StringOps .unescapeFileName ("\u001b " ));
67+
68+ assertEquals ("\u001b " + String .valueOf (java .io .File .pathSeparatorChar ), StringOps .escapeFileName (String .valueOf (java .io .File .pathSeparatorChar )));
69+ assertEquals (String .valueOf (java .io .File .pathSeparatorChar ), StringOps .unescapeFileName ("\u001b " + String .valueOf (java .io .File .pathSeparatorChar )));
70+
71+ assertEquals ("\u001b " + String .valueOf (ProcessChain .PROCESS_SEPARATOR_CHAR ), StringOps .escapeFileName (String .valueOf (ProcessChain .PROCESS_SEPARATOR_CHAR )));
72+ assertEquals (String .valueOf (ProcessChain .PROCESS_SEPARATOR_CHAR ), StringOps .unescapeFileName ("\u001b " + String .valueOf (ProcessChain .PROCESS_SEPARATOR_CHAR )));
73+
74+ assertEquals ("\u001b " + String .valueOf (ProcessChain .PIPE_SEPARATOR_CHAR ), StringOps .escapeFileName (String .valueOf (ProcessChain .PIPE_SEPARATOR_CHAR )));
75+ assertEquals (String .valueOf (ProcessChain .PIPE_SEPARATOR_CHAR ), StringOps .unescapeFileName ("\u001b " + String .valueOf (ProcessChain .PIPE_SEPARATOR_CHAR )));
76+
77+ assertEquals ("\u001b :" , StringOps .escapeFileName (":" ));
78+ assertEquals (":" , StringOps .unescapeFileName ("\u001b :" ));
79+
80+ assertEquals ("\u001b \u001b \u001b \u001b " , StringOps .escapeFileName ("\u001b \u001b " ));
81+ assertEquals ("\u001b \u001b " , StringOps .unescapeFileName ("\u001b \u001b \u001b \u001b " ));
82+
83+ assertEquals ("\u001b \u001b " , StringOps .escapeFileName (" " ));
84+ assertEquals (" " , StringOps .unescapeFileName ("\u001b \u001b " ));
85+
86+ assertEquals ("\u001b " + String .valueOf (java .io .File .pathSeparatorChar ) + "\u001b " + String .valueOf (java .io .File .pathSeparatorChar ), StringOps .escapeFileName (String .valueOf (java .io .File .pathSeparatorChar ) + String .valueOf (java .io .File .pathSeparatorChar )));
87+ assertEquals (String .valueOf (java .io .File .pathSeparatorChar ) + String .valueOf (java .io .File .pathSeparatorChar ), StringOps .unescapeFileName ("\u001b " + String .valueOf (java .io .File .pathSeparatorChar ) + "\u001b " + String .valueOf (java .io .File .pathSeparatorChar )));
88+
89+ assertEquals ("\u001b " + String .valueOf (ProcessChain .PROCESS_SEPARATOR_CHAR ) + "\u001b " + String .valueOf (ProcessChain .PROCESS_SEPARATOR_CHAR ), StringOps .escapeFileName (String .valueOf (ProcessChain .PROCESS_SEPARATOR_CHAR ) + String .valueOf (ProcessChain .PROCESS_SEPARATOR_CHAR )));
90+ assertEquals (String .valueOf (ProcessChain .PROCESS_SEPARATOR_CHAR ) + String .valueOf (ProcessChain .PROCESS_SEPARATOR_CHAR ), StringOps .unescapeFileName ("\u001b " + String .valueOf (ProcessChain .PROCESS_SEPARATOR_CHAR ) + "\u001b " + String .valueOf (ProcessChain .PROCESS_SEPARATOR_CHAR )));
91+
92+ assertEquals ("\u001b " + String .valueOf (ProcessChain .PIPE_SEPARATOR_CHAR ) + "\u001b " + String .valueOf (ProcessChain .PIPE_SEPARATOR_CHAR ), StringOps .escapeFileName (String .valueOf (ProcessChain .PIPE_SEPARATOR_CHAR ) + String .valueOf (ProcessChain .PIPE_SEPARATOR_CHAR )));
93+ assertEquals (String .valueOf (ProcessChain .PIPE_SEPARATOR_CHAR ) + String .valueOf (ProcessChain .PIPE_SEPARATOR_CHAR ), StringOps .unescapeFileName ("\u001b " + String .valueOf (ProcessChain .PIPE_SEPARATOR_CHAR ) + "\u001b " + String .valueOf (ProcessChain .PIPE_SEPARATOR_CHAR )));
94+
95+ assertEquals ("\u001b :\u001b :" , StringOps .escapeFileName ("::" ));
96+ assertEquals ("::" , StringOps .unescapeFileName ("\u001b :\u001b :" ));
97+
98+ assertEquals ("abc\u001b \u001b 123" , StringOps .escapeFileName ("abc\u001b 123" ));
99+ assertEquals ("abc\u001b 123" , StringOps .unescapeFileName ("abc\u001b \u001b 123" ));
100+
101+
102+ assertEquals ("abc\u001b 123" , StringOps .escapeFileName ("abc 123" ));
103+ assertEquals ("abc 123" , StringOps .unescapeFileName ("abc\u001b 123" ));
104+
105+ assertEquals ("abc\u001b " + String .valueOf (java .io .File .pathSeparatorChar ) + "123" , StringOps .escapeFileName ("abc" + String .valueOf (java .io .File .pathSeparatorChar ) + "123" ));
106+ assertEquals ("abc" + String .valueOf (java .io .File .pathSeparatorChar ) + "123" , StringOps .unescapeFileName ("abc\u001b " + String .valueOf (java .io .File .pathSeparatorChar ) + "123" ));
107+
108+ assertEquals ("abc\u001b " + String .valueOf (ProcessChain .PROCESS_SEPARATOR_CHAR ) + "123" , StringOps .escapeFileName ("abc" + String .valueOf (ProcessChain .PROCESS_SEPARATOR_CHAR ) + "123" ));
109+ assertEquals ("abc" + String .valueOf (ProcessChain .PROCESS_SEPARATOR_CHAR ) + "123" , StringOps .unescapeFileName ("abc\u001b " + String .valueOf (ProcessChain .PROCESS_SEPARATOR_CHAR ) + "123" ));
110+
111+ assertEquals ("abc\u001b " + String .valueOf (ProcessChain .PIPE_SEPARATOR_CHAR ) + "123" , StringOps .escapeFileName ("abc" + String .valueOf (ProcessChain .PIPE_SEPARATOR_CHAR ) + "123" ));
112+ assertEquals ("abc" + String .valueOf (ProcessChain .PIPE_SEPARATOR_CHAR ) + "123" , StringOps .unescapeFileName ("abc\u001b " + String .valueOf (ProcessChain .PIPE_SEPARATOR_CHAR ) + "123" ));
113+
114+ assertEquals ("abc\u001b :123" , StringOps .escapeFileName ("abc:123" ));
115+ assertEquals ("abc:123" , StringOps .unescapeFileName ("abc\u001b :123" ));
116+
117+ assertEquals ("\u001b \u001b b" , StringOps .escapeFileName ("\u001b b" ));
118+ assertEquals ("\u001b b" , StringOps .unescapeFileName ("\u001b \u001b b" ));
119+
120+ assertEquals ("abc123\u001b \u001b \u001b \u001b :\u001b " + String .valueOf (java .io .File .pathSeparatorChar ) + "\u001b " + String .valueOf (ProcessChain .PROCESS_SEPARATOR_CHAR ) + "\u001b " + String .valueOf (ProcessChain .PIPE_SEPARATOR_CHAR ), StringOps .escapeFileName ("abc123 \u001b :" + String .valueOf (java .io .File .pathSeparatorChar ) + String .valueOf (ProcessChain .PROCESS_SEPARATOR_CHAR ) + String .valueOf (ProcessChain .PIPE_SEPARATOR_CHAR )));
121+ assertEquals ("abc123 \u001b :" + String .valueOf (java .io .File .pathSeparatorChar ) + String .valueOf (ProcessChain .PROCESS_SEPARATOR_CHAR ) + String .valueOf (ProcessChain .PIPE_SEPARATOR_CHAR ), StringOps .unescapeFileName ("abc123\u001b \u001b \u001b \u001b :\u001b " + String .valueOf (java .io .File .pathSeparatorChar ) + "\u001b " + String .valueOf (ProcessChain .PROCESS_SEPARATOR_CHAR ) + "\u001b " + String .valueOf (ProcessChain .PIPE_SEPARATOR_CHAR )));
122+ }
123+
57124 public void testEncodeHTML () {
58125 assertEquals ("" , StringOps .encodeHTML ("" ));
59126 assertEquals ("abc" , StringOps .encodeHTML ("abc" ));
0 commit comments