// EXEC: cjc %import-path %L %l %f
// EXEC: ./main

import pinyin4cj.*
import std.collection.*
import std.unittest.*
import std.unittest.testmacro.*


main() {
    let testChineseHelper = TestChineseHelper()
    testChineseHelper.test1()
    testChineseHelper.test2()
    return 0
}

@Test
public class TestChineseHelper {
    @TestCase
    public func test1(): Unit {
        let map: HashMap<Rune, Rune> = HashMap<Rune, Rune>([(r'癥', r'症'), (r'臺', r'一')])
        ChineseHelper.addChineseDictResource(map)
        @Assert("症", ChineseHelper.convertToSimplifiedChinese("癥"))
        @Assert("一", ChineseHelper.convertToSimplifiedChinese("臺"))
    }

    @TestCase
    public func test2(): Unit {
        let str: String = "臺喪麗"
        let data: Array<Byte> = unsafe { str.rawData() }
        let sb = StringBuilder(str.size)
        var i: Int64 = 0
        while (i < str.size) {
            var (r, utf8Size) = Rune.fromUtf8(data, i)
            i += utf8Size
            sb.append(r)
        }
        @Assert("臺喪麗", sb.toString())
    }
}