aboutsummaryrefslogtreecommitdiffhomepage
path: root/vendor/github.com/tdewolff/parse/strconv/int_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/tdewolff/parse/strconv/int_test.go')
-rw-r--r--vendor/github.com/tdewolff/parse/strconv/int_test.go95
1 files changed, 95 insertions, 0 deletions
diff --git a/vendor/github.com/tdewolff/parse/strconv/int_test.go b/vendor/github.com/tdewolff/parse/strconv/int_test.go
new file mode 100644
index 0000000..1719f45
--- /dev/null
+++ b/vendor/github.com/tdewolff/parse/strconv/int_test.go
@@ -0,0 +1,95 @@
+package strconv // import "github.com/tdewolff/parse/strconv"
+
+import (
+ "math"
+ "math/rand"
+ "testing"
+
+ "github.com/tdewolff/test"
+)
+
+func TestParseInt(t *testing.T) {
+ intTests := []struct {
+ i string
+ expected int64
+ }{
+ {"5", 5},
+ {"99", 99},
+ {"999", 999},
+ {"-5", -5},
+ {"+5", 5},
+ {"9223372036854775807", 9223372036854775807},
+ {"9223372036854775808", 0},
+ {"-9223372036854775807", -9223372036854775807},
+ {"-9223372036854775808", -9223372036854775808},
+ {"-9223372036854775809", 0},
+ {"18446744073709551620", 0},
+ {"a", 0},
+ }
+ for _, tt := range intTests {
+ i, _ := ParseInt([]byte(tt.i))
+ test.That(t, i == tt.expected, "return", tt.expected, "for", tt.i)
+ }
+}
+
+func TestLenInt(t *testing.T) {
+ lenIntTests := []struct {
+ number int64
+ expected int
+ }{
+ {0, 1},
+ {1, 1},
+ {10, 2},
+ {99, 2},
+
+ // coverage
+ {100, 3},
+ {1000, 4},
+ {10000, 5},
+ {100000, 6},
+ {1000000, 7},
+ {10000000, 8},
+ {100000000, 9},
+ {1000000000, 10},
+ {10000000000, 11},
+ {100000000000, 12},
+ {1000000000000, 13},
+ {10000000000000, 14},
+ {100000000000000, 15},
+ {1000000000000000, 16},
+ {10000000000000000, 17},
+ {100000000000000000, 18},
+ {1000000000000000000, 19},
+ }
+ for _, tt := range lenIntTests {
+ test.That(t, LenInt(tt.number) == tt.expected, "return", tt.expected, "for", tt.number)
+ }
+}
+
+////////////////////////////////////////////////////////////////
+
+var num []int64
+
+func TestMain(t *testing.T) {
+ for j := 0; j < 1000; j++ {
+ num = append(num, rand.Int63n(1000))
+ }
+}
+
+func BenchmarkLenIntLog(b *testing.B) {
+ n := 0
+ for i := 0; i < b.N; i++ {
+ for j := 0; j < 1000; j++ {
+ n += int(math.Log10(math.Abs(float64(num[j])))) + 1
+ }
+ }
+}
+
+func BenchmarkLenIntSwitch(b *testing.B) {
+ n := 0
+ for i := 0; i < b.N; i++ {
+ for j := 0; j < 1000; j++ {
+ n += LenInt(num[j])
+ }
+ }
+}