/******************************************************************************* * Copyright (c) 2010, 2016 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.ua.tests.help.webapp; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.eclipse.help.internal.util.URLCoder; import org.junit.Test; public class UrlCoderTest { private static final String SPECIAL_CHARACTERS = "!@#$%^&*()_+-={}[]:\";'<>,.?/'"; private static final String ALPHANUMERIC = "Bxz91r"; private static final String ALPHA = "acgrdft"; private static final String EMPTY_STRING = ""; private static final String ACCENTED = "seg\u00FAn cu\u00E1l oto\u00F1o"; private static final String CHINESE = "\u4ECA\u5929\u662F\u5929"; private void encodeDecode(String value) { String encoded = URLCoder.encode(value); assertEquals(value, URLCoder.decode(encoded)); } private void compactEncodeDecode(String value) { String encoded = URLCoder.compactEncode(value); assertEquals(value, URLCoder.decode(encoded)); } private boolean compactEncodingIsShorter(String value) { String compactEncoded = URLCoder.compactEncode(value); String encoded = URLCoder.encode(value); return compactEncoded.length() < encoded.length(); } @Test public void testEncodeEmpty() { encodeDecode(EMPTY_STRING); } @Test public void testEncodeAlphabetic() { encodeDecode(ALPHA); } @Test public void testEncodeAlphaNumeric() { encodeDecode(ALPHANUMERIC); } @Test public void testEncodeSpecialCharacters() { encodeDecode(SPECIAL_CHARACTERS); } @Test public void testEncodeAccented() { encodeDecode(ACCENTED); } @Test public void testEncodeChinese() { encodeDecode(CHINESE); } // Compact Encodings @Test public void testCompactEncodeEmpty() { compactEncodeDecode(EMPTY_STRING); } @Test public void testCompactEncodeAlphabetic() { compactEncodeDecode(ALPHA); } @Test public void testCompactEncodeAlphaNumeric() { compactEncodeDecode(ALPHANUMERIC); } @Test public void testCompactEncodeSpecialCharacters() { compactEncodeDecode(SPECIAL_CHARACTERS); } @Test public void testCompactEncodeAccented() { compactEncodeDecode(ACCENTED); } @Test public void testCompactEncodeChinese() { compactEncodeDecode(CHINESE); } // Verify compaction @Test public void testCompactionEmpty() { assertFalse(compactEncodingIsShorter(EMPTY_STRING)); } @Test public void testCompactionAlphabetic() { assertTrue(compactEncodingIsShorter(ALPHA)); } @Test public void testCompactionAlphaNumeric() { assertTrue(compactEncodingIsShorter(ALPHANUMERIC)); } @Test public void testCompactionSpecialCharacters() { assertTrue(compactEncodingIsShorter(SPECIAL_CHARACTERS)); } @Test public void testCompactionAccented() { assertTrue(compactEncodingIsShorter(ACCENTED)); } @Test public void testCompactionChinese() { assertFalse(compactEncodingIsShorter(CHINESE)); } }