11#[ cfg( test) ]
22mod test {
33 use super :: * ;
4- use alloy_primitives:: address;
4+ use crate :: PythReceiver ;
5+ use alloy_primitives:: { address, U256 } ;
56 use stylus_sdk:: testing:: * ;
67
78 #[ test]
@@ -12,6 +13,40 @@ mod test {
1213 let mut contract = PythReceiver :: from ( & vm) ;
1314
1415 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
1529
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
1651 }
17- }
52+ }
0 commit comments