-
Notifications
You must be signed in to change notification settings - Fork 105
/
rand.go
56 lines (49 loc) · 1.66 KB
/
rand.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package testutils
import (
"github.com/axelarnetwork/axelar-core/testutils/rand"
"github.com/axelarnetwork/axelar-core/x/nexus/exported"
tss "github.com/axelarnetwork/axelar-core/x/tss/exported"
)
// RandomChain returns a random nexus chain
func RandomChain() exported.Chain {
return exported.Chain{
Name: RandomChainName(),
Module: rand.NormalizedStrBetween(5, 20),
SupportsForeignAssets: true,
KeyType: tss.None,
}
}
// RandomChainName generates a random chain name
func RandomChainName() exported.ChainName {
return exported.ChainName(rand.NormalizedStrBetween(5, 20))
}
// RandomTransferID generates a random transfer ID
func RandomTransferID() exported.TransferID {
return exported.TransferID(rand.PosI64())
}
// RandomDirection generates a random transfer direction
func RandomDirection() exported.TransferDirection {
return exported.TransferDirection(rand.I64Between(1, int64(len(exported.TransferDirection_name))))
}
// RandomCrossChainAddress generates a random cross chain address
func RandomCrossChainAddress() exported.CrossChainAddress {
return exported.CrossChainAddress{
Chain: RandomChain(),
Address: rand.AccAddr().String(),
}
}
// RandomMessage generates a random message
func RandomMessage(statuses ...exported.GeneralMessage_Status) exported.GeneralMessage {
if len(statuses) == 0 {
statuses = []exported.GeneralMessage_Status{exported.Approved, exported.Sent, exported.Executed, exported.Failed}
}
coin := rand.Coin()
return exported.NewGeneralMessage(
rand.StrBetween(10, 20),
RandomCrossChainAddress(),
RandomCrossChainAddress(),
rand.Bytes(32),
rand.Of(statuses...),
&coin,
)
}