Commit c7a9d981 authored by Russ Cox's avatar Russ Cox

fix atoi test

R=r
DELTA=28  (5 added, 0 deleted, 23 changed)
OCL=31093
CL=31093
parent 7ae0c678
......@@ -113,16 +113,19 @@ func Atoui64(s string) (n uint64, err os.Error) {
}
// Look for octal, hex prefix.
if s[0] == '0' && len(s) > 1 {
if s[1] == 'x' || s[1] == 'X' {
// hex
return Btoui64(s[2:len(s)], 16);
}
// octal
return Btoui64(s[1:len(s)], 8);
switch {
case s[0] == '0' && len(s) > 1 && (s[1] == 'x' || s[1] == 'X'):
n, err = Btoui64(s[2:len(s)], 16);
case s[0] == '0':
n, err = Btoui64(s, 8);
default:
n, err = Btoui64(s, 10);
}
if err != nil {
err.(*NumError).Num = s;
}
// decimal
return Btoui64(s, 10);
return;
}
......@@ -135,6 +138,7 @@ func Atoi64(s string) (i int64, err os.Error) {
}
// Pick off leading sign.
s0 := s;
neg := false;
if s[0] == '+' {
s = s[1:len(s)]
......@@ -147,13 +151,14 @@ func Atoi64(s string) (i int64, err os.Error) {
var un uint64;
un, err = Atoui64(s);
if err != nil && err.(*NumError).Error != os.ERANGE {
err.(*NumError).Num = s0;
return 0, err
}
if !neg && un >= 1<<63 {
return 1<<63-1, &NumError{s, os.ERANGE}
return 1<<63-1, &NumError{s0, os.ERANGE}
}
if neg && un > 1<<63 {
return -1<<63, &NumError{s, os.ERANGE}
return -1<<63, &NumError{s0, os.ERANGE}
}
n := int64(un);
if neg {
......
......@@ -153,7 +153,7 @@ func TestAtoui64(t *testing.T) {
test := &atoui64tests[i];
out, err := strconv.Atoui64(test.in);
if test.out != out || !reflect.DeepEqual(test.err, err) {
t.Errorf("strconv.Atoui64(%v) = %v, %v want %v, %v\n",
t.Errorf("strconv.Atoui64(%q) = %v, %v want %v, %v\n",
test.in, out, err, test.out, test.err);
}
}
......@@ -164,7 +164,7 @@ func TestAtoi64(t *testing.T) {
test := &atoi64tests[i];
out, err := strconv.Atoi64(test.in);
if test.out != out || !reflect.DeepEqual(test.err, err) {
t.Errorf("strconv.Atoi64(%v) = %v, %v want %v, %v\n",
t.Errorf("strconv.Atoi64(%q) = %v, %v want %v, %v\n",
test.in, out, err, test.out, test.err);
}
}
......@@ -177,7 +177,7 @@ func TestAtoui(t *testing.T) {
test := &atoui32tests[i];
out, err := strconv.Atoui(test.in);
if test.out != uint32(out) || !reflect.DeepEqual(test.err, err) {
t.Errorf("strconv.Atoui(%v) = %v, %v want %v, %v\n",
t.Errorf("strconv.Atoui(%q) = %v, %v want %v, %v\n",
test.in, out, err, test.out, test.err);
}
}
......@@ -186,7 +186,7 @@ func TestAtoui(t *testing.T) {
test := &atoui64tests[i];
out, err := strconv.Atoui(test.in);
if test.out != uint64(out) || !reflect.DeepEqual(test.err, err) {
t.Errorf("strconv.Atoui(%v) = %v, %v want %v, %v\n",
t.Errorf("strconv.Atoui(%q) = %v, %v want %v, %v\n",
test.in, out, err, test.out, test.err);
}
}
......@@ -200,7 +200,7 @@ func TestAtoi(t *testing.T) {
test := &atoi32tests[i];
out, err := strconv.Atoi(test.in);
if test.out != int32(out) || !reflect.DeepEqual(test.err, err) {
t.Errorf("strconv.Atoi(%v) = %v, %v want %v, %v\n",
t.Errorf("strconv.Atoi(%q) = %v, %v want %v, %v\n",
test.in, out, err, test.out, test.err);
}
}
......@@ -209,7 +209,7 @@ func TestAtoi(t *testing.T) {
test := &atoi64tests[i];
out, err := strconv.Atoi(test.in);
if test.out != int64(out) || !reflect.DeepEqual(test.err, err) {
t.Errorf("strconv.Atoi(%v) = %v, %v want %v, %v\n",
t.Errorf("strconv.Atoi(%q) = %v, %v want %v, %v\n",
test.in, out, err, test.out, test.err);
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment