blob: 0ceb5104a8024c9b3e6ffb2d716f1869fa7e3abf [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.sis.util;
import org.apache.sis.test.DependsOnMethod;
import org.apache.sis.test.TestCase;
import org.junit.Test;
import static org.junit.Assert.*;
import static org.apache.sis.util.Characters.*;
/**
* Tests the {@link Characters} utility methods.
*
* @author Martin Desruisseaux (Geomatys)
* @version 1.1
* @since 0.3
* @module
*/
public final strictfp class CharactersTest extends TestCase {
/**
* Tests the value of {@link Characters#LINE_SEPARATOR}
* and {@link Characters#PARAGRAPH_SEPARATOR} constant value.
*/
@Test
public void testUnicodeSeparators() {
assertEquals(Character.LINE_SEPARATOR, Character.getType(LINE_SEPARATOR));
assertEquals(Character.PARAGRAPH_SEPARATOR, Character.getType(PARAGRAPH_SEPARATOR));
}
/**
* Tests the {@link Characters#isValidWKT(int)} method.
*/
@Test
public void testIsValidWKT() {
final String valids = "_[](){}<=>.,:;+- %&'\"*^/\\?|°";
for (char c=0; c<256; c++) {
final boolean valid = (c >= 'A' && c <= 'Z')
|| (c >= 'a' && c <= 'z')
|| (c >= '0' && c <= '9')
|| valids.indexOf(c) >= 0;
assertEquals(valid, isValidWKT(c));
}
}
/**
* Tests the {@link Characters#isLineOrParagraphSeparator(int)} method.
*/
@Test
@DependsOnMethod("testUnicodeSeparators")
public void testLineOrParagraphSeparator() {
assertFalse(isLineOrParagraphSeparator('z'));
assertFalse(isLineOrParagraphSeparator('\t'));
assertTrue (isLineOrParagraphSeparator('\r'));
assertTrue (isLineOrParagraphSeparator('\n'));
assertTrue (isLineOrParagraphSeparator(LINE_SEPARATOR));
assertTrue (isLineOrParagraphSeparator(PARAGRAPH_SEPARATOR));
}
/**
* Tests the {@link Characters#isHexadecimal(int)} method.
*
* @since 0.5
*/
@Test
public void testIsHexadecimal() {
assertTrue(isHexadecimal('0'));
assertTrue(isHexadecimal('5'));
assertTrue(isHexadecimal('9'));
assertTrue(isHexadecimal('A'));
assertTrue(isHexadecimal('C'));
assertTrue(isHexadecimal('F'));
assertTrue(isHexadecimal('a'));
assertTrue(isHexadecimal('c'));
assertTrue(isHexadecimal('f'));
assertFalse(isHexadecimal(' '));
assertFalse(isHexadecimal('_'));
assertFalse(isHexadecimal(':'));
assertFalse(isHexadecimal('/'));
assertFalse(isHexadecimal('>'));
assertFalse(isHexadecimal('@'));
assertFalse(isHexadecimal('`'));
assertFalse(isHexadecimal('G'));
assertFalse(isHexadecimal('Q'));
assertFalse(isHexadecimal('g'));
assertFalse(isHexadecimal('q'));
}
/**
* Tests {@link Characters#toSuperScript(char)}.
*/
@Test
public void testSuperScript() {
for (char c='0'; c<='9'; c++) {
final char s = toSuperScript(c);
assertFalse(s == c);
assertFalse(isSuperScript(c));
assertTrue (isSuperScript(s));
assertEquals(c, toNormalScript(s));
}
final char c = 'A';
assertEquals(c, toSuperScript(c));
assertEquals(c, toNormalScript(c));
assertFalse(isSuperScript(c));
}
/**
* Tests {@link Characters#toSubScript(char)}.
*/
@Test
public void testSubScript() {
for (char c='0'; c<='9'; c++) {
final char s = toSubScript(c);
assertFalse(s == c);
assertFalse(isSubScript(c));
assertTrue (isSubScript(s));
assertEquals(c, toNormalScript(s));
}
final char c = 'a';
assertEquals(c, toSubScript(c));
assertEquals(c, toNormalScript(c));
assertFalse(isSubScript(c));
}
/**
* Tests the pre-defined {@link org.apache.sis.util.Characters.Filter} constants.
*/
@Test
public void testPredefinedFilters() {
assertTrue (Filter.UNICODE_IDENTIFIER.contains('a'));
assertTrue (Filter.LETTERS_AND_DIGITS.contains('a'));
assertTrue (Filter.UNICODE_IDENTIFIER.contains('_'));
assertFalse(Filter.LETTERS_AND_DIGITS.contains('_'));
assertFalse(Filter.UNICODE_IDENTIFIER.contains(' '));
assertFalse(Filter.LETTERS_AND_DIGITS.contains(' '));
}
/**
* Tests the {@link org.apache.sis.util.Characters.Filter#forTypes(byte[])} method.
*/
@Test
public void testFilterForTypes() {
final Filter filter = Filter.forTypes(Character.SPACE_SEPARATOR, Character.DECIMAL_DIGIT_NUMBER);
assertTrue (filter.contains('0'));
assertTrue (filter.contains(' '));
assertFalse(filter.contains('A'));
}
}