7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 /* @test
27 @bug 6636323 6636319 7040220
28 @summary Test if StringCoding and NIO result have the same de/encoding result
29 * @run main/othervm/timeout=2000 TestStringCoding
30 */
31
32 import java.util.*;
33 import java.nio.*;
34 import java.nio.charset.*;
35
36 public class TestStringCoding {
37 public static void main(String[] args) throws Throwable {
38
39 for (Boolean hasSM: new boolean[] { false, true }) {
40 if (hasSM)
41 System.setSecurityManager(new PermissiveSecurityManger());
42 for (Charset cs: Charset.availableCharsets().values()) {
43 if ("ISO-2022-CN".equals(cs.name()) ||
44 "x-COMPOUND_TEXT".equals(cs.name()) ||
45 "x-JISAutoDetect".equals(cs.name()))
46 continue;
47 System.out.printf("Testing(sm=%b) " + cs.name() + "....", hasSM);
94
95 //getBytes(cs);
96 baSC = bmpStr.getBytes(cs);
97 if (!Arrays.equals(baSC, baNIO))
98 throw new RuntimeException("getBytes(cs) failed -> " + cs.name());
99
100 //new String(csn);
101 String strSC = new String(sbBA, cs.name());
102 String strNIO = dec.reset().decode(ByteBuffer.wrap(sbBA)).toString();
103 if(!strNIO.equals(strSC))
104 throw new RuntimeException("new String(csn) failed -> " + cs.name());
105
106 //new String(cs);
107 strSC = new String(sbBA, cs);
108 if (!strNIO.equals(strSC))
109 throw new RuntimeException("new String(cs) failed -> " + cs.name());
110
111 //encode unmappable surrogates
112 if (enc instanceof sun.nio.cs.ArrayEncoder &&
113 cs.contains(Charset.forName("ASCII"))) {
114 if (cs.name().equals("UTF-8")) // utf8 handles surrogates
115 return;
116 enc.replaceWith(new byte[] { (byte)'A'});
117 sun.nio.cs.ArrayEncoder cae = (sun.nio.cs.ArrayEncoder)enc;
118
119 String str = "ab\uD800\uDC00\uD800\uDC00cd";
120 byte[] ba = new byte[str.length() - 2];
121 int n = cae.encode(str.toCharArray(), 0, str.length(), ba);
122 if (n != 6 || !"abAAcd".equals(new String(ba, cs.name())))
123 throw new RuntimeException("encode1(surrogates) failed -> "
124 + cs.name());
125
126 ba = new byte[str.length()];
127 n = cae.encode(str.toCharArray(), 0, str.length(), ba);
128 if (n != 6 || !"abAAcd".equals(new String(ba, 0, n,
129 cs.name())))
130 throw new RuntimeException("encode2(surrogates) failed -> "
131 + cs.name());
132 str = "ab\uD800B\uDC00Bcd";
133 ba = new byte[str.length()];
134 n = cae.encode(str.toCharArray(), 0, str.length(), ba);
135 if (n != 8 || !"abABABcd".equals(new String(ba, 0, n,
136 cs.name())))
137 throw new RuntimeException("encode3(surrogates) failed -> "
138 + cs.name());
139
140 ba = new byte[str.length() - 1];
141 n = cae.encode(str.toCharArray(), 0, str.length(), ba);
142 if (n != 7 || !"abABABc".equals(new String(ba, 0, n,
143 cs.name())))
144 throw new RuntimeException("encode4(surrogates) failed -> "
145 + cs.name());
146 }
147
148 }
149
150 static class PermissiveSecurityManger extends SecurityManager {
151 @Override public void checkPermission(java.security.Permission p) {}
152 }
153 }
|
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 /* @test
27 @bug 6636323 6636319 7040220 7096080
28 @summary Test if StringCoding and NIO result have the same de/encoding result
29 * @run main/othervm/timeout=2000 TestStringCoding
30 */
31
32 import java.util.*;
33 import java.nio.*;
34 import java.nio.charset.*;
35
36 public class TestStringCoding {
37 public static void main(String[] args) throws Throwable {
38
39 for (Boolean hasSM: new boolean[] { false, true }) {
40 if (hasSM)
41 System.setSecurityManager(new PermissiveSecurityManger());
42 for (Charset cs: Charset.availableCharsets().values()) {
43 if ("ISO-2022-CN".equals(cs.name()) ||
44 "x-COMPOUND_TEXT".equals(cs.name()) ||
45 "x-JISAutoDetect".equals(cs.name()))
46 continue;
47 System.out.printf("Testing(sm=%b) " + cs.name() + "....", hasSM);
94
95 //getBytes(cs);
96 baSC = bmpStr.getBytes(cs);
97 if (!Arrays.equals(baSC, baNIO))
98 throw new RuntimeException("getBytes(cs) failed -> " + cs.name());
99
100 //new String(csn);
101 String strSC = new String(sbBA, cs.name());
102 String strNIO = dec.reset().decode(ByteBuffer.wrap(sbBA)).toString();
103 if(!strNIO.equals(strSC))
104 throw new RuntimeException("new String(csn) failed -> " + cs.name());
105
106 //new String(cs);
107 strSC = new String(sbBA, cs);
108 if (!strNIO.equals(strSC))
109 throw new RuntimeException("new String(cs) failed -> " + cs.name());
110
111 //encode unmappable surrogates
112 if (enc instanceof sun.nio.cs.ArrayEncoder &&
113 cs.contains(Charset.forName("ASCII"))) {
114 if (cs.name().equals("UTF-8") || // utf8 handles surrogates
115 cs.name().equals("CESU-8")) // utf8 handles surrogates
116 return;
117 enc.replaceWith(new byte[] { (byte)'A'});
118 sun.nio.cs.ArrayEncoder cae = (sun.nio.cs.ArrayEncoder)enc;
119
120 String str = "ab\uD800\uDC00\uD800\uDC00cd";
121 byte[] ba = new byte[str.length() - 2];
122 int n = cae.encode(str.toCharArray(), 0, str.length(), ba);
123 if (n != 6 || !"abAAcd".equals(new String(ba, cs.name())))
124 throw new RuntimeException("encode1(surrogates) failed -> "
125 + cs.name());
126
127 ba = new byte[str.length()];
128 n = cae.encode(str.toCharArray(), 0, str.length(), ba);
129 if (n != 6 || !"abAAcd".equals(new String(ba, 0, n,
130 cs.name())))
131 throw new RuntimeException("encode2(surrogates) failed -> "
132 + cs.name());
133 str = "ab\uD800B\uDC00Bcd";
134 ba = new byte[str.length()];
135 n = cae.encode(str.toCharArray(), 0, str.length(), ba);
136 if (n != 8 || !"abABABcd".equals(new String(ba, 0, n,
137 cs.name())))
138 throw new RuntimeException("encode3(surrogates) failed -> "
139 + cs.name());
140 ba = new byte[str.length() - 1];
141 n = cae.encode(str.toCharArray(), 0, str.length(), ba);
142 if (n != 7 || !"abABABc".equals(new String(ba, 0, n,
143 cs.name())))
144 throw new RuntimeException("encode4(surrogates) failed -> "
145 + cs.name());
146 }
147
148 }
149
150 static class PermissiveSecurityManger extends SecurityManager {
151 @Override public void checkPermission(java.security.Permission p) {}
152 }
153 }
|