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
|