starknet_api 0.18.0-rc.0

Starknet Rust types related to computation and execution.
Documentation
use starknet_types_core::felt::Felt;
use starknet_types_core::hash::Poseidon;

use super::{calculate_event_commitment, calculate_event_hash, EventLeafElement};
use crate::core::EventCommitment;
use crate::transaction::{Event, EventContent, EventData, EventKey};
use crate::{contract_address, felt, tx_hash};

#[test]
fn test_event_commitment_regression() {
    let event_leaf_elements =
        [get_event_leaf_element(0), get_event_leaf_element(1), get_event_leaf_element(2)];

    let expected_root = felt!("0x069bb140ddbbeb01d81c7201ecfb933031306e45dab9c77ff9f9ba3cd4c2b9c3");

    assert_eq!(
        EventCommitment(expected_root),
        calculate_event_commitment::<Poseidon>(&event_leaf_elements),
    );
}

#[test]
fn test_event_hash_regression() {
    let event_leaf_element = get_event_leaf_element(2);

    let expected_hash = felt!("0x367807f532742a4dcbe2d8a47b974b22dd7496faa75edc64a3a5fdb6709057");

    assert_eq!(expected_hash, calculate_event_hash(&event_leaf_element));
}

fn get_event_leaf_element(seed: u8) -> EventLeafElement {
    EventLeafElement {
        event: Event {
            from_address: contract_address!(format!("{:x}", seed + 8).as_str()),
            content: EventContent {
                keys: [seed, seed + 1].iter().map(|key| EventKey(Felt::from(*key))).collect(),
                data: EventData(
                    [seed + 2, seed + 3, seed + 4].into_iter().map(Felt::from).collect(),
                ),
            },
        },
        transaction_hash: tx_hash!(0x1234),
    }
}