URL
                    https://opencores.org/ocsvn/openrisc/openrisc/trunk
                
            Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [exp/] [utf8string/] [string_test.go] - Rev 747
Compare with Previous | Blame | View Log
// Copyright 2009 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.package utf8stringimport ("math/rand""testing""unicode/utf8")var testStrings = []string{"","abcd","☺☻☹","日a本b語ç日ð本Ê語þ日¥本¼語i日©","日a本b語ç日ð本Ê語þ日¥本¼語i日©日a本b語ç日ð本Ê語þ日¥本¼語i日©日a本b語ç日ð本Ê語þ日¥本¼語i日©","\x80\x80\x80\x80",}func TestScanForwards(t *testing.T) {for _, s := range testStrings {runes := []rune(s)str := NewString(s)if str.RuneCount() != len(runes) {t.Errorf("%s: expected %d runes; got %d", s, len(runes), str.RuneCount())break}for i, expect := range runes {got := str.At(i)if got != expect {t.Errorf("%s[%d]: expected %c (%U); got %c (%U)", s, i, expect, expect, got, got)}}}}func TestScanBackwards(t *testing.T) {for _, s := range testStrings {runes := []rune(s)str := NewString(s)if str.RuneCount() != len(runes) {t.Errorf("%s: expected %d runes; got %d", s, len(runes), str.RuneCount())break}for i := len(runes) - 1; i >= 0; i-- {expect := runes[i]got := str.At(i)if got != expect {t.Errorf("%s[%d]: expected %c (%U); got %c (%U)", s, i, expect, expect, got, got)}}}}func randCount() int {if testing.Short() {return 100}return 100000}func TestRandomAccess(t *testing.T) {for _, s := range testStrings {if len(s) == 0 {continue}runes := []rune(s)str := NewString(s)if str.RuneCount() != len(runes) {t.Errorf("%s: expected %d runes; got %d", s, len(runes), str.RuneCount())break}for j := 0; j < randCount(); j++ {i := rand.Intn(len(runes))expect := runes[i]got := str.At(i)if got != expect {t.Errorf("%s[%d]: expected %c (%U); got %c (%U)", s, i, expect, expect, got, got)}}}}func TestRandomSliceAccess(t *testing.T) {for _, s := range testStrings {if len(s) == 0 || s[0] == '\x80' { // the bad-UTF-8 string fools this simple testcontinue}runes := []rune(s)str := NewString(s)if str.RuneCount() != len(runes) {t.Errorf("%s: expected %d runes; got %d", s, len(runes), str.RuneCount())break}for k := 0; k < randCount(); k++ {i := rand.Intn(len(runes))j := rand.Intn(len(runes) + 1)if i > j { // include empty stringscontinue}expect := string(runes[i:j])got := str.Slice(i, j)if got != expect {t.Errorf("%s[%d:%d]: expected %q got %q", s, i, j, expect, got)}}}}func TestLimitSliceAccess(t *testing.T) {for _, s := range testStrings {str := NewString(s)if str.Slice(0, 0) != "" {t.Error("failure with empty slice at beginning")}nr := utf8.RuneCountInString(s)if str.Slice(nr, nr) != "" {t.Error("failure with empty slice at end")}}}

