// Copyright 2021 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 itoa_test

import (
	"fmt"
	"internal/itoa"
	"math"
	"testing"
)

var (
	minInt64  int64  = math.MinInt64
	maxInt64  int64  = math.MaxInt64
	maxUint64 uint64 = math.MaxUint64
)

func TestItoa(t *testing.T) {
	tests := []int{int(minInt64), math.MinInt32, -999, -100, -1, 0, 1, 100, 999, math.MaxInt32, int(maxInt64)}
	for _, tt := range tests {
		got := itoa.Itoa(tt)
		want := fmt.Sprint(tt)
		if want != got {
			t.Fatalf("Itoa(%d) = %s, want %s", tt, got, want)
		}
	}
}

func TestUitoa(t *testing.T) {
	tests := []uint{0, 1, 100, 999, math.MaxUint32, uint(maxUint64)}
	for _, tt := range tests {
		got := itoa.Uitoa(tt)
		want := fmt.Sprint(tt)
		if want != got {
			t.Fatalf("Uitoa(%d) = %s, want %s", tt, got, want)
		}
	}
}
