40 lines
1.4 KiB
VB.net
40 lines
1.4 KiB
VB.net
#Const PRINT_TESTCASE = True
|
||
|
||
Module Program
|
||
ReadOnly TestCases As String() =
|
||
{
|
||
"Hello, world!",
|
||
"møøse",
|
||
"𝔘𝔫𝔦𝔠𝔬𝔡𝔢", ' String normalization of the file makes the e and diacritic in é̲ one character, so use VB's char "escapes"
|
||
$"J{ChrW(&H332)}o{ChrW(&H332)}s{ChrW(&H332)}e{ChrW(&H301)}{ChrW(&H332)}"
|
||
}
|
||
|
||
Sub Main()
|
||
Const INDENT = " "
|
||
Console.OutputEncoding = Text.Encoding.Unicode
|
||
|
||
Dim writeResult = Sub(s As String, result As Integer) Console.WriteLine("{0}{1,-20}{2}", INDENT, s, result)
|
||
|
||
For i = 0 To TestCases.Length - 1
|
||
Dim c = TestCases(i)
|
||
|
||
Console.Write("Test case " & i)
|
||
#If PRINT_TESTCASE Then
|
||
Console.WriteLine(": " & c)
|
||
#Else
|
||
Console.WriteLine()
|
||
#End If
|
||
writeResult("graphemes", GraphemeCount(c))
|
||
writeResult("UTF-16 units", GetUTF16CodeUnitsLength(c))
|
||
writeResult("Cd pts from UTF-16", GetCharacterLength_FromUTF16(c))
|
||
writeResult("Cd pts from UTF-32", GetCharacterLength_FromUTF32(c))
|
||
Console.WriteLine()
|
||
writeResult("bytes (UTF-8)", GetByteLength(c, Text.Encoding.UTF8))
|
||
writeResult("bytes (UTF-16)", GetByteLength(c, Text.Encoding.Unicode))
|
||
writeResult("bytes (UTF-32)", GetByteLength(c, Text.Encoding.UTF32))
|
||
Console.WriteLine()
|
||
Next
|
||
|
||
End Sub
|
||
End Module
|