This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-codec.git
The following commit(s) were added to refs/heads/master by this push: new 92974e6e Use constant instead of magic string 92974e6e is described below commit 92974e6ed0b887b674e89b69c3075afee093b06f Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Sun Dec 10 12:52:05 2023 -0500 Use constant instead of magic string Parameterize some tests --- .../org/apache/commons/codec/CharEncoding.java | 13 +++++----- .../org/apache/commons/codec/CharsetsTest.java | 14 +++++++++++ .../org/apache/commons/codec/binary/HexTest.java | 29 ++++++++++------------ .../commons/codec/binary/StringUtilsTest.java | 4 +-- 4 files changed, 36 insertions(+), 24 deletions(-) diff --git a/src/main/java/org/apache/commons/codec/CharEncoding.java b/src/main/java/org/apache/commons/codec/CharEncoding.java index c751bf7a..d1666d47 100644 --- a/src/main/java/org/apache/commons/codec/CharEncoding.java +++ b/src/main/java/org/apache/commons/codec/CharEncoding.java @@ -18,6 +18,7 @@ package org.apache.commons.codec; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; /** * Character encoding names required of every implementation of the Java platform. @@ -65,7 +66,7 @@ public class CharEncoding { * * @see Charset */ - public static final String ISO_8859_1 = "ISO-8859-1"; + public static final String ISO_8859_1 = StandardCharsets.ISO_8859_1.name(); /** * Seven-bit ASCII, also known as ISO646-US, also known as the Basic Latin block of the Unicode character set. @@ -75,7 +76,7 @@ public class CharEncoding { * * @see Charset */ - public static final String US_ASCII = "US-ASCII"; + public static final String US_ASCII = StandardCharsets.US_ASCII.name(); /** * Sixteen-bit Unicode Transformation Format, The byte order specified by a mandatory initial byte-order mark @@ -86,7 +87,7 @@ public class CharEncoding { * * @see Charset */ - public static final String UTF_16 = "UTF-16"; + public static final String UTF_16 = StandardCharsets.UTF_16.name(); /** * Sixteen-bit Unicode Transformation Format, big-endian byte order. @@ -96,7 +97,7 @@ public class CharEncoding { * * @see Charset */ - public static final String UTF_16BE = "UTF-16BE"; + public static final String UTF_16BE = StandardCharsets.UTF_16BE.name(); /** * Sixteen-bit Unicode Transformation Format, little-endian byte order. @@ -106,7 +107,7 @@ public class CharEncoding { * * @see Charset */ - public static final String UTF_16LE = "UTF-16LE"; + public static final String UTF_16LE = StandardCharsets.UTF_16LE.name(); /** * Eight-bit Unicode Transformation Format. @@ -116,5 +117,5 @@ public class CharEncoding { * * @see Charset */ - public static final String UTF_8 = "UTF-8"; + public static final String UTF_8 = StandardCharsets.UTF_8.name(); } diff --git a/src/test/java/org/apache/commons/codec/CharsetsTest.java b/src/test/java/org/apache/commons/codec/CharsetsTest.java index 834413c4..2a0b99ad 100644 --- a/src/test/java/org/apache/commons/codec/CharsetsTest.java +++ b/src/test/java/org/apache/commons/codec/CharsetsTest.java @@ -21,7 +21,11 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; +import java.util.Collection; +import java.util.SortedSet; +import java.util.TreeSet; +import org.apache.commons.io.Charsets; import org.junit.jupiter.api.Test; /** @@ -29,6 +33,16 @@ import org.junit.jupiter.api.Test; */ public class CharsetsTest { + private static final TreeSet<String> AVAILABLE_CHARSET_NAMES = new TreeSet<>(Charset.availableCharsets().keySet()); + + public static SortedSet<String> getAvailableCharsetNames() { + return AVAILABLE_CHARSET_NAMES; + } + + public static Collection<Charset> getRequiredCharsets() { + return Charsets.requiredCharsets().values(); + } + @SuppressWarnings("deprecation") @Test public void testIso8859_1() { diff --git a/src/test/java/org/apache/commons/codec/binary/HexTest.java b/src/test/java/org/apache/commons/codec/binary/HexTest.java index e0775183..d41d57a2 100644 --- a/src/test/java/org/apache/commons/codec/binary/HexTest.java +++ b/src/test/java/org/apache/commons/codec/binary/HexTest.java @@ -34,6 +34,8 @@ import java.util.concurrent.ThreadLocalRandom; import org.apache.commons.codec.DecoderException; import org.apache.commons.codec.EncoderException; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; /** * Tests {@link org.apache.commons.codec.binary.Hex}. @@ -143,20 +145,13 @@ public class HexTest { } } - @Test - public void testCustomCharset() throws UnsupportedEncodingException, DecoderException { - for (final String name : Charset.availableCharsets().keySet()) { - testCustomCharset(name, "testCustomCharset"); - } - } - /** * @param name * @param parent * @throws UnsupportedEncodingException * @throws DecoderException */ - private void testCustomCharset(final String name, final String parent) throws UnsupportedEncodingException, + private void testCharset(final String name, final String parent) throws UnsupportedEncodingException, DecoderException { if (!charsetSanityCheck(name)) { return; @@ -190,6 +185,12 @@ public class HexTest { assertEquals(sourceString, actualStringFromBytes, name); } + @ParameterizedTest + @MethodSource("org.apache.commons.codec.CharsetsTest#getAvailableCharsetNames()") + public void testCustomCharset(final String name) throws UnsupportedEncodingException, DecoderException { + testCharset(name, "testCustomCharset"); + } + @Test public void testCustomCharsetBadName() { assertThrows(UnsupportedCharsetException.class, () -> new Hex(BAD_ENCODING_NAME)); @@ -663,13 +664,9 @@ public class HexTest { assertEquals(StandardCharsets.UTF_8.name(), new Hex(StandardCharsets.UTF_8).getCharsetName()); } - @Test - public void testRequiredCharset() throws UnsupportedEncodingException, DecoderException { - testCustomCharset("UTF-8", "testRequiredCharset"); - testCustomCharset("UTF-16", "testRequiredCharset"); - testCustomCharset("UTF-16BE", "testRequiredCharset"); - testCustomCharset("UTF-16LE", "testRequiredCharset"); - testCustomCharset("US-ASCII", "testRequiredCharset"); - testCustomCharset("ISO8859_1", "testRequiredCharset"); + @ParameterizedTest + @MethodSource("org.apache.commons.codec.CharsetsTest#getRequiredCharsets()") + public void testRequiredCharset(final Charset charset) throws UnsupportedEncodingException, DecoderException { + testCharset(charset.name(), "testRequiredCharset"); } } diff --git a/src/test/java/org/apache/commons/codec/binary/StringUtilsTest.java b/src/test/java/org/apache/commons/codec/binary/StringUtilsTest.java index 83e3566e..616ca16e 100644 --- a/src/test/java/org/apache/commons/codec/binary/StringUtilsTest.java +++ b/src/test/java/org/apache/commons/codec/binary/StringUtilsTest.java @@ -154,7 +154,7 @@ public class StringUtilsTest { @Test public void testGetBytesUtf8() throws UnsupportedEncodingException { - final String charsetName = "UTF-8"; + final String charsetName = StandardCharsets.UTF_8.name(); testGetBytesUnchecked(charsetName); final byte[] expected = STRING_FIXTURE.getBytes(charsetName); final byte[] actual = StringUtils.getBytesUtf8(STRING_FIXTURE); @@ -234,7 +234,7 @@ public class StringUtilsTest { @Test public void testNewStringUtf8() throws UnsupportedEncodingException { - final String charsetName = "UTF-8"; + final String charsetName = StandardCharsets.UTF_8.name(); testNewString(charsetName); final String expected = new String(BYTES_FIXTURE, charsetName); final String actual = StringUtils.newStringUtf8(BYTES_FIXTURE);