solidifier_test.go 1.44 KiB
package tangle
import (
"sync"
"testing"
"github.com/iotaledger/goshimmer/packages/events"
"github.com/iotaledger/goshimmer/packages/model/value_transaction"
"github.com/iotaledger/goshimmer/packages/ternary"
"github.com/iotaledger/goshimmer/plugins/gossip"
)
func TestSolidifier(t *testing.T) {
// initialize plugin
configureTransactionDatabase(nil)
configureTransactionMetaDataDatabase(nil)
configureApproversDatabase(nil)
configureSolidifier(nil)
// create transactions and chain them together
transaction1 := value_transaction.New()
transaction1.SetNonce(ternary.Trytes("99999999999999999999999999A"))
transaction2 := value_transaction.New()
transaction2.SetBranchTransactionHash(transaction1.GetHash())
transaction3 := value_transaction.New()
transaction3.SetBranchTransactionHash(transaction2.GetHash())
transaction4 := value_transaction.New()
transaction4.SetBranchTransactionHash(transaction3.GetHash())
// setup event handlers
var wg sync.WaitGroup
Events.TransactionSolid.Attach(events.NewClosure(func(transaction *value_transaction.ValueTransaction) {
wg.Done()
}))
// issue transactions
wg.Add(4)
gossip.Events.ReceiveTransaction.Trigger(transaction1.MetaTransaction)
gossip.Events.ReceiveTransaction.Trigger(transaction2.MetaTransaction)
gossip.Events.ReceiveTransaction.Trigger(transaction3.MetaTransaction)
gossip.Events.ReceiveTransaction.Trigger(transaction4.MetaTransaction)
// wait until all are solid
wg.Wait()
}