mirror of
https://github.com/logos-blockchain/lssa.git
synced 2026-01-04 06:13:10 +00:00
add test
This commit is contained in:
parent
aba8f3549f
commit
ae9963aec3
1
Cargo.lock
generated
1
Cargo.lock
generated
@ -2987,7 +2987,6 @@ dependencies = [
|
|||||||
"hex",
|
"hex",
|
||||||
"k256",
|
"k256",
|
||||||
"log",
|
"log",
|
||||||
"nssa",
|
|
||||||
"rand 0.8.5",
|
"rand 0.8.5",
|
||||||
"reqwest 0.11.27",
|
"reqwest 0.11.27",
|
||||||
"risc0-zkvm 2.3.1 (git+https://github.com/risc0/risc0.git?branch=release-2.3)",
|
"risc0-zkvm 2.3.1 (git+https://github.com/risc0/risc0.git?branch=release-2.3)",
|
||||||
|
|||||||
@ -121,49 +121,85 @@ impl V01State {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use crate::{
|
use crate::{public_transaction, signature::PrivateKey};
|
||||||
public_transaction::{self, WitnessSet},
|
|
||||||
signature::PrivateKey,
|
|
||||||
};
|
|
||||||
|
|
||||||
fn genesis_state_for_tests() -> (V01State, Address) {
|
fn genesis_state_for_tests(balances: &[u128], addresses: &[Address]) -> V01State {
|
||||||
let account_1 = {
|
assert_eq!(balances.len(), addresses.len());
|
||||||
let mut this = Account::default();
|
let accounts: Vec<Account> = balances
|
||||||
this.program_owner = AuthenticatedTransferProgram::PROGRAM_ID;
|
.iter()
|
||||||
this.balance = 100;
|
.map(|balance| {
|
||||||
this
|
let mut account = Account::default();
|
||||||
};
|
account.balance = *balance;
|
||||||
let address_1 = Address::new([1; 32]);
|
account.program_owner = AuthenticatedTransferProgram::PROGRAM_ID;
|
||||||
let public_state = [(address_1.clone(), account_1)].into_iter().collect();
|
account
|
||||||
(V01State { public_state }, address_1)
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
let public_state = addresses
|
||||||
|
.to_owned()
|
||||||
|
.into_iter()
|
||||||
|
.zip(accounts.into_iter())
|
||||||
|
.collect();
|
||||||
|
V01State { public_state }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn transfer_transaction_for_tests(
|
fn transfer_transaction_for_tests(
|
||||||
from: Address,
|
from: Address,
|
||||||
from_key: PrivateKey,
|
from_key: PrivateKey,
|
||||||
|
nonce: u128,
|
||||||
to: Address,
|
to: Address,
|
||||||
balance: u128,
|
balance: u128,
|
||||||
) -> PublicTransaction {
|
) -> PublicTransaction {
|
||||||
let addresses = vec![from, to];
|
let addresses = vec![from, to];
|
||||||
let nonces = vec![0];
|
let nonces = vec![nonce];
|
||||||
let program_id = AuthenticatedTransferProgram::PROGRAM_ID;
|
let program_id = AuthenticatedTransferProgram::PROGRAM_ID;
|
||||||
let message = public_transaction::Message::new(program_id, addresses, nonces, balance);
|
let message = public_transaction::Message::new(program_id, addresses, nonces, balance);
|
||||||
let witness_set = WitnessSet::for_message(&message, &[from_key]);
|
let witness_set = public_transaction::WitnessSet::for_message(&message, &[from_key]);
|
||||||
PublicTransaction::new(message, witness_set)
|
PublicTransaction::new(message, witness_set)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_1() {
|
fn test_1() {
|
||||||
let (mut genesis_state, address) = genesis_state_for_tests();
|
let addresses = [Address::new([1; 32])];
|
||||||
let from = address;
|
let balances = [100];
|
||||||
|
let mut genesis_state = genesis_state_for_tests(&balances, &addresses);
|
||||||
|
let from = addresses[0].clone();
|
||||||
let from_key = PrivateKey(1);
|
let from_key = PrivateKey(1);
|
||||||
let to = Address::new([2; 32]);
|
let to = Address::new([2; 32]);
|
||||||
let balance_to_move = 5;
|
let balance_to_move = 5;
|
||||||
let tx = transfer_transaction_for_tests(from, from_key, to.clone(), 5);
|
let tx =
|
||||||
|
transfer_transaction_for_tests(from.clone(), from_key, 0, to.clone(), balance_to_move);
|
||||||
let _ = genesis_state.transition_from_public_transaction(tx);
|
let _ = genesis_state.transition_from_public_transaction(tx);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
genesis_state.get_account_by_address(&to).balance,
|
genesis_state.get_account_by_address(&to).balance,
|
||||||
balance_to_move
|
balance_to_move
|
||||||
);
|
);
|
||||||
|
assert_eq!(
|
||||||
|
genesis_state.get_account_by_address(&from).balance,
|
||||||
|
balances[0] - balance_to_move
|
||||||
|
);
|
||||||
|
assert_eq!(genesis_state.get_account_by_address(&from).nonce, 1);
|
||||||
|
assert_eq!(genesis_state.get_account_by_address(&to).nonce, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_2() {
|
||||||
|
let addresses = [Address::new([1; 32]), Address::new([99; 32])];
|
||||||
|
let balances = [100, 200];
|
||||||
|
let mut genesis_state = genesis_state_for_tests(&balances, &addresses);
|
||||||
|
let from = addresses[1].clone();
|
||||||
|
let from_key = PrivateKey(99);
|
||||||
|
let to = addresses[0].clone();
|
||||||
|
let balance_to_move = 8;
|
||||||
|
let to_previous_balance = genesis_state.get_account_by_address(&to).balance;
|
||||||
|
let tx = transfer_transaction_for_tests(from.clone(), from_key, 0, to.clone(), balance_to_move);
|
||||||
|
let _ = genesis_state.transition_from_public_transaction(tx);
|
||||||
|
assert_eq!(genesis_state.get_account_by_address(&to).balance, 108);
|
||||||
|
assert_eq!(
|
||||||
|
genesis_state.get_account_by_address(&from).balance,
|
||||||
|
balances[1] - balance_to_move
|
||||||
|
);
|
||||||
|
assert_eq!(genesis_state.get_account_by_address(&from).nonce, 1);
|
||||||
|
assert_eq!(genesis_state.get_account_by_address(&to).nonce, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user