package util

import “testing”

func TestToCharsAscii(t *testing.T) {

chars := ToChars([]byte("foobar"))
if !chars.inBytes || chars.ToString() != "foobar" || !chars.inBytes {
        t.Error()
}

}

func TestCharsLength(t *testing.T) {

chars := ToChars([]byte("\tabc한글  "))
if chars.inBytes || chars.Length() != 8 || chars.TrimLength() != 5 {
        t.Error()
}

}

func TestCharsToString(t *testing.T) {

text := "\tabc한글  "
chars := ToChars([]byte(text))
if chars.ToString() != text {
        t.Error()
}

}

func TestTrimLength(t *testing.T) {

check := func(str string, exp uint16) {
        chars := ToChars([]byte(str))
        trimmed := chars.TrimLength()
        if trimmed != exp {
                t.Errorf("Invalid TrimLength result for '%s': %d (expected %d)",
                        str, trimmed, exp)
        }
}
check("hello", 5)
check("hello ", 5)
check("hello  ", 5)
check(" hello", 5)
check("  hello", 5)
check(" hello ", 5)
check("  hello  ", 5)
check("h   o", 5)
check("  h   o  ", 5)
check("         ", 0)

}