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  }