@@ -4,9 +4,9 @@ use rand_chacha::ChaCha8Rng;
4
4
use clvm_traits:: { clvm_curried_args, ToClvm } ;
5
5
use clvm_utils:: CurriedProgram ;
6
6
7
- use clvm_tools_rs:: classic:: clvm_tools:: binutils:: assemble;
7
+ use clvm_tools_rs:: classic:: clvm_tools:: binutils:: { assemble, disassemble } ;
8
8
9
- use crate :: common:: types:: { GameID , Timeout , Amount , PuzzleHash , PrivateKey , AllocEncoder , Sha256tree , Node } ;
9
+ use crate :: common:: types:: { GameID , Timeout , Amount , PuzzleHash , PrivateKey , AllocEncoder , Sha256tree , Node , Aggsig , Error } ;
10
10
use crate :: common:: standard_coin:: read_hex_puzzle;
11
11
use crate :: channel_handler:: game_handler:: GameHandler ;
12
12
use crate :: channel_handler:: types:: { GameStartInfo , ReadableMove } ;
@@ -21,14 +21,15 @@ fn make_debug_game_handler(
21
21
"resources/debug_game_handler.hex"
22
22
) . expect ( "should be readable" ) ;
23
23
let game_handler_mod_hash = debug_game_handler. sha256tree ( allocator) ;
24
+ let aggsig = Aggsig :: default ( ) ;
24
25
let curried_game_handler = CurriedProgram {
25
26
program : debug_game_handler. clone ( ) ,
26
27
args : clvm_curried_args ! (
27
28
game_handler_mod_hash,
28
29
debug_game_handler,
29
30
amount. clone( ) ,
30
31
true ,
31
- ( ( ) , ( ) ) // slash info
32
+ ( ( ) , ( aggsig , ( ) ) ) // slash info
32
33
)
33
34
} ;
34
35
GameHandler :: my_driver_from_nodeptr ( curried_game_handler. to_clvm ( allocator) . expect ( "should curry" ) )
@@ -84,4 +85,28 @@ fn test_referee_smoke() {
84
85
& ReadableMove :: from_nodeptr ( readable_move)
85
86
) . expect ( "should move" ) ;
86
87
assert_eq ! ( my_move_result. move_made, & [ 0 ] ) ;
88
+ let mut off_chain_slash_gives_error = referee. clone ( ) ;
89
+ let their_move_result = off_chain_slash_gives_error. their_turn_move_off_chain (
90
+ & mut allocator,
91
+ & [ 1 ] ,
92
+ & my_move_result. validation_info_hash ,
93
+ 100 ,
94
+ & Amount :: default ( )
95
+ ) ;
96
+ if let Err ( Error :: StrErr ( s) ) = their_move_result {
97
+ assert ! ( s. contains( "slash" ) ) ;
98
+ assert ! ( s. contains( "off chain" ) ) ;
99
+ } else {
100
+ assert ! ( false ) ;
101
+ }
102
+
103
+ let their_move_result = referee. their_turn_move_off_chain (
104
+ & mut allocator,
105
+ & [ 0 ] ,
106
+ & my_move_result. validation_info_hash ,
107
+ 100 ,
108
+ & Amount :: default ( )
109
+ ) . expect ( "should run" ) ;
110
+ assert_eq ! ( their_move_result. message, b"message data" ) ;
111
+ assert_eq ! ( disassemble( allocator. allocator( ) , their_move_result. readable_move, None ) , "(())" ) ;
87
112
}
0 commit comments