]> Cypherpunks repositories - gostls13.git/commitdiff
unicode/utf8: add Examples
authorSanjay Menakuru <balasanjay@gmail.com>
Mon, 17 Sep 2012 18:06:42 +0000 (11:06 -0700)
committerRob Pike <r@golang.org>
Mon, 17 Sep 2012 18:06:42 +0000 (11:06 -0700)
R=golang-dev, r
CC=adg, golang-dev
https://golang.org/cl/6493124

src/pkg/unicode/utf8/example_test.go [new file with mode: 0644]

diff --git a/src/pkg/unicode/utf8/example_test.go b/src/pkg/unicode/utf8/example_test.go
new file mode 100644 (file)
index 0000000..fe20373
--- /dev/null
@@ -0,0 +1,192 @@
+package utf8_test
+
+import (
+       "fmt"
+       "unicode/utf8"
+)
+
+func ExampleDecodeLastRune() {
+       b := []byte("Hello, 世界")
+
+       for len(b) > 0 {
+               r, size := utf8.DecodeLastRune(b)
+               fmt.Printf("%c %v\n", r, size)
+
+               b = b[:len(b)-size]
+       }
+       // Output:
+       // 界 3
+       // 世 3
+       //   1
+       // , 1
+       // o 1
+       // l 1
+       // l 1
+       // e 1
+       // H 1
+}
+
+func ExampleDecodeLastRuneInString() {
+       str := "Hello, 世界"
+
+       for len(str) > 0 {
+               r, size := utf8.DecodeLastRuneInString(str)
+               fmt.Printf("%c %v\n", r, size)
+
+               str = str[:len(str)-size]
+       }
+       // Output:
+       // 界 3
+       // 世 3
+       //   1
+       // , 1
+       // o 1
+       // l 1
+       // l 1
+       // e 1
+       // H 1
+
+}
+
+func ExampleDecodeRune() {
+       b := []byte("Hello, 世界")
+
+       for len(b) > 0 {
+               r, size := utf8.DecodeRune(b)
+               fmt.Printf("%c %v\n", r, size)
+
+               b = b[size:]
+       }
+       // Output:
+       // H 1
+       // e 1
+       // l 1
+       // l 1
+       // o 1
+       // , 1
+       //   1
+       // 世 3
+       // 界 3
+}
+
+func ExampleDecodeRuneInString() {
+       str := "Hello, 世界"
+
+       for len(str) > 0 {
+               r, size := utf8.DecodeRuneInString(str)
+               fmt.Printf("%c %v\n", r, size)
+
+               str = str[size:]
+       }
+       // Output:
+       // H 1
+       // e 1
+       // l 1
+       // l 1
+       // o 1
+       // , 1
+       //   1
+       // 世 3
+       // 界 3
+}
+
+func ExampleEncodeRune() {
+       r := '世'
+       buf := make([]byte, 3)
+
+       n := utf8.EncodeRune(buf, r)
+
+       fmt.Println(buf)
+       fmt.Println(n)
+       // Output:
+       // [228 184 150]
+       // 3
+}
+
+func ExampleFullRune() {
+       buf := []byte{228, 184, 150} // 世
+       fmt.Println(utf8.FullRune(buf))
+       fmt.Println(utf8.FullRune(buf[:2]))
+       // Output:
+       // true
+       // false
+}
+
+func ExampleFullRuneInString() {
+       str := "世"
+       fmt.Println(utf8.FullRuneInString(str))
+       fmt.Println(utf8.FullRuneInString(str[:2]))
+       // Output:
+       // true
+       // false
+}
+
+func ExampleRuneCount() {
+       buf := []byte("Hello, 世界")
+       fmt.Println("bytes =", len(buf))
+       fmt.Println("runes =", utf8.RuneCount(buf))
+       // Output:
+       // bytes = 13
+       // runes = 9
+}
+
+func ExampleRuneCountInString() {
+       str := "Hello, 世界"
+       fmt.Println("bytes =", len(str))
+       fmt.Println("runes =", utf8.RuneCountInString(str))
+       // Output:
+       // bytes = 13
+       // runes = 9
+}
+
+func ExampleRuneLen() {
+       fmt.Println(utf8.RuneLen('a'))
+       fmt.Println(utf8.RuneLen('界'))
+       // Output:
+       // 1
+       // 3
+}
+
+func ExampleRuneStart() {
+       buf := []byte("a界")
+       fmt.Println(utf8.RuneStart(buf[0]))
+       fmt.Println(utf8.RuneStart(buf[1]))
+       fmt.Println(utf8.RuneStart(buf[2]))
+       // Output:
+       // true
+       // true
+       // false
+}
+
+func ExampleValid() {
+       valid := []byte("Hello, 世界")
+       invalid := []byte{0xff, 0xfe, 0xfd}
+
+       fmt.Println(utf8.Valid(valid))
+       fmt.Println(utf8.Valid(invalid))
+       // Output:
+       // true
+       // false
+}
+
+func ExampleValidRune() {
+       valid := 'a'
+       invalid := rune(0xfffffff)
+
+       fmt.Println(utf8.ValidRune(valid))
+       fmt.Println(utf8.ValidRune(invalid))
+       // Output:
+       // true
+       // false
+}
+
+func ExampleValidString() {
+       valid := "Hello, 世界"
+       invalid := string([]byte{0xff, 0xfe, 0xfd})
+
+       fmt.Println(utf8.ValidString(valid))
+       fmt.Println(utf8.ValidString(invalid))
+       // Output:
+       // true
+       // false
+}