1
1
#[ cfg( test) ]
2
2
mod test {
3
3
use super :: * ;
4
- use alloy_primitives:: address;
4
+ use crate :: PythReceiver ;
5
+ use alloy_primitives:: { address, U256 } ;
5
6
use stylus_sdk:: testing:: * ;
6
7
7
8
#[ test]
@@ -12,6 +13,40 @@ mod test {
12
13
let mut contract = PythReceiver :: from ( & vm) ;
13
14
14
15
let wormhole_address = address ! ( "0x3F38404A2e3Cb949bcDfA19a5C3bDf3fE375fEb0" ) ;
16
+ let single_update_fee = U256 :: from ( 100u64 ) ;
17
+ let valid_time_period = U256 :: from ( 3600u64 ) ; // 1 hour
18
+
19
+ let data_source_chain_ids = vec ! [ 1u16 , 2u16 ] ; // Ethereum and other chain
20
+ let data_source_emitter_addresses = vec ! [
21
+ [ 1u8 ; 32 ] , // First emitter address
22
+ [ 2u8 ; 32 ] , // Second emitter address
23
+ ] ;
24
+
25
+ let governance_chain_id = 1u16 ;
26
+ let governance_emitter_address = [ 3u8 ; 32 ] ;
27
+ let governance_initial_sequence = 0u64 ;
28
+ let data = vec ! [ ] ; // Empty data for this test
15
29
30
+ contract. initialize (
31
+ wormhole_address,
32
+ single_update_fee,
33
+ valid_time_period,
34
+ data_source_chain_ids. clone ( ) ,
35
+ data_source_emitter_addresses. clone ( ) ,
36
+ governance_chain_id,
37
+ governance_emitter_address,
38
+ governance_initial_sequence,
39
+ data,
40
+ ) ;
41
+
42
+ let fee = contract. get_update_fee ( vec ! [ ] ) ;
43
+ assert_eq ! ( fee, U256 :: from( 0u8 ) ) ; // Should return 0 as per implementation
44
+
45
+ let twap_fee = contract. get_twap_update_fee ( vec ! [ ] ) ;
46
+ assert_eq ! ( twap_fee, U256 :: from( 0u8 ) ) ; // Should return 0 as per implementation
47
+
48
+ let test_price_id = [ 0u8 ; 32 ] ;
49
+ let price_result = contract. get_price_unsafe ( test_price_id) ;
50
+ assert ! ( price_result. is_err( ) ) ; // Should return error for non-existent price
16
51
}
17
- }
52
+ }
0 commit comments