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  }