github.com/go-xe2/third@v1.0.3/golang.org/x/text/unicode/norm/readwriter_test.go (about)

     1  // Copyright 2011 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package norm
     6  
     7  import (
     8  	"bytes"
     9  	"fmt"
    10  	"testing"
    11  )
    12  
    13  var bufSizes = []int{1, 2, 3, 4, 5, 6, 7, 8, 100, 101, 102, 103, 4000, 4001, 4002, 4003}
    14  
    15  func readFunc(size int) appendFunc {
    16  	return func(f Form, out []byte, s string) []byte {
    17  		out = append(out, s...)
    18  		r := f.Reader(bytes.NewBuffer(out))
    19  		buf := make([]byte, size)
    20  		result := []byte{}
    21  		for n, err := 0, error(nil); err == nil; {
    22  			n, err = r.Read(buf)
    23  			result = append(result, buf[:n]...)
    24  		}
    25  		return result
    26  	}
    27  }
    28  
    29  func TestReader(t *testing.T) {
    30  	for _, s := range bufSizes {
    31  		name := fmt.Sprintf("TestReader%d", s)
    32  		runNormTests(t, name, readFunc(s))
    33  	}
    34  }
    35  
    36  func writeFunc(size int) appendFunc {
    37  	return func(f Form, out []byte, s string) []byte {
    38  		in := append(out, s...)
    39  		result := new(bytes.Buffer)
    40  		w := f.Writer(result)
    41  		buf := make([]byte, size)
    42  		for n := 0; len(in) > 0; in = in[n:] {
    43  			n = copy(buf, in)
    44  			_, _ = w.Write(buf[:n])
    45  		}
    46  		w.Close()
    47  		return result.Bytes()
    48  	}
    49  }
    50  
    51  func TestWriter(t *testing.T) {
    52  	for _, s := range bufSizes {
    53  		name := fmt.Sprintf("TestWriter%d", s)
    54  		runNormTests(t, name, writeFunc(s))
    55  	}
    56  }