github.com/filecoin-project/specs-actors/v4@v4.0.2/actors/builtin/testing_test.go (about) 1 package builtin_test 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 8 "github.com/filecoin-project/specs-actors/v4/actors/builtin" 9 ) 10 11 func TestMessageAccumulator(t *testing.T) { 12 t.Run("basics", func(t *testing.T) { 13 acc := &builtin.MessageAccumulator{} 14 assert.Equal(t, []string(nil), acc.Messages()) 15 assert.True(t, acc.Messages() == nil) 16 assert.True(t, acc.IsEmpty()) 17 18 acc.Add("one") 19 assert.False(t, acc.IsEmpty()) 20 acc.Addf("tw%s", "o") 21 assert.False(t, acc.IsEmpty()) 22 assert.Equal(t, []string{"one", "two"}, acc.Messages()) 23 }) 24 25 t.Run("prefix", func(t *testing.T) { 26 acc := &builtin.MessageAccumulator{} 27 accA := acc.WithPrefix("A") 28 29 accA.Add("aa") 30 assert.Equal(t, []string{"Aaa"}, acc.Messages()) 31 assert.Equal(t, []string{"Aaa"}, accA.Messages()) 32 33 accAB := accA.WithPrefix("B") 34 accAB.Add("bb") 35 assert.Equal(t, []string{"Aaa", "ABbb"}, acc.Messages()) 36 assert.Equal(t, []string{"Aaa", "ABbb"}, accA.Messages()) 37 assert.Equal(t, []string{"Aaa", "ABbb"}, accA.Messages()) 38 39 func() { 40 acc := acc.WithPrefix("C") // Shadow 41 acc.Add("cc") 42 assert.Equal(t, []string{"Aaa", "ABbb", "Ccc"}, acc.Messages()) 43 }() 44 assert.Equal(t, []string{"Aaa", "ABbb", "Ccc"}, acc.Messages()) 45 }) 46 47 t.Run("merge", func(t *testing.T) { 48 acc := &builtin.MessageAccumulator{} 49 acc1 := &builtin.MessageAccumulator{} 50 51 acc1.WithPrefix("A").Add("a1") 52 acc1.WithPrefix("A").Add("a2") 53 54 acc.AddAll(acc1) 55 acc.WithPrefix("B").AddAll(acc1) 56 57 assert.Equal(t, []string{"Aa1", "Aa2", "BAa1", "BAa2"}, acc.Messages()) 58 }) 59 }