github.com/onflow/flow-go@v0.35.7-crescendo-preview.23-atree-inlining/model/flow/execution_receipt_test.go (about) 1 package flow_test 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 8 "github.com/onflow/flow-go/model/flow" 9 "github.com/onflow/flow-go/utils/unittest" 10 ) 11 12 // TestExecutionReceiptGroupBy tests the GroupBy method of ExecutionReceiptList: 13 // * grouping should preserve order and multiplicity of elements 14 // * group for unknown identifier should be empty 15 func TestExecutionReceiptGroupBy(t *testing.T) { 16 17 er1 := unittest.ExecutionReceiptFixture() 18 er2 := unittest.ExecutionReceiptFixture() 19 er3 := unittest.ExecutionReceiptFixture() 20 21 idA := unittest.IdentifierFixture() 22 idB := unittest.IdentifierFixture() 23 grouperFunc := func(er *flow.ExecutionReceipt) flow.Identifier { 24 switch er.ID() { 25 case er1.ID(): 26 return idA 27 case er2.ID(): 28 return idB 29 case er3.ID(): 30 return idA 31 default: 32 panic("unexpected ExecutionReceipt") 33 } 34 } 35 36 groups := flow.ExecutionReceiptList{er1, er2, er3, er1}.GroupBy(grouperFunc) 37 assert.Equal(t, 2, groups.NumberGroups()) 38 assert.Equal(t, flow.ExecutionReceiptList{er1, er3, er1}, groups.GetGroup(idA)) 39 assert.Equal(t, flow.ExecutionReceiptList{er2}, groups.GetGroup(idB)) 40 41 unknown := groups.GetGroup(unittest.IdentifierFixture()) 42 assert.Equal(t, 0, unknown.Size()) 43 } 44 45 // TestExecutionReceiptMetaGroupBy tests the GroupBy method of ExecutionReceiptMetaList: 46 // * grouping should preserve order and multiplicity of elements 47 // * group for unknown identifier should be empty 48 func TestExecutionReceiptMetaGroupBy(t *testing.T) { 49 50 er1 := unittest.ExecutionReceiptFixture().Meta() 51 er2 := unittest.ExecutionReceiptFixture().Meta() 52 er3 := unittest.ExecutionReceiptFixture().Meta() 53 54 idA := unittest.IdentifierFixture() 55 idB := unittest.IdentifierFixture() 56 grouperFunc := func(er *flow.ExecutionReceiptMeta) flow.Identifier { 57 switch er.ID() { 58 case er1.ID(): 59 return idA 60 case er2.ID(): 61 return idB 62 case er3.ID(): 63 return idA 64 default: 65 panic("unexpected ExecutionReceipt") 66 } 67 } 68 69 groups := flow.ExecutionReceiptMetaList{er1, er2, er3, er1}.GroupBy(grouperFunc) 70 assert.Equal(t, 2, groups.NumberGroups()) 71 assert.Equal(t, flow.ExecutionReceiptMetaList{er1, er3, er1}, groups.GetGroup(idA)) 72 assert.Equal(t, flow.ExecutionReceiptMetaList{er2}, groups.GetGroup(idB)) 73 74 unknown := groups.GetGroup(unittest.IdentifierFixture()) 75 assert.Equal(t, 0, unknown.Size()) 76 }