6 "github.com/bytom/vapor/application/mov/common"
7 "github.com/bytom/vapor/application/mov/mock"
8 "github.com/bytom/vapor/protocol/bc"
9 "github.com/bytom/vapor/testutil"
13 asset1 = bc.NewAssetID([32]byte{1})
14 asset2 = bc.NewAssetID([32]byte{2})
15 asset3 = bc.NewAssetID([32]byte{3})
16 asset4 = bc.NewAssetID([32]byte{4})
18 order1 = &common.Order{FromAssetID: assetID1, ToAssetID: assetID2, RatioNumerator: 1, RatioDenominator: 10}
19 order2 = &common.Order{FromAssetID: assetID1, ToAssetID: assetID2, RatioNumerator: 2, RatioDenominator: 10}
20 order3 = &common.Order{FromAssetID: assetID1, ToAssetID: assetID2, RatioNumerator: 3, RatioDenominator: 10}
21 order4 = &common.Order{FromAssetID: assetID1, ToAssetID: assetID2, RatioNumerator: 4, RatioDenominator: 10}
22 order5 = &common.Order{FromAssetID: assetID1, ToAssetID: assetID2, RatioNumerator: 5, RatioDenominator: 10}
25 func TestTradePairIterator(t *testing.T) {
28 storeTradePairs []*common.TradePair
29 wantTradePairs []*common.TradePair
33 storeTradePairs: []*common.TradePair{
47 wantTradePairs: []*common.TradePair{
63 desc: "num of trade pairs more than one return",
64 storeTradePairs: []*common.TradePair{
82 wantTradePairs: []*common.TradePair{
102 desc: "store is empty",
103 storeTradePairs: []*common.TradePair{},
104 wantTradePairs: []*common.TradePair{},
108 for i, c := range cases {
109 store := mock.NewMovStore(c.storeTradePairs, nil)
110 var gotTradePairs []*common.TradePair
111 iterator := NewTradePairIterator(store)
112 for iterator.HasNext() {
113 gotTradePairs = append(gotTradePairs, iterator.Next())
115 if !testutil.DeepEqual(c.wantTradePairs, gotTradePairs) {
116 t.Errorf("#%d(%s):got trade pairs is not equals want trade pairs", i, c.desc)
121 func TestOrderIterator(t *testing.T) {
124 tradePair *common.TradePair
125 storeOrders []*common.Order
126 wantOrders []*common.Order
130 tradePair: &common.TradePair{FromAssetID: assetID1, ToAssetID: assetID2},
131 storeOrders: []*common.Order{order1, order2, order3},
132 wantOrders: []*common.Order{order1, order2, order3},
135 desc: "num of orders more than one return",
136 tradePair: &common.TradePair{FromAssetID: assetID1, ToAssetID: assetID2},
137 storeOrders: []*common.Order{order1, order2, order3, order4, order5},
138 wantOrders: []*common.Order{order1, order2, order3, order4, order5},
141 desc: "only one order",
142 tradePair: &common.TradePair{FromAssetID: assetID1, ToAssetID: assetID2},
143 storeOrders: []*common.Order{order1},
144 wantOrders: []*common.Order{order1},
147 desc: "store is empty",
148 tradePair: &common.TradePair{FromAssetID: assetID1, ToAssetID: assetID2},
149 storeOrders: []*common.Order{},
150 wantOrders: []*common.Order{},
154 for i, c := range cases {
155 store := mock.NewMovStore(nil, c.storeOrders)
157 var gotOrders []*common.Order
158 iterator := NewOrderIterator(store, c.tradePair)
159 for iterator.HasNext() {
160 gotOrders = append(gotOrders, iterator.NextBatch()...)
162 if !testutil.DeepEqual(c.wantOrders, gotOrders) {
163 t.Errorf("#%d(%s):got orders it not equals want orders", i, c.desc)