/*
* Copyright (C) 2013-2017 NTT DATA Corporation
*
* Licensed 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.terasoluna.gfw.common.fullhalf;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.junit.Assert.assertThat;
import org.junit.Test;
public class ToFullwidthTest {
@Test
public void testToFull() throws Exception {
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("!"), is("!"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("”"), is("\""));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("#"), is("#"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("$"), is("$"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("%"), is("%"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("&"), is("&"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("’"), is("'"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("("), is("("));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth(")"), is(")"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("*"), is("*"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("+"), is("+"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth(","), is(","));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("-"), is("-"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("."), is("."));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("/"), is("/"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("0"), is("0"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("1"), is("1"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("2"), is("2"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("3"), is("3"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("4"), is("4"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("5"), is("5"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("6"), is("6"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("7"), is("7"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("8"), is("8"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("9"), is("9"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth(":"), is(":"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth(";"), is(";"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("<"), is("<"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("="), is("="));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth(">"), is(">"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("?"), is("?"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("@"), is("@"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("A"), is("A"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("B"), is("B"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("C"), is("C"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("D"), is("D"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("E"), is("E"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("F"), is("F"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("G"), is("G"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("H"), is("H"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("I"), is("I"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("J"), is("J"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("K"), is("K"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("L"), is("L"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("M"), is("M"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("N"), is("N"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("O"), is("O"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("P"), is("P"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("Q"), is("Q"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("R"), is("R"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("S"), is("S"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("T"), is("T"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("U"), is("U"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("V"), is("V"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("W"), is("W"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("X"), is("X"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("Y"), is("Y"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("Z"), is("Z"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("["), is("["));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("¥"), is("\\"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("]"), is("]"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("^"), is("^"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("_"), is("_"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("`"), is("`"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("a"), is("a"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("b"), is("b"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("c"), is("c"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("d"), is("d"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("e"), is("e"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("f"), is("f"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("g"), is("g"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("h"), is("h"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("i"), is("i"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("j"), is("j"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("k"), is("k"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("l"), is("l"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("m"), is("m"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("n"), is("n"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("o"), is("o"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("p"), is("p"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("q"), is("q"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("r"), is("r"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("s"), is("s"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("t"), is("t"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("u"), is("u"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("v"), is("v"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("w"), is("w"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("x"), is("x"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("y"), is("y"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("z"), is("z"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("{"), is("{"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("|"), is("|"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("}"), is("}"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth(String
.valueOf('\uff5e')), is("~"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("。"), is("。"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("「"), is("「"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("」"), is("」"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("、"), is("、"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("・"), is("・"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ァ"), is("ァ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ィ"), is("ィ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ゥ"), is("ゥ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ェ"), is("ェ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ォ"), is("ォ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ャ"), is("ャ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ュ"), is("ュ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ョ"), is("ョ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ッ"), is("ッ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ー"), is("ー"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ア"), is("ア"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("イ"), is("イ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ウ"), is("ウ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("エ"), is("エ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("オ"), is("オ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("カ"), is("カ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("キ"), is("キ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ク"), is("ク"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ケ"), is("ケ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("コ"), is("コ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("サ"), is("サ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("シ"), is("シ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ス"), is("ス"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("セ"), is("セ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ソ"), is("ソ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("タ"), is("タ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("チ"), is("チ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ツ"), is("ツ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("テ"), is("テ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ト"), is("ト"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ナ"), is("ナ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ニ"), is("ニ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ヌ"), is("ヌ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ネ"), is("ネ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ノ"), is("ノ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ハ"), is("ハ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ヒ"), is("ヒ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("フ"), is("フ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ヘ"), is("ヘ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ホ"), is("ホ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("マ"), is("マ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ミ"), is("ミ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ム"), is("ム"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("メ"), is("メ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("モ"), is("モ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ヤ"), is("ヤ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ユ"), is("ユ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ヨ"), is("ヨ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ラ"), is("ラ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("リ"), is("リ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ル"), is("ル"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("レ"), is("レ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ロ"), is("ロ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ン"), is("ン"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ガ"), is("ガ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ギ"), is("ギ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("グ"), is("グ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ゲ"), is("ゲ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ゴ"), is("ゴ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ザ"), is("ザ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ジ"), is("ジ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ズ"), is("ズ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ゼ"), is("ゼ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ゾ"), is("ゾ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ダ"), is("ダ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ヂ"), is("ヂ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ヅ"), is("ヅ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("デ"), is("デ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ド"), is("ド"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("バ"), is("バ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ビ"), is("ビ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ブ"), is("ブ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("べ"), is("ベ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ボ"), is("ボ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("パ"), is("パ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ピ"), is("ピ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("プ"), is("プ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ペ"), is("ペ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ポ"), is("ポ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ヴ"), is("ヴ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth(String
.valueOf('\u30f7')), is("ヷ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth(String
.valueOf('\u30fa')), is("ヺ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("゛"), is("゙"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("゜"), is("゚"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth(" "), is(" "));
}
@Test
public void testToFull_NotMapped() throws Exception {
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("あ"), is("あ"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("一"), is("一"));
}
@Test
public void testToFull_MappedString() throws Exception {
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("メロン"), is("メロン"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("Hello World!"),
is("Hello World!"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ハローワールド!"),
is("ハローワールド!"));
}
@Test
public void testToFull_NotMappedAndMappedString() throws Exception {
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("完熟メロンパン"),
is("完熟メロンパン"));
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("マチュピチュ遺跡"),
is("マチュピチュ遺跡"));
}
@Test
public void testToHalf01_全角文字が半角文字に複数文字変換されること() throws Exception {
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("A!ア"), is("A!ア"));
}
@Test
public void testToHalf02_全角文字に対して半角文字に一文字変換されること() throws Exception {
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("A"), is("A"));
}
@Test
public void testToHalf03_全角カサタハが半角カサタハに変換されること() throws Exception {
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("カサタハ"), is("カサタハ"));
}
@Test
public void testToHalf04_全角濁点文字が二文字に分解されて表示されること() throws Exception {
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ガザダ"), is("ガザダ"));
}
@Test
public void testToHalf05_全角濁点半濁点文字が二文字に分解されて表示されること() throws Exception {
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("パポ"), is("パポ"));
}
@Test
public void testToHalf06_全角ワが半角ワに変換されること() throws Exception {
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("Aワ"), is("Aワ"));
}
@Test
public void testToHalf07_全角ヲが半角ヲに変換されること() throws Exception {
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("Aヲ"), is("Aヲ"));
}
@Test
public void testToHalf08_全角濁点ワが半角濁点ワに変換されること() throws Exception {
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("ア\u30f7"), is("アヷ"));
}
@Test
public void testToHalf09_全角濁点ヲが半角濁点ヲに変換されること() throws Exception {
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("\u30faヴ"), is("ヺヴ"));
}
@Test
public void testToHalf10_半角全角混合文字が全て半角に変換されることを() throws Exception {
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("サ\u30faイAピ"),
is("サヺイAピ"));
}
@Test
public void testToHalf11_置換対象文字列が空文字の時空文字を戻り値とし処理を終了すること() throws Exception {
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth(""), is(""));
}
@Test
public void testToHalf12_置換対象文字列がnullの時nullを戻り値とし処理を終了すること() throws Exception {
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth(null), is(nullValue()));
}
@Test
public void testToHalf13_半角化不可能な文字列がそのまま全角文字列で出力されること() throws Exception {
assertThat(DefaultFullHalf.INSTANCE.toHalfwidth("入力値"), is("入力値"));
}
}