github.com/lianghucheng/zrddz@v0.0.0-20200923083010-c71f680932e2/src/gopkg.in/mgo.v2/txn/dockey_test.go (about) 1 package txn 2 3 import ( 4 "sort" 5 6 . "gopkg.in/check.v1" 7 ) 8 9 type DocKeySuite struct{} 10 11 var _ = Suite(&DocKeySuite{}) 12 13 type T struct { 14 A int 15 B string 16 } 17 18 type T2 struct { 19 A int 20 B string 21 } 22 23 type T3 struct { 24 A int 25 B string 26 } 27 28 type T4 struct { 29 A int 30 B string 31 } 32 33 type T5 struct { 34 F int 35 Q string 36 } 37 38 type T6 struct { 39 A int 40 B string 41 } 42 43 type T7 struct { 44 A bool 45 B float64 46 } 47 48 type T8 struct { 49 A int 50 B string 51 } 52 53 type T9 struct { 54 A int 55 B string 56 C bool 57 } 58 59 type T10 struct { 60 C int `bson:"a"` 61 D string `bson:"b,omitempty"` 62 } 63 64 type T11 struct { 65 C int 66 D string 67 } 68 69 type T12 struct { 70 S string 71 } 72 73 type T13 struct { 74 p, q, r bool 75 S string 76 } 77 78 var docKeysTests = [][]docKeys{ 79 {{ 80 {"c", 1}, 81 {"c", 5}, 82 {"c", 2}, 83 }, { 84 {"c", 1}, 85 {"c", 2}, 86 {"c", 5}, 87 }}, {{ 88 {"c", "foo"}, 89 {"c", "bar"}, 90 {"c", "bob"}, 91 }, { 92 {"c", "bar"}, 93 {"c", "bob"}, 94 {"c", "foo"}, 95 }}, {{ 96 {"c", 0.2}, 97 {"c", 0.07}, 98 {"c", 0.9}, 99 }, { 100 {"c", 0.07}, 101 {"c", 0.2}, 102 {"c", 0.9}, 103 }}, {{ 104 {"c", true}, 105 {"c", false}, 106 {"c", true}, 107 }, { 108 {"c", false}, 109 {"c", true}, 110 {"c", true}, 111 }}, {{ 112 {"c", T{1, "b"}}, 113 {"c", T{1, "a"}}, 114 {"c", T{0, "b"}}, 115 {"c", T{0, "a"}}, 116 }, { 117 {"c", T{0, "a"}}, 118 {"c", T{0, "b"}}, 119 {"c", T{1, "a"}}, 120 {"c", T{1, "b"}}, 121 }}, {{ 122 {"c", T{1, "a"}}, 123 {"c", T{0, "a"}}, 124 }, { 125 {"c", T{0, "a"}}, 126 {"c", T{1, "a"}}, 127 }}, {{ 128 {"c", T3{0, "b"}}, 129 {"c", T2{1, "b"}}, 130 {"c", T3{1, "a"}}, 131 {"c", T2{0, "a"}}, 132 }, { 133 {"c", T2{0, "a"}}, 134 {"c", T3{0, "b"}}, 135 {"c", T3{1, "a"}}, 136 {"c", T2{1, "b"}}, 137 }}, {{ 138 {"c", T5{1, "b"}}, 139 {"c", T4{1, "b"}}, 140 {"c", T5{0, "a"}}, 141 {"c", T4{0, "a"}}, 142 }, { 143 {"c", T4{0, "a"}}, 144 {"c", T5{0, "a"}}, 145 {"c", T4{1, "b"}}, 146 {"c", T5{1, "b"}}, 147 }}, {{ 148 {"c", T6{1, "b"}}, 149 {"c", T7{true, 0.2}}, 150 {"c", T6{0, "a"}}, 151 {"c", T7{false, 0.04}}, 152 }, { 153 {"c", T6{0, "a"}}, 154 {"c", T6{1, "b"}}, 155 {"c", T7{false, 0.04}}, 156 {"c", T7{true, 0.2}}, 157 }}, {{ 158 {"c", T9{1, "b", true}}, 159 {"c", T8{1, "b"}}, 160 {"c", T9{0, "a", false}}, 161 {"c", T8{0, "a"}}, 162 }, { 163 {"c", T9{0, "a", false}}, 164 {"c", T8{0, "a"}}, 165 {"c", T9{1, "b", true}}, 166 {"c", T8{1, "b"}}, 167 }}, {{ 168 {"b", 2}, 169 {"a", 5}, 170 {"c", 2}, 171 {"b", 1}, 172 }, { 173 {"a", 5}, 174 {"b", 1}, 175 {"b", 2}, 176 {"c", 2}, 177 }}, {{ 178 {"c", T11{1, "a"}}, 179 {"c", T11{1, "a"}}, 180 {"c", T10{1, "a"}}, 181 }, { 182 {"c", T10{1, "a"}}, 183 {"c", T11{1, "a"}}, 184 {"c", T11{1, "a"}}, 185 }}, {{ 186 {"c", T12{"a"}}, 187 {"c", T13{false, true, false, "a"}}, 188 {"c", T12{"b"}}, 189 {"c", T13{false, true, false, "b"}}, 190 }, { 191 {"c", T12{"a"}}, 192 {"c", T13{false, true, false, "a"}}, 193 {"c", T12{"b"}}, 194 {"c", T13{false, true, false, "b"}}, 195 }}, 196 } 197 198 func (s *DocKeySuite) TestSort(c *C) { 199 for _, test := range docKeysTests { 200 keys := test[0] 201 expected := test[1] 202 sort.Sort(keys) 203 c.Check(keys, DeepEquals, expected) 204 } 205 }