aboutsummaryrefslogtreecommitdiffhomepage
path: root/vendor/google.golang.org/appengine/search/struct_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/google.golang.org/appengine/search/struct_test.go')
-rw-r--r--vendor/google.golang.org/appengine/search/struct_test.go213
1 files changed, 0 insertions, 213 deletions
diff --git a/vendor/google.golang.org/appengine/search/struct_test.go b/vendor/google.golang.org/appengine/search/struct_test.go
deleted file mode 100644
index 4e5b5d1..0000000
--- a/vendor/google.golang.org/appengine/search/struct_test.go
+++ /dev/null
@@ -1,213 +0,0 @@
-// Copyright 2015 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 search
-
-import (
- "reflect"
- "testing"
-)
-
-func TestLoadingStruct(t *testing.T) {
- testCases := []struct {
- desc string
- fields []Field
- meta *DocumentMetadata
- want interface{}
- wantErr bool
- }{
- {
- desc: "Basic struct",
- fields: []Field{
- {Name: "Name", Value: "Gopher"},
- {Name: "Legs", Value: float64(4)},
- },
- want: &struct {
- Name string
- Legs float64
- }{"Gopher", 4},
- },
- {
- desc: "Struct with tags",
- fields: []Field{
- {Name: "Name", Value: "Gopher"},
- {Name: "about", Value: "Likes slide rules."},
- },
- meta: &DocumentMetadata{Facets: []Facet{
- {Name: "Legs", Value: float64(4)},
- {Name: "Fur", Value: Atom("furry")},
- }},
- want: &struct {
- Name string
- Info string `search:"about"`
- Legs float64 `search:",facet"`
- Fuzz Atom `search:"Fur,facet"`
- }{"Gopher", "Likes slide rules.", 4, Atom("furry")},
- },
- {
- desc: "Bad field from tag",
- want: &struct {
- AlphaBeta string `search:"αβ"`
- }{},
- wantErr: true,
- },
- {
- desc: "Ignore missing field",
- fields: []Field{
- {Name: "Meaning", Value: float64(42)},
- },
- want: &struct{}{},
- wantErr: true,
- },
- {
- desc: "Ignore unsettable field",
- fields: []Field{
- {Name: "meaning", Value: float64(42)},
- },
- want: &struct{ meaning float64 }{}, // field not populated.
- wantErr: true,
- },
- {
- desc: "Error on missing facet",
- meta: &DocumentMetadata{Facets: []Facet{
- {Name: "Set", Value: Atom("yes")},
- {Name: "Missing", Value: Atom("no")},
- }},
- want: &struct {
- Set Atom `search:",facet"`
- }{Atom("yes")},
- wantErr: true,
- },
- {
- desc: "Error on unsettable facet",
- meta: &DocumentMetadata{Facets: []Facet{
- {Name: "Set", Value: Atom("yes")},
- {Name: "unset", Value: Atom("no")},
- }},
- want: &struct {
- Set Atom `search:",facet"`
- }{Atom("yes")},
- wantErr: true,
- },
- {
- desc: "Error setting ignored field",
- fields: []Field{
- {Name: "Set", Value: "yes"},
- {Name: "Ignored", Value: "no"},
- },
- want: &struct {
- Set string
- Ignored string `search:"-"`
- }{Set: "yes"},
- wantErr: true,
- },
- {
- desc: "Error setting ignored facet",
- meta: &DocumentMetadata{Facets: []Facet{
- {Name: "Set", Value: Atom("yes")},
- {Name: "Ignored", Value: Atom("no")},
- }},
- want: &struct {
- Set Atom `search:",facet"`
- Ignored Atom `search:"-,facet"`
- }{Set: Atom("yes")},
- wantErr: true,
- },
- }
-
- for _, tt := range testCases {
- // Make a pointer to an empty version of what want points to.
- dst := reflect.New(reflect.TypeOf(tt.want).Elem()).Interface()
- err := loadStructWithMeta(dst, tt.fields, tt.meta)
- if err != nil != tt.wantErr {
- t.Errorf("%s: got err %v; want err %t", tt.desc, err, tt.wantErr)
- continue
- }
- if !reflect.DeepEqual(dst, tt.want) {
- t.Errorf("%s: doesn't match\ngot: %v\nwant: %v", tt.desc, dst, tt.want)
- }
- }
-}
-
-func TestSavingStruct(t *testing.T) {
- testCases := []struct {
- desc string
- doc interface{}
- wantFields []Field
- wantFacets []Facet
- }{
- {
- desc: "Basic struct",
- doc: &struct {
- Name string
- Legs float64
- }{"Gopher", 4},
- wantFields: []Field{
- {Name: "Name", Value: "Gopher"},
- {Name: "Legs", Value: float64(4)},
- },
- },
- {
- desc: "Struct with tags",
- doc: &struct {
- Name string
- Info string `search:"about"`
- Legs float64 `search:",facet"`
- Fuzz Atom `search:"Fur,facet"`
- }{"Gopher", "Likes slide rules.", 4, Atom("furry")},
- wantFields: []Field{
- {Name: "Name", Value: "Gopher"},
- {Name: "about", Value: "Likes slide rules."},
- },
- wantFacets: []Facet{
- {Name: "Legs", Value: float64(4)},
- {Name: "Fur", Value: Atom("furry")},
- },
- },
- {
- desc: "Ignore unexported struct fields",
- doc: &struct {
- Name string
- info string
- Legs float64 `search:",facet"`
- fuzz Atom `search:",facet"`
- }{"Gopher", "Likes slide rules.", 4, Atom("furry")},
- wantFields: []Field{
- {Name: "Name", Value: "Gopher"},
- },
- wantFacets: []Facet{
- {Name: "Legs", Value: float64(4)},
- },
- },
- {
- desc: "Ignore fields marked -",
- doc: &struct {
- Name string
- Info string `search:"-"`
- Legs float64 `search:",facet"`
- Fuzz Atom `search:"-,facet"`
- }{"Gopher", "Likes slide rules.", 4, Atom("furry")},
- wantFields: []Field{
- {Name: "Name", Value: "Gopher"},
- },
- wantFacets: []Facet{
- {Name: "Legs", Value: float64(4)},
- },
- },
- }
-
- for _, tt := range testCases {
- fields, meta, err := saveStructWithMeta(tt.doc)
- if err != nil {
- t.Errorf("%s: got err %v; want nil", tt.desc, err)
- continue
- }
- if !reflect.DeepEqual(fields, tt.wantFields) {
- t.Errorf("%s: fields don't match\ngot: %v\nwant: %v", tt.desc, fields, tt.wantFields)
- }
- if facets := meta.Facets; !reflect.DeepEqual(facets, tt.wantFacets) {
- t.Errorf("%s: facets don't match\ngot: %v\nwant: %v", tt.desc, facets, tt.wantFacets)
- }
- }
-}