| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // adapted from github.com/golang/appengine/datastore | 5 // adapted from github.com/golang/appengine/datastore |
| 6 | 6 |
| 7 package datastore | 7 package datastore |
| 8 | 8 |
| 9 import ( | 9 import ( |
| 10 "fmt" | 10 "fmt" |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 } | 51 } |
| 52 pm := PropertyMap{"Value": {MkProperty(i)}} | 52 pm := PropertyMap{"Value": {MkProperty(i)}} |
| 53 if !cb(k, pm, nil) { | 53 if !cb(k, pm, nil) { |
| 54 break | 54 break |
| 55 } | 55 } |
| 56 } | 56 } |
| 57 return nil | 57 return nil |
| 58 } | 58 } |
| 59 | 59 |
| 60 func (f *fakeDatastore) PutMulti(keys []*Key, vals []PropertyMap, cb PutMultiCB)
error { | 60 func (f *fakeDatastore) PutMulti(keys []*Key, vals []PropertyMap, cb PutMultiCB)
error { |
| 61 » if keys[0].Last().Kind == "FailAll" { | 61 » if keys[0].Kind() == "FailAll" { |
| 62 return errors.New("PutMulti fail all") | 62 return errors.New("PutMulti fail all") |
| 63 } | 63 } |
| 64 assertExtra := false | 64 assertExtra := false |
| 65 if _, err := vals[0].GetMeta("assertExtra"); err == nil { | 65 if _, err := vals[0].GetMeta("assertExtra"); err == nil { |
| 66 assertExtra = true | 66 assertExtra = true |
| 67 } | 67 } |
| 68 for i, k := range keys { | 68 for i, k := range keys { |
| 69 err := error(nil) | 69 err := error(nil) |
| 70 » » if k.Last().Kind == "Fail" { | 70 » » if k.Kind() == "Fail" { |
| 71 err = errors.New("PutMulti fail") | 71 err = errors.New("PutMulti fail") |
| 72 } else { | 72 } else { |
| 73 So(vals[i]["Value"], ShouldResemble, []Property{MkProper
ty(i)}) | 73 So(vals[i]["Value"], ShouldResemble, []Property{MkProper
ty(i)}) |
| 74 if assertExtra { | 74 if assertExtra { |
| 75 So(vals[i]["Extra"], ShouldResemble, []Property{
MkProperty("whoa")}) | 75 So(vals[i]["Extra"], ShouldResemble, []Property{
MkProperty("whoa")}) |
| 76 } | 76 } |
| 77 if k.Incomplete() { | 77 if k.Incomplete() { |
| 78 » » » » k = NewKey(k.AppID(), k.Namespace(), k.Last().Ki
nd, "", int64(i+1), k.Parent()) | 78 » » » » k = NewKey(k.AppID(), k.Namespace(), k.Kind(), "
", int64(i+1), k.Parent()) |
| 79 } | 79 } |
| 80 } | 80 } |
| 81 cb(k, err) | 81 cb(k, err) |
| 82 } | 82 } |
| 83 return nil | 83 return nil |
| 84 } | 84 } |
| 85 | 85 |
| 86 func (f *fakeDatastore) GetMulti(keys []*Key, _meta MultiMetaGetter, cb GetMulti
CB) error { | 86 func (f *fakeDatastore) GetMulti(keys []*Key, _meta MultiMetaGetter, cb GetMulti
CB) error { |
| 87 » if keys[0].Last().Kind == "FailAll" { | 87 » if keys[0].Kind() == "FailAll" { |
| 88 return errors.New("GetMulti fail all") | 88 return errors.New("GetMulti fail all") |
| 89 } | 89 } |
| 90 for i, k := range keys { | 90 for i, k := range keys { |
| 91 » » if k.Last().Kind == "Fail" { | 91 » » if k.Kind() == "Fail" { |
| 92 cb(nil, errors.New("GetMulti fail")) | 92 cb(nil, errors.New("GetMulti fail")) |
| 93 } else { | 93 } else { |
| 94 cb(PropertyMap{"Value": {MkProperty(i + 1)}}, nil) | 94 cb(PropertyMap{"Value": {MkProperty(i + 1)}}, nil) |
| 95 } | 95 } |
| 96 } | 96 } |
| 97 return nil | 97 return nil |
| 98 } | 98 } |
| 99 | 99 |
| 100 func (f *fakeDatastore) DeleteMulti(keys []*Key, cb DeleteMultiCB) error { | 100 func (f *fakeDatastore) DeleteMulti(keys []*Key, cb DeleteMultiCB) error { |
| 101 » if keys[0].Last().Kind == "FailAll" { | 101 » if keys[0].Kind() == "FailAll" { |
| 102 return errors.New("DeleteMulti fail all") | 102 return errors.New("DeleteMulti fail all") |
| 103 } | 103 } |
| 104 for _, k := range keys { | 104 for _, k := range keys { |
| 105 » » if k.Last().Kind == "Fail" { | 105 » » if k.Kind() == "Fail" { |
| 106 cb(errors.New("DeleteMulti fail")) | 106 cb(errors.New("DeleteMulti fail")) |
| 107 } else { | 107 } else { |
| 108 cb(nil) | 108 cb(nil) |
| 109 } | 109 } |
| 110 } | 110 } |
| 111 return nil | 111 return nil |
| 112 } | 112 } |
| 113 | 113 |
| 114 type badStruct struct { | 114 type badStruct struct { |
| 115 ID int64 `gae:"$id"` | 115 ID int64 `gae:"$id"` |
| (...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 416 for i, fpls := range fplss { | 416 for i, fpls := range fplss { |
| 417 expect := int64(i + 1) | 417 expect := int64(i + 1) |
| 418 if i == 4 { | 418 if i == 4 { |
| 419 expect = 200 | 419 expect = 200 |
| 420 } | 420 } |
| 421 So(fpls.IntID, ShouldEqual, expect) | 421 So(fpls.IntID, ShouldEqual, expect) |
| 422 } | 422 } |
| 423 | 423 |
| 424 pm := PropertyMap{"Value": {MkProperty(0)}, "$ki
nd": {MkPropertyNI("Pmap")}} | 424 pm := PropertyMap{"Value": {MkProperty(0)}, "$ki
nd": {MkPropertyNI("Pmap")}} |
| 425 So(ds.Put(pm), ShouldBeNil) | 425 So(ds.Put(pm), ShouldBeNil) |
| 426 » » » » So(ds.KeyForObj(pm).Last().IntID, ShouldEqual, 1
) | 426 » » » » So(ds.KeyForObj(pm).IntID(), ShouldEqual, 1) |
| 427 }) | 427 }) |
| 428 | 428 |
| 429 Convey("[]P (map)", func() { | 429 Convey("[]P (map)", func() { |
| 430 pms := make([]PropertyMap, 7) | 430 pms := make([]PropertyMap, 7) |
| 431 for i := range pms { | 431 for i := range pms { |
| 432 pms[i] = PropertyMap{ | 432 pms[i] = PropertyMap{ |
| 433 "$kind": {MkProperty("Pmap")}, | 433 "$kind": {MkProperty("Pmap")}, |
| 434 "Value": {MkProperty(i)}, | 434 "Value": {MkProperty(i)}, |
| 435 } | 435 } |
| 436 if i == 4 { | 436 if i == 4 { |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 681 } | 681 } |
| 682 }) | 682 }) |
| 683 | 683 |
| 684 Convey("*[]P (map)", func() { | 684 Convey("*[]P (map)", func() { |
| 685 output := []PropertyMap(nil) | 685 output := []PropertyMap(nil) |
| 686 So(ds.GetAll(q, &output), ShouldBeNil) | 686 So(ds.GetAll(q, &output), ShouldBeNil) |
| 687 So(len(output), ShouldEqual, 5) | 687 So(len(output), ShouldEqual, 5) |
| 688 for i, o := range output { | 688 for i, o := range output { |
| 689 k, err := o.GetMeta("key") | 689 k, err := o.GetMeta("key") |
| 690 So(err, ShouldBeNil) | 690 So(err, ShouldBeNil) |
| 691 » » » » » So(k.(*Key).Last().IntID, ShouldEqual, i
+1) | 691 » » » » » So(k.(*Key).IntID(), ShouldEqual, i+1) |
| 692 So(o["Value"][0].Value().(int64), Should
Equal, i) | 692 So(o["Value"][0].Value().(int64), Should
Equal, i) |
| 693 } | 693 } |
| 694 }) | 694 }) |
| 695 | 695 |
| 696 Convey("*[]*P", func() { | 696 Convey("*[]*P", func() { |
| 697 output := []*FakePLS(nil) | 697 output := []*FakePLS(nil) |
| 698 So(ds.GetAll(q, &output), ShouldBeNil) | 698 So(ds.GetAll(q, &output), ShouldBeNil) |
| 699 So(len(output), ShouldEqual, 5) | 699 So(len(output), ShouldEqual, 5) |
| 700 for i, o := range output { | 700 for i, o := range output { |
| 701 So(o.gotLoaded, ShouldBeTrue) | 701 So(o.gotLoaded, ShouldBeTrue) |
| 702 So(o.IntID, ShouldEqual, i+1) | 702 So(o.IntID, ShouldEqual, i+1) |
| 703 So(o.Value, ShouldEqual, i) | 703 So(o.Value, ShouldEqual, i) |
| 704 } | 704 } |
| 705 }) | 705 }) |
| 706 | 706 |
| 707 Convey("*[]*P (map)", func() { | 707 Convey("*[]*P (map)", func() { |
| 708 output := []*PropertyMap(nil) | 708 output := []*PropertyMap(nil) |
| 709 So(ds.GetAll(q, &output), ShouldBeNil) | 709 So(ds.GetAll(q, &output), ShouldBeNil) |
| 710 So(len(output), ShouldEqual, 5) | 710 So(len(output), ShouldEqual, 5) |
| 711 for i, op := range output { | 711 for i, op := range output { |
| 712 o := *op | 712 o := *op |
| 713 k, err := o.GetMeta("key") | 713 k, err := o.GetMeta("key") |
| 714 So(err, ShouldBeNil) | 714 So(err, ShouldBeNil) |
| 715 » » » » » So(k.(*Key).Last().IntID, ShouldEqual, i
+1) | 715 » » » » » So(k.(*Key).IntID(), ShouldEqual, i+1) |
| 716 So(o["Value"][0].Value().(int64), Should
Equal, i) | 716 So(o["Value"][0].Value().(int64), Should
Equal, i) |
| 717 } | 717 } |
| 718 }) | 718 }) |
| 719 | 719 |
| 720 Convey("*[]*Key", func() { | 720 Convey("*[]*Key", func() { |
| 721 output := []*Key(nil) | 721 output := []*Key(nil) |
| 722 So(ds.GetAll(q, &output), ShouldBeNil) | 722 So(ds.GetAll(q, &output), ShouldBeNil) |
| 723 So(len(output), ShouldEqual, 5) | 723 So(len(output), ShouldEqual, 5) |
| 724 for i, k := range output { | 724 for i, k := range output { |
| 725 » » » » » So(k.Last().IntID, ShouldEqual, i+1) | 725 » » » » » So(k.IntID(), ShouldEqual, i+1) |
| 726 } | 726 } |
| 727 }) | 727 }) |
| 728 | 728 |
| 729 }) | 729 }) |
| 730 }) | 730 }) |
| 731 } | 731 } |
| 732 | 732 |
| 733 func TestRun(t *testing.T) { | 733 func TestRun(t *testing.T) { |
| 734 t.Parallel() | 734 t.Parallel() |
| 735 | 735 |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 821 i++ | 821 i++ |
| 822 return true | 822 return true |
| 823 }), ShouldBeNil) | 823 }), ShouldBeNil) |
| 824 }) | 824 }) |
| 825 | 825 |
| 826 Convey("*P (map)", func() { | 826 Convey("*P (map)", func() { |
| 827 i := 0 | 827 i := 0 |
| 828 So(ds.Run(q, func(pm *PropertyMap, _ CursorCB) b
ool { | 828 So(ds.Run(q, func(pm *PropertyMap, _ CursorCB) b
ool { |
| 829 k, err := pm.GetMeta("key") | 829 k, err := pm.GetMeta("key") |
| 830 So(err, ShouldBeNil) | 830 So(err, ShouldBeNil) |
| 831 » » » » » So(k.(*Key).Last().IntID, ShouldEqual, i
+1) | 831 » » » » » So(k.(*Key).IntID(), ShouldEqual, i+1) |
| 832 So((*pm)["Value"][0].Value(), ShouldEqua
l, i) | 832 So((*pm)["Value"][0].Value(), ShouldEqua
l, i) |
| 833 i++ | 833 i++ |
| 834 return true | 834 return true |
| 835 }), ShouldBeNil) | 835 }), ShouldBeNil) |
| 836 }) | 836 }) |
| 837 | 837 |
| 838 Convey("S", func() { | 838 Convey("S", func() { |
| 839 i := 0 | 839 i := 0 |
| 840 So(ds.Run(q, func(cs CommonStruct, _ CursorCB) b
ool { | 840 So(ds.Run(q, func(cs CommonStruct, _ CursorCB) b
ool { |
| 841 So(cs.ID, ShouldEqual, i+1) | 841 So(cs.ID, ShouldEqual, i+1) |
| (...skipping 12 matching lines...) Expand all Loading... |
| 854 i++ | 854 i++ |
| 855 return true | 855 return true |
| 856 }), ShouldBeNil) | 856 }), ShouldBeNil) |
| 857 }) | 857 }) |
| 858 | 858 |
| 859 Convey("P (map)", func() { | 859 Convey("P (map)", func() { |
| 860 i := 0 | 860 i := 0 |
| 861 So(ds.Run(q, func(pm PropertyMap, _ CursorCB) bo
ol { | 861 So(ds.Run(q, func(pm PropertyMap, _ CursorCB) bo
ol { |
| 862 k, err := pm.GetMeta("key") | 862 k, err := pm.GetMeta("key") |
| 863 So(err, ShouldBeNil) | 863 So(err, ShouldBeNil) |
| 864 » » » » » So(k.(*Key).Last().IntID, ShouldEqual, i
+1) | 864 » » » » » So(k.(*Key).IntID(), ShouldEqual, i+1) |
| 865 So(pm["Value"][0].Value(), ShouldEqual,
i) | 865 So(pm["Value"][0].Value(), ShouldEqual,
i) |
| 866 i++ | 866 i++ |
| 867 return true | 867 return true |
| 868 }), ShouldBeNil) | 868 }), ShouldBeNil) |
| 869 }) | 869 }) |
| 870 | 870 |
| 871 Convey("Key", func() { | 871 Convey("Key", func() { |
| 872 i := 0 | 872 i := 0 |
| 873 So(ds.Run(q, func(k *Key, _ CursorCB) bool { | 873 So(ds.Run(q, func(k *Key, _ CursorCB) bool { |
| 874 » » » » » So(k.Last().IntID, ShouldEqual, i+1) | 874 » » » » » So(k.IntID(), ShouldEqual, i+1) |
| 875 i++ | 875 i++ |
| 876 return true | 876 return true |
| 877 }), ShouldBeNil) | 877 }), ShouldBeNil) |
| 878 }) | 878 }) |
| 879 | 879 |
| 880 }) | 880 }) |
| 881 }) | 881 }) |
| 882 } | 882 } |
| OLD | NEW |