use alloc::vec::Vec;
use crate::Word;
use crate::assembly::Assembler;
use crate::asset::FungibleAsset;
use crate::note::{
Note,
NoteAssets,
NoteMetadata,
NoteRecipient,
NoteScript,
NoteStorage,
NoteTag,
NoteType,
};
use crate::testing::account_id::ACCOUNT_ID_SENDER;
pub const DEFAULT_NOTE_SCRIPT: &str = "\
@note_script
pub proc main
nop
end";
impl Note {
pub fn mock_noop(serial_num: Word) -> Note {
let sender_id = ACCOUNT_ID_SENDER.try_into().unwrap();
let note_script = NoteScript::mock();
let assets =
NoteAssets::new(vec![FungibleAsset::mock(200)]).expect("note assets should be valid");
let metadata = NoteMetadata::new(sender_id, NoteType::Private)
.with_tag(NoteTag::with_account_target(sender_id));
let inputs = NoteStorage::new(Vec::new()).unwrap();
let recipient = NoteRecipient::new(serial_num, note_script, inputs);
Note::new(assets, metadata, recipient)
}
}
impl NoteScript {
pub fn mock() -> Self {
let assembler = Assembler::default();
let library = assembler.assemble_library([DEFAULT_NOTE_SCRIPT]).unwrap();
Self::from_library(&library).unwrap()
}
}