Index: impl/memory/datastore_query_execution_test.go |
diff --git a/impl/memory/datastore_query_execution_test.go b/impl/memory/datastore_query_execution_test.go |
index 2a030b9c2455b075083a39564920f325bb0bb046..0f83959d90b42a99baad5a4d54fb1cb766ac5c05 100644 |
--- a/impl/memory/datastore_query_execution_test.go |
+++ b/impl/memory/datastore_query_execution_test.go |
@@ -10,11 +10,13 @@ import ( |
"testing" |
"time" |
+ "github.com/luci/gae/service/blobstore" |
ds "github.com/luci/gae/service/datastore" |
"github.com/luci/gae/service/info" |
+ "golang.org/x/net/context" |
+ |
. "github.com/luci/luci-go/common/testing/assertions" |
. "github.com/smartystreets/goconvey/convey" |
- "golang.org/x/net/context" |
) |
type qExpect struct { |
@@ -85,6 +87,32 @@ var stage2Data = []ds.PropertyMap{ |
), |
} |
+var collapsedData = []ds.PropertyMap{ |
+ // PTTime |
+ pmap("$key", key("Kind", 1), Next, |
+ "Date", time.Date(2000, time.January, 1, 1, 1, 1, 1, time.UTC), Next, |
+ ), |
+ pmap("$key", key("Kind", 2), Next, |
+ "Date", time.Date(2000, time.March, 1, 1, 1, 1, 1, time.UTC), Next, |
+ ), |
+ |
+ // PTBlobKey |
+ pmap("$key", key("Kind", 3), Next, |
+ "Key", blobstore.Key("foo"), Next, |
+ ), |
+ pmap("$key", key("Kind", 4), Next, |
+ "Key", blobstore.Key("qux"), Next, |
+ ), |
+ |
+ // PTBytes |
+ pmap("$key", key("Kind", 5), Next, |
+ "Val", []byte("ohai"), Next, |
+ ), |
+ pmap("$key", key("Kind", 6), Next, |
+ "Val", []byte("uwutm8"), Next, |
+ ), |
+} |
+ |
var queryExecutionTests = []qExTest{ |
{"basic", []qExStage{ |
{ |
@@ -385,6 +413,56 @@ var queryExecutionTests = []qExTest{ |
}, |
}, |
}}, |
+ {"collapsed types", []qExStage{ |
+ { |
+ putEnts: collapsedData, |
+ }, |
+ { |
+ expect: []qExpect{ |
+ // PTTime |
+ { |
+ q: nq("Kind").Lte("Date", time.Date(2000, time.February, 1, 1, 1, 1, 1, time.UTC)), |
+ get: []ds.PropertyMap{ |
+ collapsedData[0], |
+ }, |
+ }, |
+ { |
+ q: nq("Kind").Eq("Date", time.Date(2000, time.March, 1, 1, 1, 1, 1, time.UTC)), |
+ get: []ds.PropertyMap{ |
+ collapsedData[1], |
+ }, |
+ }, |
+ |
+ // PTBlobKey |
+ { |
+ q: nq("Kind").Lte("Key", blobstore.Key("foo")), |
+ get: []ds.PropertyMap{ |
+ collapsedData[2], |
+ }, |
+ }, |
+ { |
+ q: nq("Kind").Eq("Key", blobstore.Key("qux")), |
+ get: []ds.PropertyMap{ |
+ collapsedData[3], |
+ }, |
+ }, |
+ |
+ // PTBytes |
+ { |
+ q: nq("Kind").Lte("Val", []byte("ohai")), |
+ get: []ds.PropertyMap{ |
+ collapsedData[4], |
+ }, |
+ }, |
+ { |
+ q: nq("Kind").Eq("Val", []byte("uwutm8")), |
+ get: []ds.PropertyMap{ |
+ collapsedData[5], |
+ }, |
+ }, |
+ }, |
+ }, |
+ }}, |
} |
func TestQueryExecution(t *testing.T) { |
@@ -468,7 +546,7 @@ func TestQueryExecution(t *testing.T) { |
So(data.GetAll(expect.q, &rslt), ShouldBeNil) |
So(len(rslt), ShouldEqual, len(expect.get)) |
for i, r := range rslt { |
- So(r, ShouldResemble, expect.get[i]) |
+ So(r, ShouldResembleV, expect.get[i]) |
} |
return nil |
}, &ds.TransactionOptions{XG: true}) |