aboutsummaryrefslogtreecommitdiffhomepage
path: root/vendor/google.golang.org/appengine/datastore/load_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/google.golang.org/appengine/datastore/load_test.go')
-rw-r--r--vendor/google.golang.org/appengine/datastore/load_test.go656
1 files changed, 0 insertions, 656 deletions
diff --git a/vendor/google.golang.org/appengine/datastore/load_test.go b/vendor/google.golang.org/appengine/datastore/load_test.go
deleted file mode 100644
index 46029bb..0000000
--- a/vendor/google.golang.org/appengine/datastore/load_test.go
+++ /dev/null
@@ -1,656 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-// Use of this source code is governed by the Apache 2.0
-// license that can be found in the LICENSE file.
-
-package datastore
-
-import (
- "reflect"
- "testing"
-
- proto "github.com/golang/protobuf/proto"
- pb "google.golang.org/appengine/internal/datastore"
-)
-
-type Simple struct {
- I int64
-}
-
-type SimpleWithTag struct {
- I int64 `datastore:"II"`
-}
-
-type NestedSimpleWithTag struct {
- A SimpleWithTag `datastore:"AA"`
-}
-
-type NestedSliceOfSimple struct {
- A []Simple
-}
-
-type SimpleTwoFields struct {
- S string
- SS string
-}
-
-type NestedSimpleAnonymous struct {
- Simple
- X string
-}
-
-type NestedSimple struct {
- A Simple
- I int64
-}
-
-type NestedSimple1 struct {
- A Simple
- X string
-}
-
-type NestedSimple2X struct {
- AA NestedSimple
- A SimpleTwoFields
- S string
-}
-
-type BDotB struct {
- B string `datastore:"B.B"`
-}
-
-type ABDotB struct {
- A BDotB
-}
-
-type MultiAnonymous struct {
- Simple
- SimpleTwoFields
- X string
-}
-
-var (
- // these values need to be addressable
- testString2 = "two"
- testString3 = "three"
- testInt64 = int64(2)
-
- fieldNameI = "I"
- fieldNameX = "X"
- fieldNameS = "S"
- fieldNameSS = "SS"
- fieldNameADotI = "A.I"
- fieldNameAADotII = "AA.II"
- fieldNameADotBDotB = "A.B.B"
-)
-
-func TestLoadEntityNestedLegacy(t *testing.T) {
- testCases := []struct {
- desc string
- src *pb.EntityProto
- want interface{}
- }{
- {
- "nested",
- &pb.EntityProto{
- Key: keyToProto("some-app-id", testKey0),
- Property: []*pb.Property{
- &pb.Property{
- Name: &fieldNameX,
- Value: &pb.PropertyValue{
- StringValue: &testString2,
- },
- },
- &pb.Property{
- Name: &fieldNameADotI,
- Value: &pb.PropertyValue{
- Int64Value: &testInt64,
- },
- },
- },
- },
- &NestedSimple1{
- A: Simple{I: testInt64},
- X: testString2,
- },
- },
- {
- "nested with tag",
- &pb.EntityProto{
- Key: keyToProto("some-app-id", testKey0),
- Property: []*pb.Property{
- &pb.Property{
- Name: &fieldNameAADotII,
- Value: &pb.PropertyValue{
- Int64Value: &testInt64,
- },
- },
- },
- },
- &NestedSimpleWithTag{
- A: SimpleWithTag{I: testInt64},
- },
- },
- {
- "nested with anonymous struct field",
- &pb.EntityProto{
- Key: keyToProto("some-app-id", testKey0),
- Property: []*pb.Property{
- &pb.Property{
- Name: &fieldNameX,
- Value: &pb.PropertyValue{
- StringValue: &testString2,
- },
- },
- &pb.Property{
- Name: &fieldNameI,
- Value: &pb.PropertyValue{
- Int64Value: &testInt64,
- },
- },
- },
- },
- &NestedSimpleAnonymous{
- Simple: Simple{I: testInt64},
- X: testString2,
- },
- },
- {
- "nested with dotted field tag",
- &pb.EntityProto{
- Key: keyToProto("some-app-id", testKey0),
- Property: []*pb.Property{
- &pb.Property{
- Name: &fieldNameADotBDotB,
- Value: &pb.PropertyValue{
- StringValue: &testString2,
- },
- },
- },
- },
- &ABDotB{
- A: BDotB{
- B: testString2,
- },
- },
- },
- {
- "nested with dotted field tag",
- &pb.EntityProto{
- Key: keyToProto("some-app-id", testKey0),
- Property: []*pb.Property{
- &pb.Property{
- Name: &fieldNameI,
- Value: &pb.PropertyValue{
- Int64Value: &testInt64,
- },
- },
- &pb.Property{
- Name: &fieldNameS,
- Value: &pb.PropertyValue{
- StringValue: &testString2,
- },
- },
- &pb.Property{
- Name: &fieldNameSS,
- Value: &pb.PropertyValue{
- StringValue: &testString3,
- },
- },
- &pb.Property{
- Name: &fieldNameX,
- Value: &pb.PropertyValue{
- StringValue: &testString3,
- },
- },
- },
- },
- &MultiAnonymous{
- Simple: Simple{I: testInt64},
- SimpleTwoFields: SimpleTwoFields{S: "two", SS: "three"},
- X: "three",
- },
- },
- }
-
- for _, tc := range testCases {
- dst := reflect.New(reflect.TypeOf(tc.want).Elem()).Interface()
- err := loadEntity(dst, tc.src)
- if err != nil {
- t.Errorf("loadEntity: %s: %v", tc.desc, err)
- continue
- }
-
- if !reflect.DeepEqual(tc.want, dst) {
- t.Errorf("%s: compare:\ngot: %#v\nwant: %#v", tc.desc, dst, tc.want)
- }
- }
-}
-
-type WithKey struct {
- X string
- I int64
- K *Key `datastore:"__key__"`
-}
-
-type NestedWithKey struct {
- N WithKey
- Y string
-}
-
-var (
- incompleteKey = newKey("", nil)
- invalidKey = newKey("s", incompleteKey)
-
- // these values need to be addressable
- fieldNameA = "A"
- fieldNameK = "K"
- fieldNameN = "N"
- fieldNameY = "Y"
- fieldNameAA = "AA"
- fieldNameII = "II"
- fieldNameBDotB = "B.B"
-
- entityProtoMeaning = pb.Property_ENTITY_PROTO
-
- TRUE = true
- FALSE = false
-)
-
-var (
- simpleEntityProto, nestedSimpleEntityProto,
- simpleTwoFieldsEntityProto, simpleWithTagEntityProto,
- bDotBEntityProto, withKeyEntityProto string
-)
-
-func init() {
- // simpleEntityProto corresponds to:
- // Simple{I: testInt64}
- simpleEntityProtob, err := proto.Marshal(&pb.EntityProto{
- Key: keyToProto("", incompleteKey),
- Property: []*pb.Property{
- &pb.Property{
- Name: &fieldNameI,
- Value: &pb.PropertyValue{
- Int64Value: &testInt64,
- },
- Multiple: &FALSE,
- },
- },
- EntityGroup: &pb.Path{},
- })
- if err != nil {
- panic(err)
- }
- simpleEntityProto = string(simpleEntityProtob)
-
- // nestedSimpleEntityProto corresponds to:
- // NestedSimple{
- // A: Simple{I: testInt64},
- // I: testInt64,
- // }
- nestedSimpleEntityProtob, err := proto.Marshal(&pb.EntityProto{
- Key: keyToProto("", incompleteKey),
- Property: []*pb.Property{
- &pb.Property{
- Name: &fieldNameA,
- Meaning: &entityProtoMeaning,
- Value: &pb.PropertyValue{
- StringValue: &simpleEntityProto,
- },
- Multiple: &FALSE,
- },
- &pb.Property{
- Name: &fieldNameI,
- Meaning: &entityProtoMeaning,
- Value: &pb.PropertyValue{
- Int64Value: &testInt64,
- },
- Multiple: &FALSE,
- },
- },
- EntityGroup: &pb.Path{},
- })
- if err != nil {
- panic(err)
- }
- nestedSimpleEntityProto = string(nestedSimpleEntityProtob)
-
- // simpleTwoFieldsEntityProto corresponds to:
- // SimpleTwoFields{S: testString2, SS: testString3}
- simpleTwoFieldsEntityProtob, err := proto.Marshal(&pb.EntityProto{
- Key: keyToProto("", incompleteKey),
- Property: []*pb.Property{
- &pb.Property{
- Name: &fieldNameS,
- Value: &pb.PropertyValue{
- StringValue: &testString2,
- },
- Multiple: &FALSE,
- },
- &pb.Property{
- Name: &fieldNameSS,
- Value: &pb.PropertyValue{
- StringValue: &testString3,
- },
- Multiple: &FALSE,
- },
- },
- EntityGroup: &pb.Path{},
- })
- if err != nil {
- panic(err)
- }
- simpleTwoFieldsEntityProto = string(simpleTwoFieldsEntityProtob)
-
- // simpleWithTagEntityProto corresponds to:
- // SimpleWithTag{I: testInt64}
- simpleWithTagEntityProtob, err := proto.Marshal(&pb.EntityProto{
- Key: keyToProto("", incompleteKey),
- Property: []*pb.Property{
- &pb.Property{
- Name: &fieldNameII,
- Value: &pb.PropertyValue{
- Int64Value: &testInt64,
- },
- Multiple: &FALSE,
- },
- },
- EntityGroup: &pb.Path{},
- })
- if err != nil {
- panic(err)
- }
- simpleWithTagEntityProto = string(simpleWithTagEntityProtob)
-
- // bDotBEntityProto corresponds to:
- // BDotB{
- // B: testString2,
- // }
- bDotBEntityProtob, err := proto.Marshal(&pb.EntityProto{
- Key: keyToProto("", incompleteKey),
- Property: []*pb.Property{
- &pb.Property{
- Name: &fieldNameBDotB,
- Value: &pb.PropertyValue{
- StringValue: &testString2,
- },
- Multiple: &FALSE,
- },
- },
- EntityGroup: &pb.Path{},
- })
- if err != nil {
- panic(err)
- }
- bDotBEntityProto = string(bDotBEntityProtob)
-
- // withKeyEntityProto corresponds to:
- // WithKey{
- // X: testString3,
- // I: testInt64,
- // K: testKey1a,
- // }
- withKeyEntityProtob, err := proto.Marshal(&pb.EntityProto{
- Key: keyToProto("", testKey1a),
- Property: []*pb.Property{
- &pb.Property{
- Name: &fieldNameX,
- Value: &pb.PropertyValue{
- StringValue: &testString3,
- },
- Multiple: &FALSE,
- },
- &pb.Property{
- Name: &fieldNameI,
- Value: &pb.PropertyValue{
- Int64Value: &testInt64,
- },
- Multiple: &FALSE,
- },
- },
- EntityGroup: &pb.Path{},
- })
- if err != nil {
- panic(err)
- }
- withKeyEntityProto = string(withKeyEntityProtob)
-
-}
-
-func TestLoadEntityNested(t *testing.T) {
- testCases := []struct {
- desc string
- src *pb.EntityProto
- want interface{}
- }{
- {
- "nested basic",
- &pb.EntityProto{
- Key: keyToProto("some-app-id", testKey0),
- Property: []*pb.Property{
- &pb.Property{
- Name: &fieldNameA,
- Meaning: &entityProtoMeaning,
- Value: &pb.PropertyValue{
- StringValue: &simpleEntityProto,
- },
- },
- &pb.Property{
- Name: &fieldNameI,
- Value: &pb.PropertyValue{
- Int64Value: &testInt64,
- },
- },
- },
- },
- &NestedSimple{
- A: Simple{I: 2},
- I: 2,
- },
- },
- {
- "nested with struct tags",
- &pb.EntityProto{
- Key: keyToProto("some-app-id", testKey0),
- Property: []*pb.Property{
- &pb.Property{
- Name: &fieldNameAA,
- Meaning: &entityProtoMeaning,
- Value: &pb.PropertyValue{
- StringValue: &simpleWithTagEntityProto,
- },
- },
- },
- },
- &NestedSimpleWithTag{
- A: SimpleWithTag{I: testInt64},
- },
- },
- {
- "nested 2x",
- &pb.EntityProto{
- Key: keyToProto("some-app-id", testKey0),
- Property: []*pb.Property{
- &pb.Property{
- Name: &fieldNameAA,
- Meaning: &entityProtoMeaning,
- Value: &pb.PropertyValue{
- StringValue: &nestedSimpleEntityProto,
- },
- },
- &pb.Property{
- Name: &fieldNameA,
- Meaning: &entityProtoMeaning,
- Value: &pb.PropertyValue{
- StringValue: &simpleTwoFieldsEntityProto,
- },
- },
- &pb.Property{
- Name: &fieldNameS,
- Value: &pb.PropertyValue{
- StringValue: &testString3,
- },
- },
- },
- },
- &NestedSimple2X{
- AA: NestedSimple{
- A: Simple{I: testInt64},
- I: testInt64,
- },
- A: SimpleTwoFields{S: testString2, SS: testString3},
- S: testString3,
- },
- },
- {
- "nested anonymous",
- &pb.EntityProto{
- Key: keyToProto("some-app-id", testKey0),
- Property: []*pb.Property{
- &pb.Property{
- Name: &fieldNameI,
- Value: &pb.PropertyValue{
- Int64Value: &testInt64,
- },
- },
- &pb.Property{
- Name: &fieldNameX,
- Value: &pb.PropertyValue{
- StringValue: &testString2,
- },
- },
- },
- },
- &NestedSimpleAnonymous{
- Simple: Simple{I: testInt64},
- X: testString2,
- },
- },
- {
- "nested simple with slice",
- &pb.EntityProto{
- Key: keyToProto("some-app-id", testKey0),
- Property: []*pb.Property{
- &pb.Property{
- Name: &fieldNameA,
- Meaning: &entityProtoMeaning,
- Multiple: &TRUE,
- Value: &pb.PropertyValue{
- StringValue: &simpleEntityProto,
- },
- },
- &pb.Property{
- Name: &fieldNameA,
- Meaning: &entityProtoMeaning,
- Multiple: &TRUE,
- Value: &pb.PropertyValue{
- StringValue: &simpleEntityProto,
- },
- },
- },
- },
- &NestedSliceOfSimple{
- A: []Simple{Simple{I: testInt64}, Simple{I: testInt64}},
- },
- },
- {
- "nested with multiple anonymous fields",
- &pb.EntityProto{
- Key: keyToProto("some-app-id", testKey0),
- Property: []*pb.Property{
- &pb.Property{
- Name: &fieldNameI,
- Value: &pb.PropertyValue{
- Int64Value: &testInt64,
- },
- },
- &pb.Property{
- Name: &fieldNameS,
- Value: &pb.PropertyValue{
- StringValue: &testString2,
- },
- },
- &pb.Property{
- Name: &fieldNameSS,
- Value: &pb.PropertyValue{
- StringValue: &testString3,
- },
- },
- &pb.Property{
- Name: &fieldNameX,
- Value: &pb.PropertyValue{
- StringValue: &testString2,
- },
- },
- },
- },
- &MultiAnonymous{
- Simple: Simple{I: testInt64},
- SimpleTwoFields: SimpleTwoFields{S: testString2, SS: testString3},
- X: testString2,
- },
- },
- {
- "nested with dotted field tag",
- &pb.EntityProto{
- Key: keyToProto("some-app-id", testKey0),
- Property: []*pb.Property{
- &pb.Property{
- Name: &fieldNameA,
- Meaning: &entityProtoMeaning,
- Value: &pb.PropertyValue{
- StringValue: &bDotBEntityProto,
- },
- },
- },
- },
- &ABDotB{
- A: BDotB{
- B: testString2,
- },
- },
- },
- {
- "nested entity with key",
- &pb.EntityProto{
- Key: keyToProto("some-app-id", testKey0),
- Property: []*pb.Property{
- &pb.Property{
- Name: &fieldNameY,
- Value: &pb.PropertyValue{
- StringValue: &testString2,
- },
- },
- &pb.Property{
- Name: &fieldNameN,
- Meaning: &entityProtoMeaning,
- Value: &pb.PropertyValue{
- StringValue: &withKeyEntityProto,
- },
- },
- },
- },
- &NestedWithKey{
- Y: testString2,
- N: WithKey{
- X: testString3,
- I: testInt64,
- K: testKey1a,
- },
- },
- },
- }
-
- for _, tc := range testCases {
- dst := reflect.New(reflect.TypeOf(tc.want).Elem()).Interface()
- err := loadEntity(dst, tc.src)
- if err != nil {
- t.Errorf("loadEntity: %s: %v", tc.desc, err)
- continue
- }
-
- if !reflect.DeepEqual(tc.want, dst) {
- t.Errorf("%s: compare:\ngot: %#v\nwant: %#v", tc.desc, dst, tc.want)
- }
- }
-}