mirror of
https://github.com/schollz/cowyo.git
synced 2023-08-10 21:13:00 +03:00
206 lines
2.7 KiB
Go
206 lines
2.7 KiB
Go
package txn
|
|
|
|
import (
|
|
"sort"
|
|
|
|
. "gopkg.in/check.v1"
|
|
)
|
|
|
|
type DocKeySuite struct{}
|
|
|
|
var _ = Suite(&DocKeySuite{})
|
|
|
|
type T struct {
|
|
A int
|
|
B string
|
|
}
|
|
|
|
type T2 struct {
|
|
A int
|
|
B string
|
|
}
|
|
|
|
type T3 struct {
|
|
A int
|
|
B string
|
|
}
|
|
|
|
type T4 struct {
|
|
A int
|
|
B string
|
|
}
|
|
|
|
type T5 struct {
|
|
F int
|
|
Q string
|
|
}
|
|
|
|
type T6 struct {
|
|
A int
|
|
B string
|
|
}
|
|
|
|
type T7 struct {
|
|
A bool
|
|
B float64
|
|
}
|
|
|
|
type T8 struct {
|
|
A int
|
|
B string
|
|
}
|
|
|
|
type T9 struct {
|
|
A int
|
|
B string
|
|
C bool
|
|
}
|
|
|
|
type T10 struct {
|
|
C int `bson:"a"`
|
|
D string `bson:"b,omitempty"`
|
|
}
|
|
|
|
type T11 struct {
|
|
C int
|
|
D string
|
|
}
|
|
|
|
type T12 struct {
|
|
S string
|
|
}
|
|
|
|
type T13 struct {
|
|
p, q, r bool
|
|
S string
|
|
}
|
|
|
|
var docKeysTests = [][]docKeys{
|
|
{{
|
|
{"c", 1},
|
|
{"c", 5},
|
|
{"c", 2},
|
|
}, {
|
|
{"c", 1},
|
|
{"c", 2},
|
|
{"c", 5},
|
|
}}, {{
|
|
{"c", "foo"},
|
|
{"c", "bar"},
|
|
{"c", "bob"},
|
|
}, {
|
|
{"c", "bar"},
|
|
{"c", "bob"},
|
|
{"c", "foo"},
|
|
}}, {{
|
|
{"c", 0.2},
|
|
{"c", 0.07},
|
|
{"c", 0.9},
|
|
}, {
|
|
{"c", 0.07},
|
|
{"c", 0.2},
|
|
{"c", 0.9},
|
|
}}, {{
|
|
{"c", true},
|
|
{"c", false},
|
|
{"c", true},
|
|
}, {
|
|
{"c", false},
|
|
{"c", true},
|
|
{"c", true},
|
|
}}, {{
|
|
{"c", T{1, "b"}},
|
|
{"c", T{1, "a"}},
|
|
{"c", T{0, "b"}},
|
|
{"c", T{0, "a"}},
|
|
}, {
|
|
{"c", T{0, "a"}},
|
|
{"c", T{0, "b"}},
|
|
{"c", T{1, "a"}},
|
|
{"c", T{1, "b"}},
|
|
}}, {{
|
|
{"c", T{1, "a"}},
|
|
{"c", T{0, "a"}},
|
|
}, {
|
|
{"c", T{0, "a"}},
|
|
{"c", T{1, "a"}},
|
|
}}, {{
|
|
{"c", T3{0, "b"}},
|
|
{"c", T2{1, "b"}},
|
|
{"c", T3{1, "a"}},
|
|
{"c", T2{0, "a"}},
|
|
}, {
|
|
{"c", T2{0, "a"}},
|
|
{"c", T3{0, "b"}},
|
|
{"c", T3{1, "a"}},
|
|
{"c", T2{1, "b"}},
|
|
}}, {{
|
|
{"c", T5{1, "b"}},
|
|
{"c", T4{1, "b"}},
|
|
{"c", T5{0, "a"}},
|
|
{"c", T4{0, "a"}},
|
|
}, {
|
|
{"c", T4{0, "a"}},
|
|
{"c", T5{0, "a"}},
|
|
{"c", T4{1, "b"}},
|
|
{"c", T5{1, "b"}},
|
|
}}, {{
|
|
{"c", T6{1, "b"}},
|
|
{"c", T7{true, 0.2}},
|
|
{"c", T6{0, "a"}},
|
|
{"c", T7{false, 0.04}},
|
|
}, {
|
|
{"c", T6{0, "a"}},
|
|
{"c", T6{1, "b"}},
|
|
{"c", T7{false, 0.04}},
|
|
{"c", T7{true, 0.2}},
|
|
}}, {{
|
|
{"c", T9{1, "b", true}},
|
|
{"c", T8{1, "b"}},
|
|
{"c", T9{0, "a", false}},
|
|
{"c", T8{0, "a"}},
|
|
}, {
|
|
{"c", T9{0, "a", false}},
|
|
{"c", T8{0, "a"}},
|
|
{"c", T9{1, "b", true}},
|
|
{"c", T8{1, "b"}},
|
|
}}, {{
|
|
{"b", 2},
|
|
{"a", 5},
|
|
{"c", 2},
|
|
{"b", 1},
|
|
}, {
|
|
{"a", 5},
|
|
{"b", 1},
|
|
{"b", 2},
|
|
{"c", 2},
|
|
}}, {{
|
|
{"c", T11{1, "a"}},
|
|
{"c", T11{1, "a"}},
|
|
{"c", T10{1, "a"}},
|
|
}, {
|
|
{"c", T10{1, "a"}},
|
|
{"c", T11{1, "a"}},
|
|
{"c", T11{1, "a"}},
|
|
}}, {{
|
|
{"c", T12{"a"}},
|
|
{"c", T13{false, true, false, "a"}},
|
|
{"c", T12{"b"}},
|
|
{"c", T13{false, true, false, "b"}},
|
|
}, {
|
|
{"c", T12{"a"}},
|
|
{"c", T13{false, true, false, "a"}},
|
|
{"c", T12{"b"}},
|
|
{"c", T13{false, true, false, "b"}},
|
|
}},
|
|
}
|
|
|
|
func (s *DocKeySuite) TestSort(c *C) {
|
|
for _, test := range docKeysTests {
|
|
keys := test[0]
|
|
expected := test[1]
|
|
sort.Sort(keys)
|
|
c.Check(keys, DeepEquals, expected)
|
|
}
|
|
}
|