| Index: impl/cloud/datastore_test.go
|
| diff --git a/impl/cloud/datastore_test.go b/impl/cloud/datastore_test.go
|
| index 839c96dcc8738960a5667c9653dc63e7a2a6032e..e09e89c9b52bc053463a43413b7827f29b90a0c1 100644
|
| --- a/impl/cloud/datastore_test.go
|
| +++ b/impl/cloud/datastore_test.go
|
| @@ -22,21 +22,27 @@ import (
|
| . "github.com/smartystreets/goconvey/convey"
|
| )
|
|
|
| -func mkProperties(index bool, vals ...interface{}) []ds.Property {
|
| +func mkProperties(index bool, forceMulti bool, vals ...interface{}) ds.PropertyData {
|
| indexSetting := ds.ShouldIndex
|
| if !index {
|
| indexSetting = ds.NoIndex
|
| }
|
|
|
| - result := make([]ds.Property, len(vals))
|
| + if len(vals) == 1 && !forceMulti {
|
| + var prop ds.Property
|
| + prop.SetValue(vals[0], indexSetting)
|
| + return prop
|
| + }
|
| +
|
| + result := make(ds.PropertySlice, len(vals))
|
| for i, v := range vals {
|
| result[i].SetValue(v, indexSetting)
|
| }
|
| return result
|
| }
|
|
|
| -func mkp(vals ...interface{}) []ds.Property { return mkProperties(true, vals...) }
|
| -func mkpNI(vals ...interface{}) []ds.Property { return mkProperties(false, vals...) }
|
| +func mkp(vals ...interface{}) ds.PropertyData { return mkProperties(true, false, vals...) }
|
| +func mkpNI(vals ...interface{}) ds.PropertyData { return mkProperties(false, false, vals...) }
|
|
|
| // TestDatastore tests the cloud datastore implementation.
|
| //
|
| @@ -74,6 +80,7 @@ func TestDatastore(t *testing.T) {
|
| defer client.Close()
|
|
|
| testTime := ds.RoundTime(time.Date(2016, 1, 1, 0, 0, 0, 0, time.UTC))
|
| + _ = testTime
|
|
|
| c = Use(c, client)
|
|
|
| @@ -191,17 +198,24 @@ func TestDatastore(t *testing.T) {
|
|
|
| Convey(`Can put and get all supported entity fields.`, func() {
|
| put := ds.PropertyMap{
|
| - "$id": mkpNI("foo"),
|
| - "$kind": mkpNI("FooType"),
|
| - "Number": mkp(1337),
|
| - "String": mkpNI("hello"),
|
| - "Bytes": mkp([]byte("world")),
|
| - "Time": mkp(testTime),
|
| - "Float": mkpNI(3.14),
|
| - "Key": mkp(di.MakeKey("Parent", "ParentID", "Child", 1337)),
|
| + "$id": mkpNI("foo"),
|
| + "$kind": mkpNI("FooType"),
|
| +
|
| + "Number": mkp(1337),
|
| + "String": mkpNI("hello"),
|
| + "Bytes": mkp([]byte("world")),
|
| + "Time": mkp(testTime),
|
| + "Float": mkpNI(3.14),
|
| + "Key": mkp(di.MakeKey("Parent", "ParentID", "Child", 1337)),
|
| + "Null": mkp(nil),
|
| + "NullSlice": mkp(nil, nil),
|
|
|
| "ComplexSlice": mkp(1337, "string", []byte("bytes"), testTime, float32(3.14),
|
| - float64(2.71), true, di.MakeKey("SomeKey", "SomeID")),
|
| + float64(2.71), true, nil, di.MakeKey("SomeKey", "SomeID")),
|
| +
|
| + "Single": mkp("single"),
|
| + "SingleSlice": mkProperties(true, true, "single"), // Force a single "multi" value.
|
| + "EmptySlice": ds.PropertySlice(nil),
|
| }
|
| So(di.Put(put), ShouldBeNil)
|
| delete(put, "$key")
|
|
|