Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 14 additions & 15 deletions test/jdk/java/nio/charset/Charset/AvailableCharsetNames.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2010, 2023, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
Expand All @@ -25,27 +25,26 @@
* @bug 4422044
* @summary Ensure that keys in available-charset map
* are identical to canonical names
* @run junit AvailableCharsetNames
*/

import java.io.*;
import java.nio.*;
import java.nio.charset.*;
import java.util.*;
import java.nio.charset.Charset;

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class AvailableCharsetNames {

public static void main(String[] args) throws Exception {
Iterator charsetIterator = Charset.availableCharsets().keySet().iterator();
while (charsetIterator.hasNext()) {
String charsetName = (String) charsetIterator.next();
/**
* Test that the keys in Charset.availableCharsets()
* are equal to the associated Charset.name() value.
*/
@Test
public void canonicalNamesTest() {
for (String charsetName : Charset.availableCharsets().keySet()) {
Charset charset = Charset.forName(charsetName);
if (!charset.name().equals(charsetName)) {
throw new Exception("Error: Charset name mismatch - expected "
+ charsetName + ", got " + charset.name());
}
assertEquals(charset.name(), charsetName, "Charset name mismatch");
}

}

}
181 changes: 102 additions & 79 deletions test/jdk/java/nio/charset/Charset/CharsetContainmentTest.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2010, 2023, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
Expand All @@ -25,93 +25,116 @@
* @bug 4626545 4696726
* @summary Checks the inter containment relationships between NIO charsets
* @modules jdk.charsets
* @run junit CharsetContainmentTest
*/

import java.nio.charset.*;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;

public class CharsetContainmentTest {
static String[] encodings =
{ "US-ASCII", "UTF-16", "UTF-16BE", "UTF-16LE", "UTF-8",
"windows-1252", "ISO-8859-1", "ISO-8859-2", "ISO-8859-3",
"ISO-8859-4", "ISO-8859-5", "ISO-8859-6", "ISO-8859-7",
"ISO-8859-8", "ISO-8859-9", "ISO-8859-13", "ISO-8859-15", "ISO-8859-16",
"ISO-2022-JP", "ISO-2022-KR",
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;

// Temporarily remove ISO-2022-CN-* charsets until full encoder/decoder
// support is added (4673614)
// "x-ISO-2022-CN-CNS", "x-ISO-2022-CN-GB",
import static org.junit.jupiter.api.Assertions.assertTrue;

"x-ISCII91", "GBK", "GB18030", "Big5",
"x-EUC-TW", "GB2312", "EUC-KR", "x-Johab", "Big5-HKSCS",
"x-MS950-HKSCS", "windows-1251", "windows-1253", "windows-1254",
"windows-1255", "windows-1256", "windows-1257", "windows-1258",
"x-mswin-936", "x-windows-949", "x-windows-950", "windows-31j",
"Shift_JIS", "EUC-JP", "KOI8-R", "TIS-620"
};
public class CharsetContainmentTest {

static String[][] contains = {
{ "US-ASCII"},
encodings,
encodings,
encodings,
encodings,
{"US-ASCII", "windows-1252"},
{"US-ASCII", "ISO-8859-1"},
{"US-ASCII", "ISO-8859-2"},
{"US-ASCII", "ISO-8859-3"},
{"US-ASCII", "ISO-8859-4"},
{"US-ASCII", "ISO-8859-5"},
{"US-ASCII", "ISO-8859-6"},
{"US-ASCII", "ISO-8859-7"},
{"US-ASCII", "ISO-8859-8"},
{"US-ASCII", "ISO-8859-9"},
{"US-ASCII", "ISO-8859-13"},
{"US-ASCII", "ISO-8859-15"},
{"US-ASCII", "ISO-8859-16"},
{"ISO-2022-JP"},
{"ISO-2022-KR"},
// Temporarily remove ISO-2022-CN-* charsets until full encoder/decoder
// support is added (4673614)
//{"x-ISO-2022-CN-CNS"},
//{"x-ISO-2022-CN-GB"},
{"US-ASCII", "x-ISCII91"},
{"US-ASCII", "GBK"},
encodings,
{"US-ASCII", "Big5"},
{"US-ASCII", "x-EUC-TW"},
{"US-ASCII", "GB2312"},
{"US-ASCII", "EUC-KR"},
{"US-ASCII", "x-Johab"},
{"US-ASCII", "Big5-HKSCS", "Big5"},
{"US-ASCII", "x-MS950-HKSCS", "x-windows-950"},
{"US-ASCII", "windows-1251"},
{"US-ASCII", "windows-1253"},
{"US-ASCII", "windows-1254"},
{"US-ASCII", "windows-1255"},
{"US-ASCII", "windows-1256"},
{"US-ASCII", "windows-1257"},
{"US-ASCII", "windows-1258"},
{"US-ASCII", "x-mswin-936"},
{"US-ASCII", "x-windows-949"},
{"US-ASCII", "x-windows-950"},
{"US-ASCII", "windows-31j" },
{"US-ASCII", "Shift_JIS"},
{"US-ASCII", "EUC-JP"},
{"US-ASCII", "KOI8-R"},
{"US-ASCII", "TIS-620"}};
/**
* Test that the charsets in 'encodings' contain the charsets
* inside 'contains'. Each value in 'encodings' is mapped to a String
* array in 'contains'. For example, the value, "TIS-620" in 'encodings'
* should contain "US-ASCII", "TIS-620".
*/
@ParameterizedTest
@MethodSource("charsets")
public void interContainmentTest(String containerName, String containedName) {
Charset container = Charset.forName(containerName);
Charset contained = Charset.forName(containedName);
assertTrue(container.contains(contained),
String.format("Charset: %s does not contain: %s", containerName, containedName));
}

private static Stream<Arguments> charsets() {
String[] encodings = {
"US-ASCII", "UTF-16", "UTF-16BE", "UTF-16LE", "UTF-8",
"windows-1252", "ISO-8859-1", "ISO-8859-2", "ISO-8859-3",
"ISO-8859-4", "ISO-8859-5", "ISO-8859-6", "ISO-8859-7",
"ISO-8859-8", "ISO-8859-9", "ISO-8859-13", "ISO-8859-15", "ISO-8859-16",
"ISO-2022-JP", "ISO-2022-KR",
// Temporarily remove ISO-2022-CN-* charsets until full encoder/decoder
// support is added (4673614)
// "x-ISO-2022-CN-CNS", "x-ISO-2022-CN-GB",
"x-ISCII91", "GBK", "GB18030", "Big5",
"x-EUC-TW", "GB2312", "EUC-KR", "x-Johab", "Big5-HKSCS",
"x-MS950-HKSCS", "windows-1251", "windows-1253", "windows-1254",
"windows-1255", "windows-1256", "windows-1257", "windows-1258",
"x-mswin-936", "x-windows-949", "x-windows-950", "windows-31j",
"Shift_JIS", "EUC-JP", "KOI8-R", "TIS-620"
};

public static void main(String[] args) throws Exception {
String[][] contains = {
{"US-ASCII"},
encodings,
encodings,
encodings,
encodings,
{"US-ASCII", "windows-1252"},
{"US-ASCII", "ISO-8859-1"},
{"US-ASCII", "ISO-8859-2"},
{"US-ASCII", "ISO-8859-3"},
{"US-ASCII", "ISO-8859-4"},
{"US-ASCII", "ISO-8859-5"},
{"US-ASCII", "ISO-8859-6"},
{"US-ASCII", "ISO-8859-7"},
{"US-ASCII", "ISO-8859-8"},
{"US-ASCII", "ISO-8859-9"},
{"US-ASCII", "ISO-8859-13"},
{"US-ASCII", "ISO-8859-15"},
{"US-ASCII", "ISO-8859-16"},
{"ISO-2022-JP"},
{"ISO-2022-KR"},
// Temporarily remove ISO-2022-CN-* charsets until full encoder/decoder
// support is added (4673614)
//{"x-ISO-2022-CN-CNS"},
//{"x-ISO-2022-CN-GB"},
{"US-ASCII", "x-ISCII91"},
{"US-ASCII", "GBK"},
encodings,
{"US-ASCII", "Big5"},
{"US-ASCII", "x-EUC-TW"},
{"US-ASCII", "GB2312"},
{"US-ASCII", "EUC-KR"},
{"US-ASCII", "x-Johab"},
{"US-ASCII", "Big5-HKSCS", "Big5"},
{"US-ASCII", "x-MS950-HKSCS", "x-windows-950"},
{"US-ASCII", "windows-1251"},
{"US-ASCII", "windows-1253"},
{"US-ASCII", "windows-1254"},
{"US-ASCII", "windows-1255"},
{"US-ASCII", "windows-1256"},
{"US-ASCII", "windows-1257"},
{"US-ASCII", "windows-1258"},
{"US-ASCII", "x-mswin-936"},
{"US-ASCII", "x-windows-949"},
{"US-ASCII", "x-windows-950"},
{"US-ASCII", "windows-31j"},
{"US-ASCII", "Shift_JIS"},
{"US-ASCII", "EUC-JP"},
{"US-ASCII", "KOI8-R"},
{"US-ASCII", "TIS-620"}};

// Length of encodings and contains should always be equal
if (encodings.length != contains.length) {
throw new RuntimeException("Testing data is not set up correctly");
}
List<Arguments> charsetList = new ArrayList<Arguments>();
for (int i = 0; i < encodings.length; i++) {
Charset c = Charset.forName(encodings[i]);
for (int j = 0 ; j < contains[i].length; j++) {
if (c.contains(Charset.forName(contains[i][j])))
continue;
else {
throw new Exception ("Error: charset " + encodings[i] +
"doesn't contain " + contains[i][j]);
}
}
for (int j = 0 ; j < contains[i].length; j++) {
charsetList.add(Arguments.of(encodings[i], contains[i][j]));
}
}
return charsetList.stream();
}
}
Loading