// EXEC: cjc %import-path %L %l %f
// EXEC: ./main
import pinyin4cj.*
import std.collection.*
import std.unittest.*
import std.unittest.testmacro.*
main() {
let testPinyinHelper = TestPinyinHelper()
testPinyinHelper.testTraditionalToSimplified()
testPinyinHelper.testSimplifiedToTraditional()
testPinyinHelper.testConversionWordsOrSentencesToPinyin()
testPinyinHelper.testSimplifiedToPinyin()
testPinyinHelper.testTraditionalToPinyin()
testPinyinHelper.testCustomPinyinDictionary()
testPinyinHelper.testCustomPinyinCombinationDictionary()
testPinyinHelper.testCustomChineseDictionary()
testPinyinHelper.testConvertPolyphonicCharactersToPinyin()
testPinyinHelper.testConvertSimplifiedToPinyinSet()
testPinyinHelper.testConvertUniversalPinyin()
return 0
}
@Test
public class TestPinyinHelper {
@TestCase
public func testTraditionalToSimplified(): Unit {
let res1: String = ChineseHelper.convertToSimplifiedChinese("臺,喪,麗")
@Assert("台,丧,丽", res1)
}
@TestCase
public func testSimplifiedToTraditional(): Unit {
let res1: String = ChineseHelper.convertToTraditionalChinese("我是中国人")
@Assert("我是中國人", res1)
}
@TestCase
public func testConversionWordsOrSentencesToPinyin(): Unit {
let res1: String = PinyinHelper.convertToPinyinString("我是中国共产主义接班人。", " ")
@Assert("wǒ shì zhōng guó gòng chǎn zhǔ yì jiē bān rén 。", res1)
}
@TestCase
public func testSimplifiedToPinyin(): Unit {
let res1: String = PinyinHelper.convertToPinyinString("我是中国共产主义接班人。", " ", PinyinFormat.WITH_TONE_NUMBER)
@Assert("wo3 shi4 zhong1 guo2 gong4 chan3 zhu3 yi4 jie1 ban1 ren2 。", res1)
}
@TestCase
public func testTraditionalToPinyin(): Unit {
let res1: String = PinyinHelper.convertToPinyinStringTraditional("我是中國共產主義接班人。", " ", PinyinFormat.WITH_TONE_NUMBER)
@Assert("wo3 shi4 zhong1 guo2 gong4 chan3 zhu3 yi4 jie1 ban1 ren2 。", res1)
}
@TestCase
public func testCustomPinyinDictionary(): Unit {
let map: HashMap<String, String> = HashMap<String, String>([("上", "shǎng")])
PinyinHelper.addPinyinDictResource(map)
let res1: String = PinyinHelper.convertToPinyinString("上午", " ", PinyinFormat.WITH_TONE_MARK)
@Assert("shǎng wǔ", res1)
}
@TestCase
public func testCustomPinyinCombinationDictionary(): Unit {
let map: HashMap<String, String> = HashMap<String, String>([("阿弥陀佛", "ā,mí,tuó,fó")])
PinyinHelper.addMutilPinyinDictResource(map)
let res1: String = PinyinHelper.convertToPinyinString("阿弥陀佛", " ", PinyinFormat.WITH_TONE_MARK)
@Assert("ā mí tuó fó", res1)
}
@TestCase
public func testCustomChineseDictionary(): Unit {
let map: HashMap<Rune, Rune> = HashMap<Rune, Rune>([(r'癥', r'症')])
ChineseHelper.addChineseDictResource(map)
let res1: String = ChineseHelper.convertToSimplifiedChinese("癥")
@Assert("症", res1)
}
@TestCase
public func testConvertPolyphonicCharactersToPinyin(): Unit {
let res1: Array<String> = PinyinHelper.convertToPinyinArray(r'长', PinyinFormat.WITH_TONE_MARK)
@Assert(["cháng", "zhǎng"], res1)
}
@TestCase
public func testConvertSimplifiedToPinyinSet(): Unit {
let res1: Array<String> = PinyinHelper.convertToPinyinArray(r'嚴', PinyinFormat.WITH_TONE_MARK)
@Assert(["yán"], res1)
}
@TestCase
public func testConvertUniversalPinyin(): Unit {
var traditionalPinyin: Array<String> = PinyinHelper.toTongyongPinyinStringArray(r'傳')
var simplePinyin: Array<String> = PinyinHelper.toTongyongPinyinStringArray(r'传')
@Assert(["chuan2", "jhuan4"], traditionalPinyin)
@Assert(["chuan2", "jhuan4"], simplePinyin)
}
}