| Index: service/datastore/datastore_test.go
|
| diff --git a/service/datastore/datastore_test.go b/service/datastore/datastore_test.go
|
| index 19982929c5d98bf3a14c9f469382092e0eeb8afa..42545d5b70983db979e37d818b289594769faa2b 100644
|
| --- a/service/datastore/datastore_test.go
|
| +++ b/service/datastore/datastore_test.go
|
| @@ -82,7 +82,7 @@ func (f *fakeDatastore) Run(fq *FinalizedQuery, cb RawRunCB) error {
|
| if i == 10 {
|
| k = f.mkKey("Kind", "eleven")
|
| }
|
| - pm := PropertyMap{"Value": {MkProperty(i)}}
|
| + pm := PropertyMap{"Value": MkProperty(i)}
|
| if err := cb(k, pm, cursCB); err != nil {
|
| if err == Stop {
|
| err = nil
|
| @@ -103,9 +103,9 @@ func (f *fakeDatastore) PutMulti(keys []*Key, vals []PropertyMap, cb NewKeyCB) e
|
| if k.Kind() == "Fail" {
|
| err = errFail
|
| } else {
|
| - So(vals[i]["Value"], ShouldResemble, []Property{MkProperty(i)})
|
| + So(vals[i].Slice("Value"), ShouldResemble, PropertySlice{MkProperty(i)})
|
| if assertExtra {
|
| - So(vals[i]["Extra"], ShouldResemble, []Property{MkProperty("whoa")})
|
| + So(vals[i].Slice("Extra"), ShouldResemble, PropertySlice{MkProperty("whoa")})
|
| }
|
| if k.IsIncomplete() {
|
| k = NewKey(k.AppID(), k.Namespace(), k.Kind(), "", int64(i+1), k.Parent())
|
| @@ -128,7 +128,7 @@ func (f *fakeDatastore) GetMulti(keys []*Key, _meta MultiMetaGetter, cb GetMulti
|
| } else if k.Kind() == "DNE" || k.IntID() == noSuchEntityID {
|
| cb(nil, ErrNoSuchEntity)
|
| } else {
|
| - cb(PropertyMap{"Value": {MkProperty(i + 1)}}, nil)
|
| + cb(PropertyMap{"Value": MkProperty(i + 1)}, nil)
|
| }
|
| }
|
| return nil
|
| @@ -197,7 +197,7 @@ func (f *FakePLS) Load(pm PropertyMap) error {
|
| return errors.New("FakePLS.Load")
|
| }
|
| f.gotLoaded = true
|
| - f.Value = pm["Value"][0].Value().(int64)
|
| + f.Value = pm.Slice("Value")[0].Value().(int64)
|
| return nil
|
| }
|
|
|
| @@ -206,8 +206,8 @@ func (f *FakePLS) Save(withMeta bool) (PropertyMap, error) {
|
| return nil, errors.New("FakePLS.Save")
|
| }
|
| ret := PropertyMap{
|
| - "Value": {MkProperty(f.Value)},
|
| - "Extra": {MkProperty("whoa")},
|
| + "Value": MkProperty(f.Value),
|
| + "Extra": MkProperty("whoa"),
|
| }
|
| if withMeta {
|
| id, _ := f.GetMeta("id")
|
| @@ -301,8 +301,8 @@ func (c plsChan) GetMeta(key string) (interface{}, bool) {
|
|
|
| func (c plsChan) GetAllMeta() PropertyMap {
|
| return PropertyMap{
|
| - "kind": []Property{MkProperty("plsChan")},
|
| - "id": []Property{MkProperty("whyDoIExist")},
|
| + "kind": MkProperty("plsChan"),
|
| + "id": MkProperty("whyDoIExist"),
|
| }
|
| }
|
|
|
| @@ -315,7 +315,7 @@ func (s *MGSWithNoKind) GetMeta(key string) (interface{}, bool) {
|
| }
|
|
|
| func (s *MGSWithNoKind) GetAllMeta() PropertyMap {
|
| - return PropertyMap{"$kind": []Property{MkProperty("ohai")}}
|
| + return PropertyMap{"$kind": MkProperty("ohai")}
|
| }
|
|
|
| func (s *MGSWithNoKind) SetMeta(key string, val interface{}) bool {
|
| @@ -668,7 +668,7 @@ func TestPut(t *testing.T) {
|
| So(fpls.IntID, ShouldEqual, expect)
|
| }
|
|
|
| - pm := PropertyMap{"Value": {MkProperty(0)}, "$kind": {MkPropertyNI("Pmap")}}
|
| + pm := PropertyMap{"Value": MkProperty(0), "$kind": MkPropertyNI("Pmap")}
|
| So(ds.Put(pm), ShouldBeNil)
|
| So(ds.KeyForObj(pm).IntID(), ShouldEqual, 1)
|
| })
|
| @@ -677,8 +677,8 @@ func TestPut(t *testing.T) {
|
| pms := make([]PropertyMap, 7)
|
| for i := range pms {
|
| pms[i] = PropertyMap{
|
| - "$kind": {MkProperty("Pmap")},
|
| - "Value": {MkProperty(i)},
|
| + "$kind": MkProperty("Pmap"),
|
| + "Value": MkProperty(i),
|
| }
|
| if i == 4 {
|
| So(pms[i].SetMeta("id", int64(200)), ShouldBeTrue)
|
| @@ -716,8 +716,8 @@ func TestPut(t *testing.T) {
|
| pms := make([]*PropertyMap, 7)
|
| for i := range pms {
|
| pms[i] = &PropertyMap{
|
| - "$kind": {MkProperty("Pmap")},
|
| - "Value": {MkProperty(i)},
|
| + "$kind": MkProperty("Pmap"),
|
| + "Value": MkProperty(i),
|
| }
|
| if i == 4 {
|
| So(pms[i].SetMeta("id", int64(200)), ShouldBeTrue)
|
| @@ -737,8 +737,8 @@ func TestPut(t *testing.T) {
|
| ifs := []interface{}{
|
| &CommonStruct{Value: 0},
|
| &FakePLS{Value: 1},
|
| - PropertyMap{"Value": {MkProperty(2)}, "$kind": {MkPropertyNI("Pmap")}},
|
| - &PropertyMap{"Value": {MkProperty(3)}, "$kind": {MkPropertyNI("Pmap")}},
|
| + PropertyMap{"Value": MkProperty(2), "$kind": MkPropertyNI("Pmap")},
|
| + &PropertyMap{"Value": MkProperty(3), "$kind": MkPropertyNI("Pmap")},
|
| }
|
| So(ds.Put(ifs), ShouldBeNil)
|
| for i := range ifs {
|
| @@ -1024,7 +1024,7 @@ func TestGet(t *testing.T) {
|
| keys := []*Key{ds.MakeKey("Kind", 1)}
|
| So(rds.GetMulti(keys, nil, func(pm PropertyMap, err error) error {
|
| So(err, ShouldBeNil)
|
| - So(pm["Value"][0].Value(), ShouldEqual, 1)
|
| + So(pm.Slice("Value")[0].Value(), ShouldEqual, 1)
|
| return nil
|
| }), ShouldBeNil)
|
| })
|
| @@ -1145,7 +1145,7 @@ func TestGetAll(t *testing.T) {
|
| k, ok := o.GetMeta("key")
|
| So(ok, ShouldBeTrue)
|
| So(k.(*Key).IntID(), ShouldEqual, i+1)
|
| - So(o["Value"][0].Value().(int64), ShouldEqual, i)
|
| + So(o.Slice("Value")[0].Value().(int64), ShouldEqual, i)
|
| }
|
| })
|
|
|
| @@ -1178,7 +1178,7 @@ func TestGetAll(t *testing.T) {
|
| k, ok := o.GetMeta("key")
|
| So(ok, ShouldBeTrue)
|
| So(k.(*Key).IntID(), ShouldEqual, i+1)
|
| - So(o["Value"][0].Value().(int64), ShouldEqual, i)
|
| + So(o.Slice("Value")[0].Value().(int64), ShouldEqual, i)
|
| }
|
| })
|
|
|
| @@ -1338,7 +1338,7 @@ func TestRun(t *testing.T) {
|
| k, ok := pm.GetMeta("key")
|
| So(ok, ShouldBeTrue)
|
| So(k.(*Key).IntID(), ShouldEqual, i+1)
|
| - So((*pm)["Value"][0].Value(), ShouldEqual, i)
|
| + So((*pm).Slice("Value")[0].Value(), ShouldEqual, i)
|
| i++
|
| }), ShouldBeNil)
|
| })
|
| @@ -1374,7 +1374,7 @@ func TestRun(t *testing.T) {
|
| k, ok := pm.GetMeta("key")
|
| So(ok, ShouldBeTrue)
|
| So(k.(*Key).IntID(), ShouldEqual, i+1)
|
| - So(pm["Value"][0].Value(), ShouldEqual, i)
|
| + So(pm.Slice("Value")[0].Value(), ShouldEqual, i)
|
| i++
|
| }), ShouldBeNil)
|
| })
|
| @@ -1438,8 +1438,8 @@ func TestSchemaChange(t *testing.T) {
|
|
|
| Convey("Can add fields", func() {
|
| initial := PropertyMap{
|
| - "$key": {mpNI(ds.MakeKey("Val", 10))},
|
| - "Val": {mp(100)},
|
| + "$key": mpNI(ds.MakeKey("Val", 10)),
|
| + "Val": mp(100),
|
| }
|
| So(ds.Put(initial), ShouldBeNil)
|
|
|
| @@ -1456,9 +1456,9 @@ func TestSchemaChange(t *testing.T) {
|
|
|
| Convey("Removing fields", func() {
|
| initial := PropertyMap{
|
| - "$key": {mpNI(ds.MakeKey("Val", 10))},
|
| - "Val": {mp(100)},
|
| - "TwoVal": {mp(200)},
|
| + "$key": mpNI(ds.MakeKey("Val", 10)),
|
| + "Val": mp(100),
|
| + "TwoVal": mp(200),
|
| }
|
| So(ds.Put(initial), ShouldBeNil)
|
|
|
| @@ -1487,7 +1487,7 @@ func TestSchemaChange(t *testing.T) {
|
| ID: 10,
|
| Val: 100,
|
| Extra: PropertyMap{
|
| - "TwoVal": {mp(200)},
|
| + "TwoVal": PropertySlice{mp(200)},
|
| },
|
| })
|
| })
|
| @@ -1501,8 +1501,8 @@ func TestSchemaChange(t *testing.T) {
|
| Extra PropertyMap `gae:",extra"`
|
| }
|
| ex := &Expando{10, 17, PropertyMap{
|
| - "Hello": {mp("Hello")},
|
| - "World": {mp(true)},
|
| + "Hello": mp("Hello"),
|
| + "World": mp(true),
|
| }}
|
| So(ds.Put(ex), ShouldBeNil)
|
|
|
| @@ -1512,17 +1512,17 @@ func TestSchemaChange(t *testing.T) {
|
| ID: 10,
|
| Something: 17,
|
| Extra: PropertyMap{
|
| - "Hello": {mp("Hello")},
|
| - "World": {mp(true)},
|
| + "Hello": PropertySlice{mp("Hello")},
|
| + "World": PropertySlice{mp(true)},
|
| },
|
| })
|
| })
|
|
|
| Convey("Can read-but-not-write", func() {
|
| initial := PropertyMap{
|
| - "$key": {mpNI(ds.MakeKey("Convert", 10))},
|
| - "Val": {mp(100)},
|
| - "TwoVal": {mp(200)},
|
| + "$key": mpNI(ds.MakeKey("Convert", 10)),
|
| + "Val": mp(100),
|
| + "TwoVal": mp(200),
|
| }
|
| So(ds.Put(initial), ShouldBeNil)
|
| type Convert struct {
|
| @@ -1535,9 +1535,9 @@ func TestSchemaChange(t *testing.T) {
|
| c := &Convert{ID: 10}
|
| So(ds.Get(c), ShouldBeNil)
|
| So(c, ShouldResemble, &Convert{
|
| - ID: 10, Val: 100, NewVal: 0, Extra: PropertyMap{"TwoVal": {mp(200)}},
|
| + ID: 10, Val: 100, NewVal: 0, Extra: PropertyMap{"TwoVal": PropertySlice{mp(200)}},
|
| })
|
| - c.NewVal = c.Extra["TwoVal"][0].Value().(int64)
|
| + c.NewVal = c.Extra.Slice("TwoVal")[0].Value().(int64)
|
| So(ds.Put(c), ShouldBeNil)
|
|
|
| c = &Convert{ID: 10}
|
| @@ -1549,9 +1549,9 @@ func TestSchemaChange(t *testing.T) {
|
|
|
| Convey("Can black hole", func() {
|
| initial := PropertyMap{
|
| - "$key": {mpNI(ds.MakeKey("BlackHole", 10))},
|
| - "Val": {mp(100)},
|
| - "TwoVal": {mp(200)},
|
| + "$key": mpNI(ds.MakeKey("BlackHole", 10)),
|
| + "Val": mp(100),
|
| + "TwoVal": mp(200),
|
| }
|
| So(ds.Put(initial), ShouldBeNil)
|
| type BlackHole struct {
|
| @@ -1567,8 +1567,8 @@ func TestSchemaChange(t *testing.T) {
|
|
|
| Convey("Can change field types", func() {
|
| initial := PropertyMap{
|
| - "$key": {mpNI(ds.MakeKey("IntChange", 10))},
|
| - "Val": {mp(100)},
|
| + "$key": mpNI(ds.MakeKey("IntChange", 10)),
|
| + "Val": mp(100),
|
| }
|
| So(ds.Put(initial), ShouldBeNil)
|
|
|
| @@ -1579,8 +1579,8 @@ func TestSchemaChange(t *testing.T) {
|
| }
|
| i := &IntChange{ID: 10}
|
| So(ds.Get(i), ShouldBeNil)
|
| - So(i, ShouldResemble, &IntChange{ID: 10, Extra: PropertyMap{"Val": {mp(100)}}})
|
| - i.Val = fmt.Sprint(i.Extra["Val"][0].Value())
|
| + So(i, ShouldResemble, &IntChange{ID: 10, Extra: PropertyMap{"Val": PropertySlice{mp(100)}}})
|
| + i.Val = fmt.Sprint(i.Extra.Slice("Val")[0].Value())
|
| So(ds.Put(i), ShouldBeNil)
|
|
|
| i = &IntChange{ID: 10}
|
| @@ -1595,22 +1595,22 @@ func TestSchemaChange(t *testing.T) {
|
| Extra PropertyMap `gae:",extra"`
|
| }
|
| d := &Dup{ID: 10, Val: 100, Extra: PropertyMap{
|
| - "Val": {mp(200)},
|
| - "Other": {mp("other")},
|
| + "Val": PropertySlice{mp(200)},
|
| + "Other": PropertySlice{mp("other")},
|
| }}
|
| So(ds.Put(d), ShouldBeNil)
|
|
|
| d = &Dup{ID: 10}
|
| So(ds.Get(d), ShouldBeNil)
|
| So(d, ShouldResemble, &Dup{
|
| - ID: 10, Val: 100, Extra: PropertyMap{"Other": {mp("other")}},
|
| + ID: 10, Val: 100, Extra: PropertyMap{"Other": PropertySlice{mp("other")}},
|
| })
|
| })
|
|
|
| Convey("Can change repeated field to non-repeating field", func() {
|
| initial := PropertyMap{
|
| - "$key": {mpNI(ds.MakeKey("NonRepeating", 10))},
|
| - "Val": {mp(100), mp(200), mp(400)},
|
| + "$key": mpNI(ds.MakeKey("NonRepeating", 10)),
|
| + "Val": PropertySlice{mp(100), mp(200), mp(400)},
|
| }
|
| So(ds.Put(initial), ShouldBeNil)
|
|
|
| @@ -1623,17 +1623,17 @@ func TestSchemaChange(t *testing.T) {
|
| So(ds.Get(n), ShouldBeNil)
|
| So(n, ShouldResemble, &NonRepeating{
|
| ID: 10, Val: 0, Extra: PropertyMap{
|
| - "Val": {mp(100), mp(200), mp(400)},
|
| + "Val": PropertySlice{mp(100), mp(200), mp(400)},
|
| },
|
| })
|
| })
|
|
|
| Convey("Deals correctly with recursive types", func() {
|
| initial := PropertyMap{
|
| - "$key": {mpNI(ds.MakeKey("Outer", 10))},
|
| - "I.A": {mp(1), mp(2), mp(4)},
|
| - "I.B": {mp(10), mp(20), mp(40)},
|
| - "I.C": {mp(100), mp(200), mp(400)},
|
| + "$key": mpNI(ds.MakeKey("Outer", 10)),
|
| + "I.A": PropertySlice{mp(1), mp(2), mp(4)},
|
| + "I.B": PropertySlice{mp(10), mp(20), mp(40)},
|
| + "I.C": PropertySlice{mp(100), mp(200), mp(400)},
|
| }
|
| So(ds.Put(initial), ShouldBeNil)
|
| type Inner struct {
|
| @@ -1656,7 +1656,7 @@ func TestSchemaChange(t *testing.T) {
|
| {4, 40},
|
| },
|
| Extra: PropertyMap{
|
| - "I.C": {mp(100), mp(200), mp(400)},
|
| + "I.C": PropertySlice{mp(100), mp(200), mp(400)},
|
| },
|
| })
|
| })
|
|
|