6 "github.com/bytom/blockchain/txbuilder"
7 "github.com/bytom/protocol/bc"
10 func TestMergeSpendAction(t *testing.T) {
11 testBTM := &bc.AssetID{}
12 if err := testBTM.UnmarshalText([]byte("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")); err != nil {
16 testAssetID1 := &bc.AssetID{}
17 if err := testAssetID1.UnmarshalText([]byte("50ec80b6bc48073f6aa8fa045131a71213c33f3681203b15ddc2e4b81f1f4730")); err != nil {
21 testAssetID2 := &bc.AssetID{}
22 if err := testAssetID2.UnmarshalText([]byte("43c6946d092b2959c1a82e90b282c68fca63e66de289048f6acd6cea9383c79c")); err != nil {
27 testActions []txbuilder.Action
28 wantActions []txbuilder.Action
33 testActions: []txbuilder.Action{
34 txbuilder.Action(&spendAction{
35 AssetAmount: bc.AssetAmount{
39 AccountID: "test_account",
41 txbuilder.Action(&spendAction{
42 AssetAmount: bc.AssetAmount{
46 AccountID: "test_account",
48 txbuilder.Action(&spendAction{
49 AssetAmount: bc.AssetAmount{
53 AccountID: "test_account",
55 txbuilder.Action(&spendAction{
56 AssetAmount: bc.AssetAmount{
57 AssetId: testAssetID1,
60 AccountID: "test_account",
63 wantActions: []txbuilder.Action{
64 txbuilder.Action(&spendAction{
65 AssetAmount: bc.AssetAmount{
69 AccountID: "test_account",
71 txbuilder.Action(&spendAction{
72 AssetAmount: bc.AssetAmount{
73 AssetId: testAssetID1,
76 AccountID: "test_account",
83 testActions: []txbuilder.Action{
84 txbuilder.Action(&spendAction{
85 AssetAmount: bc.AssetAmount{
89 AccountID: "test_account",
91 txbuilder.Action(&spendAction{
92 AssetAmount: bc.AssetAmount{
93 AssetId: testAssetID1,
96 AccountID: "test_account",
98 txbuilder.Action(&spendAction{
99 AssetAmount: bc.AssetAmount{
103 AccountID: "test_account",
105 txbuilder.Action(&spendAction{
106 AssetAmount: bc.AssetAmount{
107 AssetId: testAssetID1,
110 AccountID: "test_account",
113 wantActions: []txbuilder.Action{
114 txbuilder.Action(&spendAction{
115 AssetAmount: bc.AssetAmount{
119 AccountID: "test_account",
121 txbuilder.Action(&spendAction{
122 AssetAmount: bc.AssetAmount{
123 AssetId: testAssetID1,
126 AccountID: "test_account",
133 testActions: []txbuilder.Action{
134 txbuilder.Action(&spendAction{
135 AssetAmount: bc.AssetAmount{
139 AccountID: "test_account",
141 txbuilder.Action(&spendAction{
142 AssetAmount: bc.AssetAmount{
143 AssetId: testAssetID1,
146 AccountID: "test_account",
148 txbuilder.Action(&spendAction{
149 AssetAmount: bc.AssetAmount{
150 AssetId: testAssetID2,
153 AccountID: "test_account",
155 txbuilder.Action(&spendAction{
156 AssetAmount: bc.AssetAmount{
157 AssetId: testAssetID1,
160 AccountID: "test_account",
162 txbuilder.Action(&spendAction{
163 AssetAmount: bc.AssetAmount{
164 AssetId: testAssetID2,
167 AccountID: "test_account",
170 wantActions: []txbuilder.Action{
171 txbuilder.Action(&spendAction{
172 AssetAmount: bc.AssetAmount{
176 AccountID: "test_account",
178 txbuilder.Action(&spendAction{
179 AssetAmount: bc.AssetAmount{
180 AssetId: testAssetID1,
183 AccountID: "test_account",
185 txbuilder.Action(&spendAction{
186 AssetAmount: bc.AssetAmount{
187 AssetId: testAssetID2,
190 AccountID: "test_account",
197 testActions: []txbuilder.Action{
198 txbuilder.Action(&spendAction{
199 AssetAmount: bc.AssetAmount{
203 AccountID: "test_account",
205 txbuilder.Action(&spendAction{
206 AssetAmount: bc.AssetAmount{
210 AccountID: "test_account1",
212 txbuilder.Action(&spendAction{
213 AssetAmount: bc.AssetAmount{
217 AccountID: "test_account",
219 txbuilder.Action(&spendAction{
220 AssetAmount: bc.AssetAmount{
221 AssetId: testAssetID1,
224 AccountID: "test_account1",
227 wantActions: []txbuilder.Action{
228 txbuilder.Action(&spendAction{
229 AssetAmount: bc.AssetAmount{
233 AccountID: "test_account",
235 txbuilder.Action(&spendAction{
236 AssetAmount: bc.AssetAmount{
240 AccountID: "test_account1",
242 txbuilder.Action(&spendAction{
243 AssetAmount: bc.AssetAmount{
244 AssetId: testAssetID1,
247 AccountID: "test_account1",
254 testActions: []txbuilder.Action{
255 txbuilder.Action(&spendAction{
256 AssetAmount: bc.AssetAmount{
260 AccountID: "test_account",
262 txbuilder.Action(&spendAction{
263 AssetAmount: bc.AssetAmount{
264 AssetId: testAssetID1,
267 AccountID: "test_account1",
269 txbuilder.Action(&spendAction{
270 AssetAmount: bc.AssetAmount{
271 AssetId: testAssetID2,
274 AccountID: "test_account2",
277 wantActions: []txbuilder.Action{
278 txbuilder.Action(&spendAction{
279 AssetAmount: bc.AssetAmount{
283 AccountID: "test_account",
285 txbuilder.Action(&spendAction{
286 AssetAmount: bc.AssetAmount{
287 AssetId: testAssetID1,
290 AccountID: "test_account1",
292 txbuilder.Action(&spendAction{
293 AssetAmount: bc.AssetAmount{
294 AssetId: testAssetID2,
297 AccountID: "test_account2",
305 for _, c := range cases {
306 gotActions := MergeSpendAction(c.testActions)
308 gotMap := make(map[string]uint64)
309 wantMap := make(map[string]uint64)
310 for _, got := range gotActions {
311 switch got := got.(type) {
313 gotKey := got.AssetId.String() + got.AccountID
314 gotMap[gotKey] = got.Amount
320 for _, want := range c.wantActions {
321 switch want := want.(type) {
323 wantKey := want.AssetId.String() + want.AccountID
324 wantMap[wantKey] = want.Amount
330 for key := range gotMap {
331 if gotMap[key] != wantMap[key] {
332 t.Fatalf("gotMap[%s]=%v, wantMap[%s]=%v", key, gotMap[key], key, wantMap[key])
336 if len(gotActions) != c.wantActionCount {
337 t.Fatalf("number of gotActions=%d, wantActions=%d", len(gotActions), c.wantActionCount)