| Index: service/datastore/properties_test.go
|
| diff --git a/service/datastore/properties_test.go b/service/datastore/properties_test.go
|
| index dcde889091af17a18a75ca74c1b0e863b1c77e6d..be47cae1a14173c2125cac30311df4729287bbc6 100644
|
| --- a/service/datastore/properties_test.go
|
| +++ b/service/datastore/properties_test.go
|
| @@ -5,7 +5,9 @@
|
| package datastore
|
|
|
| import (
|
| + "fmt"
|
| "math"
|
| + "sort"
|
| "testing"
|
| "time"
|
|
|
| @@ -218,3 +220,78 @@ func TestDSPropertyMapImpl(t *testing.T) {
|
| })
|
| })
|
| }
|
| +
|
| +func TestByteSequences(t *testing.T) {
|
| + t.Parallel()
|
| +
|
| + conversions := []struct {
|
| + desc string
|
| + conv func(v string) (byteSequence, interface{})
|
| + }{
|
| + {"string", func(v string) (byteSequence, interface{}) { return stringByteSequence(v), v }},
|
| + {"[]byte", func(v string) (byteSequence, interface{}) { return bytesByteSequence(v), []byte(v) }},
|
| + }
|
| +
|
| + testCases := map[string][]struct {
|
| + assertion func(interface{}, ...interface{}) string
|
| + cmpS string
|
| + }{
|
| + "": {
|
| + {ShouldEqual, ""},
|
| + {ShouldBeLessThan, "foo"},
|
| + },
|
| + "bar": {
|
| + {ShouldEqual, "bar"},
|
| + {ShouldBeGreaterThan, "ba"},
|
| + },
|
| + "ba": {
|
| + {ShouldBeLessThan, "bar"},
|
| + {ShouldBeLessThan, "z"},
|
| + },
|
| + "foo": {
|
| + {ShouldBeGreaterThan, ""},
|
| + },
|
| + "bz": {
|
| + {ShouldBeGreaterThan, "bar"},
|
| + },
|
| + "qux": {
|
| + {ShouldBeGreaterThan, "bar"},
|
| + },
|
| + }
|
| +
|
| + keys := make([]string, 0, len(testCases))
|
| + for k := range testCases {
|
| + keys = append(keys, k)
|
| + }
|
| + sort.Strings(keys)
|
| +
|
| + Convey(`When testing byte sequences`, t, func() {
|
| + for _, s := range keys {
|
| + for _, c := range conversions {
|
| + Convey(fmt.Sprintf(`A %s sequence with test data %q`, c.desc, s), func() {
|
| + bs, effectiveValue := c.conv(s)
|
| +
|
| + Convey(`Basic stuff works.`, func() {
|
| + So(bs.len(), ShouldEqual, len(s))
|
| + for i, c := range s {
|
| + So(bs.get(i), ShouldEqual, c)
|
| + }
|
| + So(bs.value(), ShouldResemble, effectiveValue)
|
| + So(bs.string(), ShouldEqual, s)
|
| + So(bs.bytes(), ShouldResemble, []byte(s))
|
| + })
|
| +
|
| + // Test comparison with other byteSequence types.
|
| + for _, tc := range testCases[s] {
|
| + for _, c := range conversions {
|
| + Convey(fmt.Sprintf(`Compares properly with %s %q`, c.desc, tc.cmpS), func() {
|
| + cmpBS, _ := c.conv(tc.cmpS)
|
| + So(cmpByteSequence(bs, cmpBS), tc.assertion, 0)
|
| + })
|
| + }
|
| + }
|
| + })
|
| + }
|
| + }
|
| + })
|
| +}
|
|
|