add Account::new_data (#4701)

* add account_new_data

* fixup

* fixup
This commit is contained in:
Rob Walker
2019-06-17 15:58:05 -07:00
committed by GitHub
parent fe04fb4cd3
commit d86358eedc
4 changed files with 40 additions and 17 deletions

View File

@ -46,6 +46,20 @@ impl Account {
}
}
pub fn new_data<T: serde::Serialize>(
lamports: u64,
state: &T,
owner: &Pubkey,
) -> Result<Account, bincode::Error> {
let data = bincode::serialize(state)?;
Ok(Account {
lamports,
data,
owner: *owner,
executable: false,
})
}
pub fn deserialize_data<T: serde::de::DeserializeOwned>(&self) -> Result<T, bincode::Error> {
bincode::deserialize(&self.data)
}

View File

@ -32,8 +32,17 @@ impl Current {
}
}
pub fn create_account(lamports: u64) -> Account {
Account::new(lamports, Current::size_of(), &syscall::id())
pub fn create_account(lamports: u64, slot: u64, epoch: u64, stakers_epoch: u64) -> Account {
Account::new_data(
lamports,
&Current {
slot,
epoch,
stakers_epoch,
},
&syscall::id(),
)
.unwrap()
}
#[cfg(test)]
@ -42,7 +51,7 @@ mod tests {
#[test]
fn test_create_account() {
let account = create_account(1);
let account = create_account(1, 0, 0, 0);
let current = Current::from(&account).unwrap();
assert_eq!(current, Current::default());
}