Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Unified Diff: common/cmpbin/number_test.go

Issue 1219323002: Rename funnybase and add more serializations. (Closed) Base URL: https://chromium.googlesource.com/external/github.com/luci/luci-go@master
Patch Set: fixes Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « common/cmpbin/number.go ('k') | common/cmpbin/string.go » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: common/cmpbin/number_test.go
diff --git a/common/funnybase/funnybase_test.go b/common/cmpbin/number_test.go
similarity index 72%
rename from common/funnybase/funnybase_test.go
rename to common/cmpbin/number_test.go
index db090d83d06e1ef3574d8c01ec2c721bfb5caf46..4f5ed2df5e81605b900dd98f811730c29d64b6a4 100644
--- a/common/funnybase/funnybase_test.go
+++ b/common/cmpbin/number_test.go
@@ -2,18 +2,16 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-package funnybase
+package cmpbin
import (
"bytes"
- "flag"
"fmt"
"io"
"math"
"math/rand"
"sort"
"testing"
- "time"
. "github.com/smartystreets/goconvey/convey"
)
@@ -58,45 +56,26 @@ var cases = testCaseSlice{
{[]byte{b10111110, b11111111, 0xff, 0xff, b11111111, 0xff, 0xff, 0xff, b11111110}, math.MaxInt64},
}
-var seed = flag.Int64("funnybase.seed", 0, "Random seed to use for randomized funnybase tests")
-
-func init() {
- flag.Parse()
- if *seed == 0 {
- *seed = time.Now().UnixNano()
- }
- fmt.Println("funnybase.seed =", *seed)
-}
-
-func TestPut(t *testing.T) {
- Convey("Put", t, func() {
+func TestWrite(t *testing.T) {
+ t.Parallel()
+ Convey("WriteFuncs", t, func() {
for _, c := range cases {
c := c
Convey(fmt.Sprintf("%d -> % x", c.val, c.expect), func() {
- Convey("Put", func() {
- buf := make([]byte, MaxFunnyBaseLen64)
- n := Put(buf, c.val)
- So(n, ShouldEqual, len(c.expect))
- So(buf[:n], ShouldResemble, c.expect)
- })
Convey("Write", func() {
buf := &bytes.Buffer{}
- err := Write(buf, c.val)
+ n, err := WriteInt(buf, c.val)
So(err, ShouldBeNil)
+ So(n, ShouldEqual, len(c.expect))
So(buf.Bytes(), ShouldResemble, c.expect)
})
if c.val >= 0 {
- Convey("PutUint", func() {
- buf := make([]byte, MaxFunnyBaseLen64)
- n := PutUint(buf, uint64(c.val))
- So(n, ShouldEqual, len(c.expect))
- So(buf[:n], ShouldResemble, c.expect)
- })
Convey("WriteUint", func() {
buf := &bytes.Buffer{}
- err := WriteUint(buf, uint64(c.val))
+ n, err := WriteUint(buf, uint64(c.val))
So(err, ShouldBeNil)
+ So(n, ShouldEqual, len(c.expect))
So(buf.Bytes(), ShouldResemble, c.expect)
})
}
@@ -105,39 +84,22 @@ func TestPut(t *testing.T) {
})
}
-func TestGet(t *testing.T) {
- Convey("Get", t, func() {
- for _, c := range cases {
- c := c
- Convey(fmt.Sprintf("% x -> %d", c.expect, c.val), func() {
- v, n := Get(c.expect)
- So(n, ShouldEqual, len(c.expect))
- So(v, ShouldEqual, c.val)
-
- if c.val >= 0 {
- v, n := GetUint(c.expect)
- So(n, ShouldEqual, len(c.expect))
- So(v, ShouldEqual, c.val)
- }
- })
- }
- })
-}
-
func TestRead(t *testing.T) {
Convey("Read", t, func() {
for _, c := range cases {
c := c
Convey(fmt.Sprintf("% x -> %d", c.expect, c.val), func() {
buf := bytes.NewBuffer(c.expect)
- v, err := Read(buf)
+ v, n, err := ReadInt(buf)
So(err, ShouldBeNil)
+ So(n, ShouldEqual, len(c.expect))
So(v, ShouldEqual, c.val)
if c.val >= 0 {
buf := bytes.NewBuffer(c.expect)
- v, err := ReadUint(buf)
+ v, n, err := ReadUint(buf)
So(err, ShouldBeNil)
+ So(n, ShouldEqual, len(c.expect))
So(v, ShouldEqual, c.val)
}
})
@@ -146,18 +108,22 @@ func TestRead(t *testing.T) {
}
func TestSort(t *testing.T) {
- // TODO(iannucci): Enable full test with num = 20000000.
- num := 100000
+ num := randomTestSize
num += len(cases)
randomCases := make(testCaseSlice, num)
rcSub := randomCases[copy(randomCases, cases):]
r := rand.New(rand.NewSource(*seed))
+ buf := &bytes.Buffer{}
for i := range rcSub {
v := int64(uint64(r.Uint32())<<32 | uint64(r.Uint32()))
rcSub[i].val = v
- buf := make([]byte, MaxFunnyBaseLen64)
- rcSub[i].expect = buf[:Put(buf, v)]
+ buf.Reset()
+ if _, err := WriteInt(buf, v); err != nil {
+ panic(err)
+ }
+ rcSub[i].expect = make([]byte, buf.Len())
+ copy(rcSub[i].expect, buf.Bytes())
}
sort.Sort(randomCases)
@@ -174,7 +140,7 @@ func TestSort(t *testing.T) {
prev := randomCases[0]
for _, c := range randomCases[1:] {
// Actually asserting with the So for every entry in the sorted array will
- // produce 100000 green checkmarks on a sucessful test, which is a bit
+ // produce 100 green checkmarks on a sucessful test, which is a bit
// much :).
if bytes.Compare(c.expect, prev.expect) < 0 {
So(c.expect, shouldBeLessThanOrEqual, prev.expect)
@@ -190,16 +156,6 @@ func TestSort(t *testing.T) {
})
}
-type fakeWriter struct{ count int }
-
-func (f *fakeWriter) WriteByte(byte) error {
- if f.count == 0 {
- return fmt.Errorf("nope")
- }
- f.count--
- return nil
-}
-
func TestErrors(t *testing.T) {
smallerInt64 := []byte{b01000000, b01111111, b11111111, b11111111, b11111111, 0xff, 0xff, 0xff, b11111110}
@@ -223,8 +179,6 @@ func TestErrors(t *testing.T) {
{
name: "Too big!!",
buf: []byte{b11000000}, // 65 bits!?
- n: -1,
- un: -1,
err: ErrOverflow,
uerr: ErrOverflow,
}, {
@@ -247,20 +201,15 @@ func TestErrors(t *testing.T) {
v: cases[0].val,
n: len(cases[0].expect),
- un: -2,
uerr: ErrUnderflow,
}, {
name: "Reading a number smaller than min int64",
buf: smallerInt64,
- n: -2,
err: ErrUnderflow,
-
- un: -2,
uerr: ErrUnderflow,
}, {
name: "Reading a number bigger than int64",
buf: prettyBigUint64,
- n: -1,
err: ErrOverflow,
uv: prettyBigUint64Val,
@@ -268,7 +217,6 @@ func TestErrors(t *testing.T) {
}, {
name: "Reading MaxUint64",
buf: reallyBigUint64,
- n: -1,
err: ErrOverflow,
uv: reallyBigUint64Val,
@@ -279,45 +227,27 @@ func TestErrors(t *testing.T) {
Convey("Error conditions", t, func() {
for _, t := range tests {
Convey(t.name, func() {
- Convey("Get", func() {
- v, n := Get(t.buf)
- So(v, ShouldEqual, t.v)
- So(n, ShouldEqual, t.n)
- })
- Convey("GetUint", func() {
- uv, un := GetUint(t.buf)
- So(uv, ShouldEqual, t.uv)
- So(un, ShouldEqual, t.un)
- })
Convey("Read", func() {
- v, err := Read(bytes.NewBuffer(t.buf))
+ v, _, err := ReadInt(bytes.NewBuffer(t.buf))
So(err, ShouldEqual, t.err)
- So(v, ShouldEqual, t.v)
+ if t.err == nil {
+ So(v, ShouldEqual, t.v)
+ }
})
Convey("ReadUint", func() {
- uv, err := ReadUint(bytes.NewBuffer(t.buf))
+ uv, _, err := ReadUint(bytes.NewBuffer(t.buf))
So(err, ShouldEqual, t.uerr)
- So(uv, ShouldEqual, t.uv)
+ if t.uerr == nil {
+ So(uv, ShouldEqual, t.uv)
+ }
})
})
}
- Convey("Panics", func() {
- Convey("Put", func() {
- buf := make([]byte, MaxFunnyBaseLen64)
- buf = buf[:4] // enough capacity, but not enough length!
- So(func() { Put(buf, cases[0].val) }, ShouldPanic)
- })
- Convey("PutUint", func() {
- buf := make([]byte, MaxFunnyBaseLen64)
- buf = buf[:4] // enough capacity, but not enough length!
- So(func() { PutUint(buf, reallyBigUint64Val) }, ShouldPanic)
- })
- })
Convey("Write Errors", func() {
// Test each error return location in writeSignMag
for count := 0; count < 3; count++ {
fw := &fakeWriter{count}
- err := Write(fw, -10000)
+ _, err := WriteInt(fw, -10000)
So(err.Error(), ShouldContainSubstring, "nope")
So(fw.count, ShouldEqual, 0)
}
« no previous file with comments | « common/cmpbin/number.go ('k') | common/cmpbin/string.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698