1 // Copyright 2009 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.
12 type itob64Test struct {
18 var itob64tests = []itob64Test{
22 {12345678, 10, "12345678"},
23 {-987654321, 10, "-987654321"},
24 {1<<31 - 1, 10, "2147483647"},
25 {-1<<31 + 1, 10, "-2147483647"},
26 {1 << 31, 10, "2147483648"},
27 {-1 << 31, 10, "-2147483648"},
28 {1<<31 + 1, 10, "2147483649"},
29 {-1<<31 - 1, 10, "-2147483649"},
30 {1<<32 - 1, 10, "4294967295"},
31 {-1<<32 + 1, 10, "-4294967295"},
32 {1 << 32, 10, "4294967296"},
33 {-1 << 32, 10, "-4294967296"},
34 {1<<32 + 1, 10, "4294967297"},
35 {-1<<32 - 1, 10, "-4294967297"},
36 {1 << 50, 10, "1125899906842624"},
37 {1<<63 - 1, 10, "9223372036854775807"},
38 {-1<<63 + 1, 10, "-9223372036854775807"},
39 {-1 << 63, 10, "-9223372036854775808"},
44 {1 << 15, 2, "1000000000000000"},
47 {057635436545, 8, "57635436545"},
48 {1 << 24, 8, "100000000"},
51 {-0x123456789abcdef, 16, "-123456789abcdef"},
52 {1<<63 - 1, 16, "7fffffffffffffff"},
53 {1<<63 - 1, 2, "111111111111111111111111111111111111111111111111111111111111111"},
57 {(((((17*35+24)*35+21)*35+34)*35+12)*35+24)*35 + 32, 35, "holycow"},
58 {(((((17*36+24)*36+21)*36+34)*36+12)*36+24)*36 + 32, 36, "holycow"},
61 func TestItoa(t *testing.T) {
62 for _, test := range itob64tests {
63 s := Itob64(test.in, test.base)
65 t.Errorf("Itob64(%v, %v) = %v want %v",
66 test.in, test.base, s, test.out)
70 s := Uitob64(uint64(test.in), test.base)
72 t.Errorf("Uitob64(%v, %v) = %v want %v",
73 test.in, test.base, s, test.out)
77 if int64(int(test.in)) == test.in {
78 s := Itob(int(test.in), test.base)
80 t.Errorf("Itob(%v, %v) = %v want %v",
81 test.in, test.base, s, test.out)
85 s := Uitob(uint(test.in), test.base)
87 t.Errorf("Uitob(%v, %v) = %v want %v",
88 test.in, test.base, s, test.out)
96 t.Errorf("Itoa64(%v) = %v want %v",
101 s := Uitob64(uint64(test.in), test.base)
103 t.Errorf("Uitob64(%v, %v) = %v want %v",
104 test.in, test.base, s, test.out)
108 if int64(int(test.in)) == test.in {
109 s := Itoa(int(test.in))
111 t.Errorf("Itoa(%v) = %v want %v",
112 test.in, s, test.out)
116 s := Uitoa(uint(test.in))
118 t.Errorf("Uitoa(%v) = %v want %v",
119 test.in, s, test.out)
127 type uitob64Test struct {
133 var uitob64tests = []uitob64Test{
134 {1<<63 - 1, 10, "9223372036854775807"},
135 {1 << 63, 10, "9223372036854775808"},
136 {1<<63 + 1, 10, "9223372036854775809"},
137 {1<<64 - 2, 10, "18446744073709551614"},
138 {1<<64 - 1, 10, "18446744073709551615"},
139 {1<<64 - 1, 2, "1111111111111111111111111111111111111111111111111111111111111111"},
142 func TestUitoa(t *testing.T) {
143 for _, test := range uitob64tests {
144 s := Uitob64(test.in, test.base)
146 t.Errorf("Uitob64(%v, %v) = %v want %v",
147 test.in, test.base, s, test.out)
150 if uint64(uint(test.in)) == test.in {
151 s := Uitob(uint(test.in), test.base)
153 t.Errorf("Uitob(%v, %v) = %v want %v",
154 test.in, test.base, s, test.out)
159 s := Uitoa64(test.in)
161 t.Errorf("Uitoa64(%v) = %v want %v",
162 test.in, s, test.out)
165 if uint64(uint(test.in)) == test.in {
166 s := Uitoa(uint(test.in))
168 t.Errorf("Uitoa(%v) = %v want %v",
169 test.in, s, test.out)