@@ -130,6 +130,64 @@ func TestTransferAction(t *testing.T) {
130
130
}
131
131
}
132
132
133
+ // TestMultiTransfer shows an example of reusing the same store for multiple sequential action invocations.
134
+ func TestMultiTransfer (t * testing.T ) {
135
+ addrAlice := codectest .NewRandomAddress ()
136
+ addrBob := codectest .NewRandomAddress ()
137
+
138
+ store := chaintest .NewInMemoryStore ()
139
+ require .NoError (t , storage .SetBalance (context .Background (), store , addrAlice , 1 ))
140
+
141
+ tests := []chaintest.ActionTest {
142
+ {
143
+ Name : "TransferToBob" ,
144
+ Actor : addrAlice ,
145
+ Action : & Transfer {
146
+ To : addrBob ,
147
+ Value : 1 ,
148
+ },
149
+ State : store ,
150
+ Assertion : func (ctx context.Context , t * testing.T , store state.Mutable ) {
151
+ receiverBalance , err := storage .GetBalance (ctx , store , addrBob )
152
+ require .NoError (t , err )
153
+ require .Equal (t , receiverBalance , uint64 (1 ))
154
+ senderBalance , err := storage .GetBalance (ctx , store , addrAlice )
155
+ require .NoError (t , err )
156
+ require .Equal (t , senderBalance , uint64 (0 ))
157
+ },
158
+ ExpectedOutputs : & TransferResult {
159
+ SenderBalance : 0 ,
160
+ ReceiverBalance : 1 ,
161
+ },
162
+ },
163
+ {
164
+ Name : "TransferToAlice" ,
165
+ Actor : addrBob ,
166
+ Action : & Transfer {
167
+ To : addrAlice ,
168
+ Value : 1 ,
169
+ },
170
+ State : store ,
171
+ Assertion : func (ctx context.Context , t * testing.T , store state.Mutable ) {
172
+ receiverBalance , err := storage .GetBalance (ctx , store , addrAlice )
173
+ require .NoError (t , err )
174
+ require .Equal (t , receiverBalance , uint64 (1 ))
175
+ senderBalance , err := storage .GetBalance (ctx , store , addrBob )
176
+ require .NoError (t , err )
177
+ require .Equal (t , senderBalance , uint64 (0 ))
178
+ },
179
+ ExpectedOutputs : & TransferResult {
180
+ SenderBalance : 0 ,
181
+ ReceiverBalance : 1 ,
182
+ },
183
+ },
184
+ }
185
+
186
+ for _ , tt := range tests {
187
+ tt .Run (context .Background (), t )
188
+ }
189
+ }
190
+
133
191
func BenchmarkSimpleTransfer (b * testing.B ) {
134
192
setupRequire := require .New (b )
135
193
to := codec .CreateAddress (0 , ids .GenerateTestID ())
0 commit comments