github.com/keysonZZZ/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgTime/Period1_test.go (about) 1 package kmgTime 2 3 import ( 4 "testing" 5 6 "sort" 7 "github.com/bronze1man/kmg/kmgTest" 8 ) 9 10 //approach 1 11 type ScratchPeriodList1 []ScratchPeriod1 12 13 func (p ScratchPeriodList1) Len() int { 14 return len(p) 15 } 16 func (p ScratchPeriodList1) Less(i, j int) bool { 17 return p[i].Period.Start.Before(p[j].Period.Start) 18 } 19 func (p ScratchPeriodList1) Swap(i, j int) { 20 p[i], p[j] = p[j], p[i] 21 } 22 23 type ScratchPeriod1 struct { 24 Period 25 ItemList []int //a list of item user can get at this period 26 } 27 28 func (p ScratchPeriod1) GetPeriod() Period { 29 return p.Period 30 } 31 func TestGetPeriodFromGenericSortedList(ot *testing.T) { 32 periodList1 := ScratchPeriodList1{ 33 { 34 Period: Period{Start: MustFromMysqlFormat("2001-01-00 23:30:00"), End: MustFromMysqlFormat("2001-01-01 23:30:00")}, 35 ItemList: []int{1, 2}, 36 }, 37 { 38 Period: Period{Start: MustFromMysqlFormat("2001-01-03 23:30:00"), End: MustFromMysqlFormat("2001-01-04 23:30:00")}, 39 ItemList: []int{2, 3}, 40 }, 41 { 42 Period: Period{Start: MustFromMysqlFormat("2001-01-02 23:30:00"), End: MustFromMysqlFormat("2001-01-03 23:30:00")}, 43 ItemList: []int{3, 4}, 44 }, 45 } 46 sort.Sort(periodList1) 47 i, err := GetPeriodFromGenericSortedList(MustFromMysqlFormat("2001-01-01 23:00:00"), periodList1) 48 kmgTest.Equal(err, nil) 49 kmgTest.Equal(periodList1[i].ItemList, []int{1, 2}) 50 i, err = GetPeriodFromGenericSortedList(MustFromMysqlFormat("2001-01-03 23:00:00"), periodList1) 51 kmgTest.Equal(err, nil) 52 kmgTest.Equal(periodList1[i].ItemList, []int{3, 4}) 53 }