Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(476)

Side by Side Diff: common/data/sortby/sortby_test.go

Issue 2657733002: Add sort function helper library. (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« common/data/sortby/sortby.go ('K') | « common/data/sortby/sortby.go ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 package sortby
Vadim Sh. 2017/01/25 03:43:34 copyright
iannucci 2017/01/25 03:47:24 Done.
2
3 import (
4 "sort"
5 "testing"
6
7 . "github.com/smartystreets/goconvey/convey"
8 )
9
10 type CoolStruct struct {
11 A int
12 B int
13 C int
14 }
15
16 type CoolStructSlice []CoolStruct
17
18 func (s CoolStructSlice) Len() int { return len(s) }
19 func (s CoolStructSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
20
21 // these could be defined inline inside of the Less function, too.
22 func (s CoolStructSlice) LessA(i, j int) bool { return s[i].A < s[j].A }
23 func (s CoolStructSlice) LessB(i, j int) bool { return s[i].B < s[j].B }
24 func (s CoolStructSlice) LessC(i, j int) bool { return s[i].C < s[j].C }
25
26 func (s CoolStructSlice) Less(i, j int) bool {
27 return Chain{s.LessA, s.LessB, s.LessC}.Use(i, j)
28 }
29
30 func TestSortBy(t *testing.T) {
31 t.Parallel()
32
33 Convey("sortby", t, func() {
34 s := CoolStructSlice{
35 {194, 771, 222},
Vadim Sh. 2017/01/25 03:43:34 add some partially equal keys, to actually hit the
iannucci 2017/01/25 03:47:24 I just generated these with python, I'll add some
36 {209, 28, 300},
37 {413, 639, 772},
38 {14, 761, 759},
39 {866, 821, 447},
40 {447, 373, 817},
41 {132, 510, 149},
42 {778, 513, 156},
43 {713, 831, 596},
44 {288, 83, 898},
45 {679, 688, 903},
46 {864, 100, 199},
47 {229, 975, 648},
48 {381, 290, 156},
49 {311, 614, 434},
50 }
51
52 sort.Sort(s)
53
54 So(s, ShouldResemble, CoolStructSlice{
55 {14, 761, 759},
56 {132, 510, 149},
57 {194, 771, 222},
58 {209, 28, 300},
59 {229, 975, 648},
60 {288, 83, 898},
61 {311, 614, 434},
62 {381, 290, 156},
63 {413, 639, 772},
64 {447, 373, 817},
65 {679, 688, 903},
66 {713, 831, 596},
67 {778, 513, 156},
68 {864, 100, 199},
69 {866, 821, 447},
70 })
71 })
72 }
OLDNEW
« common/data/sortby/sortby.go ('K') | « common/data/sortby/sortby.go ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698