aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/strconv/itoa_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/strconv/itoa_test.go')
-rw-r--r--libgo/go/strconv/itoa_test.go78
1 files changed, 74 insertions, 4 deletions
diff --git a/libgo/go/strconv/itoa_test.go b/libgo/go/strconv/itoa_test.go
index 48dc03e8390..89c2de6941a 100644
--- a/libgo/go/strconv/itoa_test.go
+++ b/libgo/go/strconv/itoa_test.go
@@ -126,10 +126,46 @@ func TestUitoa(t *testing.T) {
}
}
+var varlenUints = []struct {
+ in uint64
+ out string
+}{
+ {1, "1"},
+ {12, "12"},
+ {123, "123"},
+ {1234, "1234"},
+ {12345, "12345"},
+ {123456, "123456"},
+ {1234567, "1234567"},
+ {12345678, "12345678"},
+ {123456789, "123456789"},
+ {1234567890, "1234567890"},
+ {12345678901, "12345678901"},
+ {123456789012, "123456789012"},
+ {1234567890123, "1234567890123"},
+ {12345678901234, "12345678901234"},
+ {123456789012345, "123456789012345"},
+ {1234567890123456, "1234567890123456"},
+ {12345678901234567, "12345678901234567"},
+ {123456789012345678, "123456789012345678"},
+ {1234567890123456789, "1234567890123456789"},
+ {12345678901234567890, "12345678901234567890"},
+}
+
+func TestFormatUintVarlen(t *testing.T) {
+ for _, test := range varlenUints {
+ s := FormatUint(test.in, 10)
+ if s != test.out {
+ t.Errorf("FormatUint(%v, 10) = %v want %v", test.in, s, test.out)
+ }
+ }
+}
+
func BenchmarkFormatInt(b *testing.B) {
for i := 0; i < b.N; i++ {
for _, test := range itob64tests {
- FormatInt(test.in, test.base)
+ s := FormatInt(test.in, test.base)
+ BenchSink += len(s)
}
}
}
@@ -138,7 +174,8 @@ func BenchmarkAppendInt(b *testing.B) {
dst := make([]byte, 0, 30)
for i := 0; i < b.N; i++ {
for _, test := range itob64tests {
- AppendInt(dst, test.in, test.base)
+ dst = AppendInt(dst[:0], test.in, test.base)
+ BenchSink += len(dst)
}
}
}
@@ -146,7 +183,8 @@ func BenchmarkAppendInt(b *testing.B) {
func BenchmarkFormatUint(b *testing.B) {
for i := 0; i < b.N; i++ {
for _, test := range uitob64tests {
- FormatUint(test.in, test.base)
+ s := FormatUint(test.in, test.base)
+ BenchSink += len(s)
}
}
}
@@ -155,7 +193,39 @@ func BenchmarkAppendUint(b *testing.B) {
dst := make([]byte, 0, 30)
for i := 0; i < b.N; i++ {
for _, test := range uitob64tests {
- AppendUint(dst, test.in, test.base)
+ dst = AppendUint(dst[:0], test.in, test.base)
+ BenchSink += len(dst)
}
}
}
+
+func BenchmarkFormatIntSmall(b *testing.B) {
+ const smallInt = 42
+ for i := 0; i < b.N; i++ {
+ s := FormatInt(smallInt, 10)
+ BenchSink += len(s)
+ }
+}
+
+func BenchmarkAppendIntSmall(b *testing.B) {
+ dst := make([]byte, 0, 30)
+ const smallInt = 42
+ for i := 0; i < b.N; i++ {
+ dst = AppendInt(dst[:0], smallInt, 10)
+ BenchSink += len(dst)
+ }
+}
+
+func BenchmarkAppendUintVarlen(b *testing.B) {
+ for _, test := range varlenUints {
+ b.Run(test.out, func(b *testing.B) {
+ dst := make([]byte, 0, 30)
+ for j := 0; j < b.N; j++ {
+ dst = AppendUint(dst[:0], test.in, 10)
+ BenchSink += len(dst)
+ }
+ })
+ }
+}
+
+var BenchSink int // make sure compiler cannot optimize away benchmarks