/* * #%L * Common package for I/O and related utilities * %% * Copyright (C) 2005 - 2015 Open Microscopy Environment: * - Board of Regents of the University of Wisconsin-Madison * - Glencoe Software, Inc. * - University of Dundee * %% * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * #L% */ package loci.common.utests; import static org.testng.AssertJUnit.assertTrue; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; import java.util.Arrays; import loci.common.Constants; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; /** * Tests for string encoding. * */ public class EncodingTest { // -- Encodings -- private static final String MAC = getMacEncoding(); private static final String WINDOWS = "Windows-1252"; // -- Test strings -- private static final String ENGLISH_ALPHABET = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; private static final String UMLAUTS = "äëüöïÄËÖÜÏ"; private static final String ESZETT = "ß"; private static final String ASSORTED_LETTERS = "åÅñÑçÇøØ"; private static final String ACUTE_ACCENTS = "áéúíóÁÉÍÓÚ"; private static final String SUPERSCRIPTS = "¹²³"; private static final String MATH = "+=-×÷"; private static final String FRACTIONS = "¼½¾"; private static final String CURRENCY = "€$¥£¢"; private static final String PUNCTUATION = ",.?':;\"¶¿“”\\!˝¸-˘‘’`ˇ§"; private static final String SQUARE_BRACKETS = "[]"; private static final String CURLY_BRACKETS = "{}"; private static final String ANGLE_BRACKETS = "<>"; private static final String ROUND_BRACKETS = "()"; private static final String DOUBLE_ANGLE_BRACKETS = "«»"; static String getMacEncoding() { if (Charset.isSupported("MacRoman")) { return "MacRoman"; } if (Charset.isSupported("x-MacRoman")) { return "x-MacRoman"; } return "macintosh"; } // -- Tests -- @Test public void testAlphabetMac() { try { assertTrue(ENGLISH_ALPHABET.equals( new String(ENGLISH_ALPHABET.getBytes(MAC), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testAlphabetWindows() { try { assertTrue(ENGLISH_ALPHABET.equals( new String(ENGLISH_ALPHABET.getBytes(WINDOWS), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testUmlautsMac() { try { assertTrue(UMLAUTS.equals( new String(UMLAUTS.getBytes(MAC), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testUmlautsWindows() { try { assertTrue(UMLAUTS.equals( new String(UMLAUTS.getBytes(WINDOWS), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testEszettLettersMac() { try { assertTrue(ESZETT.equals( new String(ESZETT.getBytes(MAC), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testEszettLettersWindows() { try { assertTrue(ESZETT.equals( new String(ESZETT.getBytes(WINDOWS), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testAssortedLettersMac() { try { assertTrue(ASSORTED_LETTERS.equals( new String(ASSORTED_LETTERS.getBytes(MAC), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testAssortedLettersWindows() { try { assertTrue(ASSORTED_LETTERS.equals( new String(ASSORTED_LETTERS.getBytes(WINDOWS), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testAcuteAccentsMac() { try { assertTrue(ACUTE_ACCENTS.equals( new String(ACUTE_ACCENTS.getBytes(MAC), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testAcuteAccentsWindows() { try { assertTrue(ACUTE_ACCENTS.equals( new String(ACUTE_ACCENTS.getBytes(WINDOWS), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testSuperscriptsMac() { try { assertTrue(SUPERSCRIPTS.equals( new String(SUPERSCRIPTS.getBytes(MAC), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testSuperscriptsWindows() { try { assertTrue(SUPERSCRIPTS.equals( new String(SUPERSCRIPTS.getBytes(WINDOWS), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testMathMac() { try { assertTrue(MATH.equals( new String(MATH.getBytes(MAC), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testMathWindows() { try { assertTrue(MATH.equals( new String(MATH.getBytes(WINDOWS), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testFractionsMac() { try { assertTrue(FRACTIONS.equals( new String(FRACTIONS.getBytes(MAC), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testFractionsWindows() { try { assertTrue(FRACTIONS.equals( new String(FRACTIONS.getBytes(WINDOWS), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testCurrencyMac() { try { assertTrue(CURRENCY.equals( new String(CURRENCY.getBytes(MAC), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testCurrencyWindows() { try { assertTrue(CURRENCY.equals( new String(CURRENCY.getBytes(WINDOWS), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testPunctuationMac() { try { assertTrue(PUNCTUATION.equals( new String(PUNCTUATION.getBytes(MAC), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testPunctuationWindows() { try { assertTrue(PUNCTUATION.equals( new String(PUNCTUATION.getBytes(WINDOWS), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testSquareBracketsMac() { try { assertTrue(SQUARE_BRACKETS.equals( new String(SQUARE_BRACKETS.getBytes(MAC), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testSquareBracketsWindows() { try { assertTrue(SQUARE_BRACKETS.equals( new String(SQUARE_BRACKETS.getBytes(WINDOWS), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testCurlyBracketsMac() { try { assertTrue(CURLY_BRACKETS.equals( new String(CURLY_BRACKETS.getBytes(MAC), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testCurlyBracketsWindows() { try { assertTrue(CURLY_BRACKETS.equals( new String(CURLY_BRACKETS.getBytes(WINDOWS), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testAngleBracketsMac() { try { assertTrue(ANGLE_BRACKETS.equals( new String(ANGLE_BRACKETS.getBytes(MAC), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testAngleBracketsWindows() { try { assertTrue(ANGLE_BRACKETS.equals( new String(ANGLE_BRACKETS.getBytes(WINDOWS), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testDoubleAngleBracketsMac() { try { assertTrue(DOUBLE_ANGLE_BRACKETS.equals( new String(DOUBLE_ANGLE_BRACKETS.getBytes(MAC), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testDoubleAngleBracketsWindows() { try { assertTrue(DOUBLE_ANGLE_BRACKETS.equals(new String( DOUBLE_ANGLE_BRACKETS.getBytes(WINDOWS), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testRoundBracketsMac() { try { assertTrue(ROUND_BRACKETS.equals( new String(ROUND_BRACKETS.getBytes(MAC), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } @Test public void testRoundBracketsWindows() { try { assertTrue(ROUND_BRACKETS.equals( new String(ROUND_BRACKETS.getBytes(WINDOWS), Constants.ENCODING))); } catch (UnsupportedEncodingException e) { } } }