blob: 2aef8fb22b217ee57e1e87962f40fad43b0d32b3 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2016 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* 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));
}
}